From 199861555473ab50f2fafa3d58e42e64e838c039 Mon Sep 17 00:00:00 2001
From: luofl <1442745593@qq.com>
Date: 星期一, 24 二月 2025 22:47:18 +0800
Subject: [PATCH] 修改物流信息导入模板

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java                    |   38 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordCopyService.java               |    8 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java                       |  330 +++++++++++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java                                           |   10 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java                           |   20 +
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecordCopy.java                    |   96 ++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java                                |    4 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPointCopy.java                                 |  120 ++++++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopPointClient.java                          |   12 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordCopyServiceImpl.java      |   11 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java                               |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java                            |   17 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java                       |   17 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementCopyMapper.java                    |   17 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java                                    |   10 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/BalanceChangeRecordClientFallbackFactory.java |   11 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java                       |    4 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java    |   11 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java                      |    8 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java                |   16 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointCopyMapper.java                           |    7 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WalletServiceImpl.java                       |   37 +
 ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/BalanceChangeRecordCopyMapper.xml                        |    0 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java               |    8 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserPointCopy.java                              |  102 +++++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java                 |   11 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java                     |   10 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java                  |    2 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatementCopy.java                      |  109 +++++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopPointClientFallbackFactory.java               |   11 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopPointCopyMapper.java                               |    7 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java                          |   17 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java                         |    1 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/BalanceChangeRecordClient.java            |    9 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderGoodController.java                           |    8 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordCopyController.java         |   35 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/BalanceChangeRecordCopyMapper.java                 |    7 
 37 files changed, 1,073 insertions(+), 71 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/BalanceChangeRecordClientFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/BalanceChangeRecordClientFallbackFactory.java
index 7471ade..aa093ff 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/BalanceChangeRecordClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/BalanceChangeRecordClientFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient;
 import com.ruoyi.account.api.model.BalanceChangeRecord;
+import com.ruoyi.account.api.model.BalanceChangeRecordCopy;
 import com.ruoyi.common.core.domain.R;
 import org.springframework.cloud.openfeign.FallbackFactory;
 
@@ -18,6 +19,16 @@
 			public R saveBalanceChangeRecord(BalanceChangeRecord balanceChangeRecord) {
 				return R.fail("保存账户流水记录失败:" + cause.getMessage());
 			}
+
+			@Override
+			public R saveBalanceChangeRecord(BalanceChangeRecordCopy balanceChangeRecord) {
+				return null;
+			}
+
+			@Override
+			public R deleteBalanceChangeRecord(Long OrderId) {
+				return null;
+			}
 		};
 	}
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java
index e13408d..3c28534 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.account.api.feignClient.UserPointClient;
 import com.ruoyi.account.api.model.UserPoint;
+import com.ruoyi.account.api.model.UserPointCopy;
 import com.ruoyi.common.core.domain.R;
 import org.springframework.cloud.openfeign.FallbackFactory;
 
@@ -21,6 +22,16 @@
 			}
 
 			@Override
+			public R saveUserPoint(UserPointCopy userPoint) {
+				return R.fail("保存积分流水记录失败:" + cause.getMessage());
+			}
+
+			@Override
+			public R deleteUserPointCopy(Long id) {
+				return R.fail("删除积分流水记录失败:" + cause.getMessage());
+			}
+
+			@Override
 			public R<List<UserPoint>> getUserPointList(UserPoint userPoint) {
 				return R.fail("获取积分变动明细失败:" + cause.getMessage());
 			}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/BalanceChangeRecordClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/BalanceChangeRecordClient.java
index 3722e49..c8ccb4f 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/BalanceChangeRecordClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/BalanceChangeRecordClient.java
@@ -2,11 +2,14 @@
 
 import com.ruoyi.account.api.factory.BalanceChangeRecordClientFallbackFactory;
 import com.ruoyi.account.api.model.BalanceChangeRecord;
+import com.ruoyi.account.api.model.BalanceChangeRecordCopy;
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * @author zhibing.pu
@@ -23,4 +26,10 @@
 	 */
 	@PostMapping("/balanceChangeRecord/saveBalanceChangeRecord")
 	R saveBalanceChangeRecord(@RequestBody BalanceChangeRecord balanceChangeRecord);
+
+	@PostMapping("/balanceChangeRecordCopy/saveBalanceChangeRecordCopy")
+	R saveBalanceChangeRecord(@RequestBody BalanceChangeRecordCopy balanceChangeRecord);
+
+	@DeleteMapping("/balanceChangeRecordCopy/deleteBalanceChangeRecord")
+	R deleteBalanceChangeRecord(@RequestParam("orderId") Long orderId);
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java
index abbd452..a3579fe 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java
@@ -2,9 +2,11 @@
 
 import com.ruoyi.account.api.factory.UserPointFallbackFactory;
 import com.ruoyi.account.api.model.UserPoint;
+import com.ruoyi.account.api.model.UserPointCopy;
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -26,6 +28,12 @@
 	@PostMapping("/user-point/saveUserPoint")
 	R saveUserPoint(@RequestBody UserPoint userPoint);
 
+	@PostMapping("/user-point/saveUserPointCopy")
+	R saveUserPoint(@RequestBody UserPointCopy userPoint);
+
+	@DeleteMapping("/user-point/deleteUserPointCopy")
+	R deleteUserPointCopy(@RequestParam("orderId") Long orderId);
+
 
 	/**
 	 * 获取积分变动明细
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
index 047f945..b9f7026 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
@@ -100,6 +100,8 @@
     @ApiModelProperty(value = "指导老师")
     @TableField(exist = false)
     private String teacher;
+    @TableField(exist = false)
+    private String teacherPhone;
 
     @ApiModelProperty(value = "绑定门店id")
     @TableField("shop_id")
@@ -174,6 +176,14 @@
     @TableField("total_distribution_amount")
     private BigDecimal totalDistributionAmount;
 
+    @ApiModelProperty(value = "冻结分佣金额")
+    @TableField("freeze_commission_amount")
+    private BigDecimal freezeCommissionAmount;
+
+    @ApiModelProperty(value = "冻结分佣积分")
+    @TableField("freeze_commission_point")
+    private Integer freezeCommissionPoint;
+
     @ApiModelProperty(value = "拉新人积分总数")
     @TableField("total_invite_point")
     private Integer totalInvitePoint;
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecordCopy.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecordCopy.java
new file mode 100644
index 0000000..304cacd
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecordCopy.java
@@ -0,0 +1,96 @@
+package com.ruoyi.account.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_balance_change_record_copy")
+@ApiModel(value = "变更记录对象", description = "")
+public class BalanceChangeRecordCopy implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    @TableId
+    private Long id;
+
+    @ApiModelProperty("用户id")
+    private Long appUserId;
+
+    @ApiModelProperty("vip等级id")
+    private Integer vipId;
+
+    @ApiModelProperty("订单id")
+    private Long orderId;
+
+    @ApiModelProperty("类型:1充值2提现3红包4分佣5商城购物6订单取消回退")
+    @Excel(name = "变更类型", readConverterExp = "1=充值,2=提现,3=红包,4=分佣,5=商城购物,6=订单取消回退")
+    private Integer changeType;
+
+    @ApiModelProperty("变更前金额")
+    private BigDecimal beforeAmount;
+
+    @ApiModelProperty("变更金额")
+    private BigDecimal changeAmount;
+    @ApiModelProperty("变更金额-带人民币符号")
+    @Excel(name = "变更数量")
+    @TableField(exist = false)
+    private String changeAmountString;
+
+    @ApiModelProperty("变更后金额")
+    private BigDecimal afterAmount;
+
+    @ApiModelProperty("删除(0=否,1=是")
+    private Integer delFlag;
+
+    @ApiModelProperty("添加时间")
+    @Excel(name = "变更时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @TableField(exist = false)
+    @ApiModelProperty("消费用户名称")
+    @Excel(name = "用户名称")
+    private String userName;
+
+    @TableField(exist = false)
+    @ApiModelProperty("消费用户手机号")
+    @Excel(name = "联系电话")
+    private String userPhone;
+
+    @TableField(exist = false)
+    @ApiModelProperty("消费金额")
+    private BigDecimal amount;
+
+    @ApiModelProperty(value = "开始时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+
+    @ApiModelProperty(value = "门店名称")
+    @TableField(exist = false)
+    private String shopName;
+
+    @ApiModelProperty(value = "增或减标识: 1-增 2-减")
+    @TableField(exist = false)
+    private Integer flag;
+
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserPointCopy.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserPointCopy.java
new file mode 100644
index 0000000..751c8ea
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserPointCopy.java
@@ -0,0 +1,102 @@
+package com.ruoyi.account.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_user_point_copy")
+@ApiModel(value="UserPoint对象", description="")
+public class UserPointCopy implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId("id")
+    private Long id;
+
+    @ApiModelProperty(value = "变动类型(1-消费,2-返佣,3-拉新,4-每日分享,5-每日签到,6-使用时长, 7-注册积分, 8-门店业绩," +
+            "9-门店返佣,14-下级门店返佣,10-技师业绩,11-兑换商品,12-他人赠送,13-赠与他人,15-兑换券)")
+    @TableField("type")
+    private Integer type;
+
+    @ApiModelProperty(value = "历史余额")
+    @TableField("historical_point")
+    private Integer historicalPoint;
+
+    @ApiModelProperty(value = "变动金额")
+    @TableField("variable_point")
+    private Integer variablePoint;
+
+    @ApiModelProperty(value = "变动后余额")
+    @TableField("balance")
+    private Integer balance;
+
+    @ApiModelProperty(value = "变动时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "变动用户id")
+    @TableField("app_user_id")
+    private Long appUserId;
+
+    @ApiModelProperty(value = "关联对象id")
+    @TableField("object_id")
+    private Long objectId;
+
+    @ApiModelProperty(value = "拓展字段")
+    @TableField("extention")
+    private String extention;
+
+    @ApiModelProperty(value = "用户名称")
+    @TableField(exist = false)
+    private String userName;
+    @ApiModelProperty(value = "变动类型 0未变化1增加2减少")
+    @TableField(exist = false)
+    private Integer variableType;
+
+    @ApiModelProperty(value = "联系电话")
+    @TableField(exist = false)
+    private String phone;
+
+
+    @ApiModelProperty(value = "开始时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+
+    @TableField(exist = false)
+    private List<Long> userIds;
+    @TableField(exist = false)
+    private Integer pageNum;
+    @TableField(exist = false)
+    private Integer pageSize;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java
index 2488d5c..77de313 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java
@@ -68,7 +68,7 @@
             }
 
             @Override
-            public R<List<OrderGood>> getUnDistributedOrder(Long appUserId) {
+            public R<List<OrderGood>> getUnDistributedOrder(List<Long> appUserIds) {
                 return R.fail("获取未分配订单失败");
             }
         };
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java
index 420ead0..f43c09e 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java
@@ -65,7 +65,7 @@
     R<Order> getLastOrder(@RequestParam("appUserId") Long appUserId);
 
 
-    @GetMapping("/order-good/getUnDistributedOrder")
-    R<List<OrderGood>> getUnDistributedOrder(Long appUserId);
+    @PostMapping("/order-good/getUnDistributedOrder")
+    R<List<OrderGood>> getUnDistributedOrder(@RequestBody List<Long> appUserIds);
 
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatementCopy.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatementCopy.java
new file mode 100644
index 0000000..f8eb465
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatementCopy.java
@@ -0,0 +1,109 @@
+package com.ruoyi.other.api.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-11-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_shop_balance_statement_copy")
+@ApiModel(value="ShopBalanceStatement对象", description="")
+public class ShopBalanceStatementCopy implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId("id")
+    private Long id;
+
+    @ApiModelProperty(value = "门店id")
+    @TableField("shop_id")
+    private Integer shopId;
+    @ApiModelProperty(value = "门店名称")
+    @TableField(exist = false)
+    @Excel(name = "门店名称")
+    private String shopName;
+    @ApiModelProperty(value = "店长名称")
+    @TableField(exist = false)
+    @Excel(name = "店长姓名")
+    private String shopManagerName;
+    @ApiModelProperty(value = "联系电话")
+    @TableField(exist = false)
+    @Excel(name = "联系电话")
+    private String phone;
+    @ApiModelProperty(value = "变动类型(1=绑定门店分佣,2=下级门店分佣,3=核销门店服务费,4=提现)")
+    @TableField("type")
+    @Excel(name = "变更类型",readConverterExp = "1=绑定门店分佣,2=下级门店分佣,3=核销门店服务费,4=提现")
+    private Integer type;
+
+    @ApiModelProperty(value = "历史余额")
+    @TableField("historical_balance")
+    private BigDecimal historicalBalance;
+
+    @ApiModelProperty(value = "变动金额")
+    @TableField("variable_amount")
+    private BigDecimal variableAmount;
+    @ApiModelProperty(value = "变动时间")
+    @TableField("create_time")
+    @Excel(name = "变更时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+    @ApiModelProperty(value = "变动金额")
+    @TableField(exist = false)
+    @Excel(name = "变更数量")
+    private String variableAmountString;
+
+    @ApiModelProperty(value = "变动后余额")
+    @TableField("balance")
+    private BigDecimal balance;
+
+
+
+    @ApiModelProperty(value = "变动用户id")
+    @TableField("create_user_id")
+    private Long createUserId;
+
+    @ApiModelProperty(value = "关联对象id")
+    @TableField("object_id")
+    private Long objectId;
+
+
+
+
+
+
+
+    @ApiModelProperty(value = "开始时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String endTime;
+    
+    @ApiModelProperty(value = "扩展字段")
+    @TableField("extension")
+    private String extension;
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPointCopy.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPointCopy.java
new file mode 100644
index 0000000..02c4398
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPointCopy.java
@@ -0,0 +1,120 @@
+package com.ruoyi.other.api.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-11-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_shop_point")
+@ApiModel(value="ShopPoint对象", description="")
+public class ShopPointCopy implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId("id")
+    private Long id;
+
+    @ApiModelProperty(value = "门店id")
+    @TableField("shop_id")
+    private Integer shopId;
+    @ApiModelProperty(value = "门店名称")
+    @TableField(exist = false)
+    @Excel(name = "门店名称")
+    private String shopName;
+
+    @ApiModelProperty(value = "店长姓名")
+    @TableField(exist = false)
+    @Excel(name = "店长姓名")
+    private String shopLeaderName;
+    @ApiModelProperty(value = "联系电话")
+    @TableField(exist = false)
+    @Excel(name = "联系电话")
+    private String phone;
+    @ApiModelProperty(value = "变动类型(1=门店业绩,2=门店返佣,3=下级门店返佣)")
+    @TableField("type")
+    @Excel(name = "变动类型", readConverterExp = "1=门店服务返佣,2=门店返佣,3=下级门店返佣")
+    private Integer type;
+    @ApiModelProperty(value = "变动时间")
+    @TableField("create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "变动时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "历史余额")
+    @TableField("historical_point")
+    private Integer historicalPoint;
+
+    @ApiModelProperty(value = "变动金额")
+    @TableField("variable_point")
+    @Excel(name = "变动金额")
+    private Integer variablePoint;
+    
+    @ApiModelProperty(value = "变动后余额")
+    @TableField("balance")
+    private Integer balance;
+
+
+
+    @ApiModelProperty(value = "变动用户id")
+    @TableField("create_user_id")
+    private Long createUserId;
+
+    @ApiModelProperty(value = "关联对象id")
+    @TableField("object_id")
+    private Long objectId;
+
+    @ApiModelProperty(value = "订单号")
+    @TableField("order_num")
+    private String orderNum;
+
+
+
+
+
+
+
+    @TableField(exist = false)
+    private List<Integer> shopIds;
+
+    @ApiModelProperty(value = "开始时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+
+    @TableField(exist = false)
+    private List<Long> userIds;
+    @TableField(exist = false)
+    private Integer pageNum;
+    @TableField(exist = false)
+    private Integer pageSize;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java
index d06d0ab..c63f046 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.ShopBalanceStatement;
+import com.ruoyi.other.api.domain.ShopBalanceStatementCopy;
 import com.ruoyi.other.api.feignClient.SeckillActivityInfoClient;
 import com.ruoyi.other.api.feignClient.ShopBalanceStatementClient;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -25,6 +26,16 @@
 			}
 
 			@Override
+			public void saveShopBalanceStatement(ShopBalanceStatementCopy shopBalanceStatement) {
+				R.fail("保存门店余额流水失败:" + cause.getMessage());
+			}
+
+			@Override
+			public R<Boolean> deleteShopBalanceStatementCopy(Long orderId) {
+				return R.fail("删除门店余额流水失败:" + cause.getMessage());
+			}
+
+			@Override
 			public R<List<ShopBalanceStatement>> getShopBalanceStatementList(Collection<Integer> types, Long objectId) {
 				return R.fail("获取门店余额流水失败:" + cause.getMessage());
 			}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopPointClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopPointClientFallbackFactory.java
index 76f91a9..1bfbfa9 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopPointClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopPointClientFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.ShopPoint;
+import com.ruoyi.other.api.domain.ShopPointCopy;
 import com.ruoyi.other.api.feignClient.ShopPointClient;
 import org.springframework.cloud.openfeign.FallbackFactory;
 
@@ -18,6 +19,16 @@
 			public void saveShopPoint(ShopPoint shopPoint) {
 				R.fail("保存门店积分流水失败:" + cause.getMessage());
 			}
+
+			@Override
+			public void saveShopPoint(ShopPointCopy shopPoint) {
+				R.fail("保存门店积分流水失败:" + cause.getMessage());
+			}
+
+			@Override
+			public void deleteShopPointCopy(Long orderId) {
+
+			}
 		};
 	}
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java
index fa69c94..7701cb7 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java
@@ -3,8 +3,10 @@
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.ShopBalanceStatement;
+import com.ruoyi.other.api.domain.ShopBalanceStatementCopy;
 import com.ruoyi.other.api.factory.ShopBalanceStatementClientFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -28,6 +30,12 @@
 	@PostMapping("/shop-balance-statement/saveShopBalanceStatement")
 	void saveShopBalanceStatement(@RequestBody ShopBalanceStatement shopBalanceStatement);
 
+	@PostMapping("/shop-balance-statement/saveShopBalanceStatementCopy")
+	void saveShopBalanceStatement(@RequestBody ShopBalanceStatementCopy shopBalanceStatement);
+
+	@DeleteMapping("/shop-balance-statement/deleteShopBalanceStatementCopy")
+	R<Boolean> deleteShopBalanceStatementCopy(@RequestParam("orderId") Long orderId);
+
 
 	/**
 	 * 获取门店余额流水
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopPointClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopPointClient.java
index 5b8488c..8f5d98f 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopPointClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopPointClient.java
@@ -2,10 +2,13 @@
 
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.other.api.domain.ShopPoint;
+import com.ruoyi.other.api.domain.ShopPointCopy;
 import com.ruoyi.other.api.factory.ShopPointClientFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * @author zhibing.pu
@@ -14,13 +17,16 @@
 @FeignClient(contextId = "ShopPointClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = ShopPointClientFallbackFactory.class)
 public interface ShopPointClient {
 	
-	
-	
-	
 	/**
 	 * 保存门店积分流水
 	 * @param shopPoint
 	 */
 	@PostMapping("/shop-point/saveShopPoint")
 	void saveShopPoint(@RequestBody ShopPoint shopPoint);
+
+	@PostMapping("/shop-point/saveShopPointCopy")
+	void saveShopPoint(@RequestBody ShopPointCopy shopPoint);
+
+	@DeleteMapping("/shop-point/deleteShopPointCopy")
+	void deleteShopPointCopy(@RequestParam("orderId") Long orderId);
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/SysRoleMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/BalanceChangeRecordCopyMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/SysRoleMapper.xml
rename to ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/BalanceChangeRecordCopyMapper.xml
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
index 05a8184..df64f87 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -297,6 +297,7 @@
                 .findFirst()
                 .ifPresent(superiors -> {
                     user.setTeacher(superiors.getName());
+                    user.setTeacherPhone(superiors.getPhone());
                 });
 
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordCopyController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordCopyController.java
new file mode 100644
index 0000000..e99dffe
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordCopyController.java
@@ -0,0 +1,35 @@
+package com.ruoyi.account.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.account.api.model.BalanceChangeRecord;
+import com.ruoyi.account.api.model.BalanceChangeRecordCopy;
+import com.ruoyi.account.service.BalanceChangeRecordCopyService;
+import com.ruoyi.common.core.domain.R;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("/balanceChangeRecordCopy")
+public class BalanceChangeRecordCopyController {
+    @Resource
+    private BalanceChangeRecordCopyService balanceChangeRecordCopyService;
+
+    /**
+     * 保存账户流水记录
+     *
+     * @return
+     */
+    @PostMapping("/saveBalanceChangeRecordCopy")
+    public R saveBalanceChangeRecordCopy(@RequestBody BalanceChangeRecordCopy balanceChangeRecordCopy) {
+        balanceChangeRecordCopyService.save(balanceChangeRecordCopy);
+        return R.ok();
+    }
+
+    @DeleteMapping("/deleteBalanceChangeRecord")
+    public R deleteBalanceChangeRecord(@RequestParam Long orderId) {
+        balanceChangeRecordCopyService.remove(new LambdaQueryWrapper<BalanceChangeRecordCopy>()
+                .eq(BalanceChangeRecordCopy::getOrderId, orderId));
+        return R.ok();
+    }
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
index 491ed1a..466c116 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
@@ -5,6 +5,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.account.api.model.UserPoint;
+import com.ruoyi.account.api.model.UserPointCopy;
+import com.ruoyi.account.mapper.UserPointCopyMapper;
 import com.ruoyi.account.service.AppUserService;
 import com.ruoyi.account.service.UserPointService;
 import com.ruoyi.account.vo.TransferPoint;
@@ -49,6 +51,8 @@
 public class UserPointController extends BaseController {
     @Resource
     private UserPointService userPointService;
+    @Resource
+    private UserPointCopyMapper userPointCopyMapper;
     @Resource
     private AppUserService appUserService;
     @Resource
@@ -113,6 +117,19 @@
         return R.ok();
     }
 
+    @PostMapping("/saveUserPointCopy")
+    public R saveUserPointCopy(@RequestBody UserPointCopy userPointCopy) {
+        userPointCopyMapper.insert(userPointCopy);
+        return R.ok();
+    }
+
+    @DeleteMapping("/deleteUserPointCopy")
+    public R deleteUserPointCopy(@RequestParam Long orderId) {
+        userPointCopyMapper.delete(new LambdaQueryWrapper<UserPointCopy>()
+                .eq(UserPointCopy::getObjectId, orderId));
+        return R.ok();
+    }
+
 
     /**
      * 积分统计
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
index e35bdb6..b5aa88c 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
@@ -8,6 +8,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.account.api.model.AppUser;
 import com.ruoyi.account.api.model.BalanceChangeRecord;
+import com.ruoyi.account.api.model.BalanceChangeRecordCopy;
 import com.ruoyi.account.api.model.BalancePayment;
 import com.ruoyi.account.service.*;
 import com.ruoyi.account.util.payment.PaymentUtil;
@@ -47,6 +48,8 @@
     @Resource
     private BalanceChangeRecordService balanceChangeRecordService;
     @Resource
+    private BalanceChangeRecordCopyService balanceChangeRecordCopyService;
+    @Resource
     private TokenService tokenService;
     @Resource
     private WalletService walletService;
@@ -83,7 +86,7 @@
      */
     @ApiOperation(value = "变更明细", notes = "变更明细")
     @GetMapping("change")
-    public R<IPage<BalanceChangeRecord>> change(@ApiParam(value = "变更类型")
+    public R<IPage<BalanceChangeRecordCopy>> change(@ApiParam(value = "变更类型")
                                                @RequestParam(required = false) Integer changeType,
                                                 Integer pageCurr,
                                                 Integer pageSize,
@@ -107,14 +110,14 @@
             endTime = lastDayOfMonth.atTime(LocalTime.MAX);
         }
 
-        Page<BalanceChangeRecord> page = balanceChangeRecordService.page(Page.of(pageCurr, pageSize), new LambdaQueryWrapper<BalanceChangeRecord>()
-                .eq(changeType != null, BalanceChangeRecord::getChangeType, changeType)
-                .between(startTime != null, BalanceChangeRecord::getCreateTime, startTime, endTime)
-                .eq(BalanceChangeRecord::getAppUserId, userId).orderByDesc(BalanceChangeRecord::getCreateTime));
+        Page<BalanceChangeRecordCopy> page = balanceChangeRecordCopyService.page(Page.of(pageCurr, pageSize), new LambdaQueryWrapper<BalanceChangeRecordCopy>()
+                .eq(changeType != null, BalanceChangeRecordCopy::getChangeType, changeType)
+                .between(startTime != null, BalanceChangeRecordCopy::getCreateTime, startTime, endTime)
+                .eq(BalanceChangeRecordCopy::getAppUserId, userId).orderByDesc(BalanceChangeRecordCopy::getCreateTime));
 
-        List<BalanceChangeRecord> list = page.getRecords();
+        List<BalanceChangeRecordCopy> list = page.getRecords();
 
-        List<Long> orderIds = list.stream().map(BalanceChangeRecord::getOrderId).collect(Collectors.toList());
+        List<Long> orderIds = list.stream().map(BalanceChangeRecordCopy::getOrderId).collect(Collectors.toList());
         if (CollectionUtil.isNotEmpty(orderIds)){
             R<List<Order>> r = remoteOrderGoodsClient.getOrderListByIds(orderIds);
             if (!R.isSuccess(r)){
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/BalanceChangeRecordCopyMapper.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/BalanceChangeRecordCopyMapper.java
new file mode 100644
index 0000000..d7c56ff
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/BalanceChangeRecordCopyMapper.java
@@ -0,0 +1,7 @@
+package com.ruoyi.account.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.account.api.model.BalanceChangeRecordCopy;
+
+public interface BalanceChangeRecordCopyMapper extends BaseMapper<BalanceChangeRecordCopy> {
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointCopyMapper.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointCopyMapper.java
new file mode 100644
index 0000000..96bbc31
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointCopyMapper.java
@@ -0,0 +1,7 @@
+package com.ruoyi.account.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.account.api.model.UserPointCopy;
+
+public interface UserPointCopyMapper extends BaseMapper<UserPointCopy> {
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordCopyService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordCopyService.java
new file mode 100644
index 0000000..f0d888a
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordCopyService.java
@@ -0,0 +1,8 @@
+package com.ruoyi.account.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.account.api.model.BalanceChangeRecordCopy;
+
+public interface BalanceChangeRecordCopyService extends IService<BalanceChangeRecordCopy> {
+
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordCopyServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordCopyServiceImpl.java
new file mode 100644
index 0000000..1f07574
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordCopyServiceImpl.java
@@ -0,0 +1,11 @@
+package com.ruoyi.account.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.api.model.BalanceChangeRecordCopy;
+import com.ruoyi.account.mapper.BalanceChangeRecordCopyMapper;
+import com.ruoyi.account.service.BalanceChangeRecordCopyService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class BalanceChangeRecordCopyServiceImpl extends ServiceImpl<BalanceChangeRecordCopyMapper, BalanceChangeRecordCopy> implements BalanceChangeRecordCopyService {
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
index 6a314ce..7bc49cc 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
@@ -4,12 +4,13 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
-import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.account.api.model.BalanceChangeRecordCopy;
 import com.ruoyi.account.api.model.UserPoint;
+import com.ruoyi.account.api.model.UserPointCopy;
+import com.ruoyi.account.mapper.UserPointCopyMapper;
 import com.ruoyi.account.mapper.UserPointMapper;
 import com.ruoyi.account.service.AppUserService;
 import com.ruoyi.account.service.PointSettingService;
@@ -19,27 +20,29 @@
 import com.ruoyi.account.vo.UserPointStatistics;
 import com.ruoyi.account.vo.UserPointVO;
 import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.PhoneNumberValidator;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.feignClient.OrderClient;
 import com.ruoyi.order.feignClient.RemoteOrderGoodsClient;
+import com.ruoyi.order.model.Order;
 import com.ruoyi.order.model.OrderGood;
-import com.ruoyi.other.api.domain.PointSetting;
 import com.ruoyi.other.api.domain.VipSetting;
 import com.ruoyi.other.api.enums.PointChangeType;
 import com.ruoyi.system.api.model.LoginUser;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.Collections;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 /**
@@ -60,11 +63,9 @@
     @Resource
     private VipSettingService vipSettingService;
     @Resource
-    private PointSettingService pointSettingService;
+    private UserPointCopyMapper userPointCopyMapper;
     @Resource
     private UserPointService userPointService;
-    @Resource
-    private RemoteOrderGoodsClient remoteOrderGoodsClient;
 
 
 
@@ -74,17 +75,16 @@
         AppUser appUser = appUserService.getById(userId);
         VipSetting vipSetting = vipSettingService.getVipSettingByUserId(userId);
 
-        UserPointVO userPointVO = new UserPointVO();
-        // todo bug说取剩余积分
+        List<UserPointCopy> userPointCopies = userPointCopyMapper.selectList(new LambdaQueryWrapper<UserPointCopy>()
+                .eq(UserPointCopy::getAppUserId, userId)
+                .eq(UserPointCopy::getType, 2));
 
-        R<List<OrderGood>> unDistributedOrder = remoteOrderGoodsClient.getUnDistributedOrder(userId);
-        List<OrderGood> unDistributedOrderList = unDistributedOrder.getData();
-        Integer totalPoint = unDistributedOrderList.stream()
-                .mapToInt(OrderGood::getSuperiorRebatePoints)
+        Integer totalPoint = userPointCopies.stream()
+                .mapToInt(UserPointCopy::getVariablePoint)
                 .sum();
 
-
-        userPointVO.setTotalPoint(appUser.getLavePoint()+totalPoint);
+        UserPointVO userPointVO = new UserPointVO();
+        userPointVO.setTotalPoint(totalPoint);
         userPointVO.setConsumePoint(appUser.getAvailablePoint());
         userPointVO.setShopPoint(appUser.getShopPoint());
         userPointVO.setSharePoint(appUser.getSharePoint());
@@ -95,10 +95,12 @@
         return userPointVO;
     }
 
+
+
     @Override
     public PageInfo<UserPointDetailVO> getUserPointDetail(Long userId, LocalDateTime startTime, LocalDateTime endTime, Integer type, Integer pageCurr, Integer pageSize) {
-        PageInfo<UserPoint> pageInfo = new PageInfo<>(pageCurr, pageSize);
-        PageInfo<UserPoint> page = this.page(pageInfo, new QueryWrapper<UserPoint>()
+        PageInfo<UserPointCopy> pageInfo = new PageInfo<>(pageCurr, pageSize);
+        PageInfo<UserPointCopy> page = userPointCopyMapper.selectPage(pageInfo, new QueryWrapper<UserPointCopy>()
                 .between(startTime != null, "create_time", startTime, endTime)
                 .eq(type != null, "type", type)
                 .eq("app_user_id", userId).orderByDesc("create_time"));
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WalletServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WalletServiceImpl.java
index ca9e4de..bdcf3dd 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WalletServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WalletServiceImpl.java
@@ -1,19 +1,17 @@
 package com.ruoyi.account.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.ruoyi.order.feignClient.OrderClient;
-import com.ruoyi.order.feignClient.RemoteOrderGoodsClient;
-import com.ruoyi.order.model.Order;
-import com.ruoyi.order.model.OrderGood;
-import com.ruoyi.other.api.enums.WithdrawalAuditStatus;
 import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.account.api.model.BalanceChangeRecordCopy;
 import com.ruoyi.account.api.model.WithdrawalRequests;
 import com.ruoyi.account.service.AppUserService;
+import com.ruoyi.account.service.BalanceChangeRecordCopyService;
 import com.ruoyi.account.service.WalletService;
 import com.ruoyi.account.service.WithdrawalRequestsService;
 import com.ruoyi.account.vo.WalletVO;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.VipSetting;
+import com.ruoyi.other.api.enums.WithdrawalAuditStatus;
 import com.ruoyi.other.api.feignClient.RemoteVipSettingClient;
 import org.springframework.stereotype.Service;
 
@@ -30,7 +28,8 @@
     @Resource
     private WithdrawalRequestsService withdrawalRequestsService;
     @Resource
-    private RemoteOrderGoodsClient remoteOrderGoodsClient;
+    private BalanceChangeRecordCopyService balanceChangeRecordCopyService;
+
 
     @Override
     public WalletVO getWalletByUserId(Long userId) {
@@ -45,21 +44,25 @@
             throw new RuntimeException("会员设置信息为空");
         }
 
+        List<BalanceChangeRecordCopy> recordCopies = balanceChangeRecordCopyService.list(new LambdaQueryWrapper<BalanceChangeRecordCopy>()
+                .eq(BalanceChangeRecordCopy::getAppUserId, userId)
+                .eq(BalanceChangeRecordCopy::getChangeType, 4));
+
+        BigDecimal commissionAmount = recordCopies.stream()
+                .map(BalanceChangeRecordCopy::getChangeAmount)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+
         // 获取提现审核中的金额
         List<WithdrawalRequests> waitAuditList = withdrawalRequestsService.list(new LambdaQueryWrapper<WithdrawalRequests>()
                 .eq(WithdrawalRequests::getAppUserId, userId)
                 .eq(WithdrawalRequests::getAuditStatus, WithdrawalAuditStatus.WAIT_AUDIT.getCode()));
         BigDecimal reduce = waitAuditList.stream().map(WithdrawalRequests::getWithdrawalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+
         WalletVO walletVO = new WalletVO();
-
-
-        R<List<OrderGood>> unDistributedOrder = remoteOrderGoodsClient.getUnDistributedOrder(userId);
-        List<OrderGood> unDistributedOrderList = unDistributedOrder.getData();
-        BigDecimal commissionAmount = unDistributedOrderList.stream()
-                .map(OrderGood::getSuperiorSubcommission)
-                .reduce(BigDecimal.ZERO, BigDecimal::add);
-
-        walletVO.setCommissionAmount(appUser.getTotalDistributionAmount().add(commissionAmount));
+        BigDecimal balance = appUser.getBalance();
+        walletVO.setCommissionAmount(commissionAmount);
         walletVO.setWithdrawalAmount(appUser.getWithdrawableAmount());
         walletVO.setWithdrawnAmount(appUser.getWithdrawnAmount().subtract(reduce));
         walletVO.setVipWithdrawalMinAmount(data.getVipWithdrawalMinAmount());
@@ -67,8 +70,10 @@
         walletVO.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount());
         walletVO.setTotalDistributionAmount(appUser.getTotalDistributionAmount());
         walletVO.setAuditAmount(reduce);
-        walletVO.setBalance(appUser.getBalance());
+        walletVO.setBalance(balance);
         return walletVO;
     }
 
+
+
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
index b208c39..5de2f61 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -9,6 +9,7 @@
 import com.ruoyi.account.api.feignClient.UserAddressClient;
 import com.ruoyi.account.api.model.AppUser;
 import com.ruoyi.account.api.model.UserAddress;
+import com.ruoyi.common.core.constant.ExpressCompanyMap;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.poi.ExcelUtil;
@@ -564,7 +565,7 @@
             if (StringUtils.isNotEmpty(expressJson) && !expressJson.equals("NULL")) {
                 JSONObject jsonObject = JSONObject.parseObject(expressJson);
                 orderExport.setExpressNum(jsonObject.getString("num"));
-                orderExport.setExpressName(jsonObject.getString("com"));
+                orderExport.setExpressName(ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com")));
             }
 
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderGoodController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderGoodController.java
index 31880fc..a75d800 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderGoodController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderGoodController.java
@@ -11,6 +11,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -51,11 +52,14 @@
      * 获取指定用户未分销的订单
      */
     @PostMapping("/getUnDistributedOrder")
-    public R<List<OrderGood>> getUnDistributedOrder(Long appUserId) {
+    public R<List<OrderGood>> getUnDistributedOrder(@RequestBody List<Long> appUserIds) {
         List<Order> list = orderService.list(new LambdaQueryWrapper<Order>()
-                .eq(Order::getAppUserId, appUserId)
+                .in(Order::getAppUserId, appUserIds)
                 .eq(Order::getIsCommission, 0)
                 .eq(Order::getDelFlag, 0));
+        if(list.isEmpty()){
+            return R.ok(new ArrayList<>());
+        }
 
         List<Long> orderIds = list.stream().map(Order::getId).collect(Collectors.toList());
         List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>()
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java
index b1ae674..09e90d3 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java
@@ -1,5 +1,7 @@
 package com.ruoyi.order.service;
 
+import com.ruoyi.order.model.Order;
+
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Set;
@@ -9,5 +11,5 @@
     // 计算佣金
     void calculationCommission();
 
-    
+    void calculationCommissionCopy(Order order);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
index 86acfe2..88e630a 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
@@ -1,12 +1,8 @@
 package com.ruoyi.order.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.ruoyi.account.api.feignClient.AppUserClient;
-import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient;
-import com.ruoyi.account.api.feignClient.UserPointClient;
-import com.ruoyi.account.api.model.AppUser;
-import com.ruoyi.account.api.model.BalanceChangeRecord;
-import com.ruoyi.account.api.model.UserPoint;
+import com.ruoyi.account.api.feignClient.*;
+import com.ruoyi.account.api.model.*;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.order.service.CommissionService;
@@ -16,6 +12,7 @@
 import com.ruoyi.other.api.feignClient.*;
 import com.ruoyi.order.model.Order;
 import com.ruoyi.order.model.OrderGood;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -30,6 +27,7 @@
 import java.util.stream.Collectors;
 
 @Service
+@Slf4j
 public class CommissionServiceImpl implements CommissionService {
     @Resource
     private OrderService orderService;
@@ -63,7 +61,7 @@
         if(collect.size() == 0){
             return;
         }
-    
+
         for (Order order : list) {
             List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>()
                     .eq(OrderGood::getOrderId, order.getId()));
@@ -124,7 +122,7 @@
                         }
                     }
                 }
-                
+
                 //核销门店获取服务费
                 hxmd_price = hxmd_price.add(orderGood.getServuceShopCharges());
                 //核销门店可获得积分
@@ -259,7 +257,7 @@
                     appUserClient.vipUpgrade(superiorLeader.getId());
                 }
             }
-    
+
             //核销门店
             Shop shop = shopClient.getShopById(order.getShopId()).getData();
             AppUser shopAppUser = appUserClient.getAppUserById(shop.getAppUserId());
@@ -325,7 +323,7 @@
                     //变更等级
                     appUserClient.vipUpgrade(shopAppUser.getId());
                 }
-    
+
                 if(!shop.getLavePoint().equals(shopLavePoint)){
                     ShopPoint shopPoint = new ShopPoint();
                     shopPoint.setShopId(shop.getId());
@@ -340,7 +338,7 @@
                     shopPointClient.saveShopPoint(shopPoint);
                 }
             }
-    
+
             //技师服务积分
             if(order.getOrderType() == 1){
                 Technician technician = technicianClient.shopdetail(order.getTechnicianId()).getData();
@@ -381,10 +379,10 @@
                             appUserClient.vipUpgrade(technicianAppUser.getId());
                         }
                     }
-                    
+
                 }
             }
-            
+
             //服务商分佣
             Shop shop1 = shopClient.getServiceProvider(appUser.getId()).getData();
             if(null != shop1){
@@ -451,7 +449,7 @@
                         //变更等级
                         appUserClient.vipUpgrade(bdShopAppUser.getId());
                     }
-        
+
                     if(!shop1.getLavePoint().equals(shopLavePoint)){
                         ShopPoint shopPoint = new ShopPoint();
                         shopPoint.setShopId(shop1.getId());
@@ -467,7 +465,7 @@
                     }
                 }
             }
-    
+
             //高级服务商
             Shop shop2 = shopClient.getSuperiorServiceProvider(order.getAppUserId()).getData();
             if(null != shop2){
@@ -555,4 +553,306 @@
             orderService.updateById(order);
         }
     }
+
+    public void calculationCommissionCopy(Order order){
+        List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>()
+                .eq(OrderGood::getOrderId, order.getId()));
+        AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
+        //直推上级分佣金额
+        BigDecimal ztsj_price = BigDecimal.ZERO;
+        //直帮上级分佣金额
+        BigDecimal zbsj_price = BigDecimal.ZERO;
+        //直推上级分佣积分
+        Integer ztsj_point = 0;
+        //直帮上级分佣积分
+        Integer zbsj_point = 0;
+        //核销门店分佣金额
+        BigDecimal hxmd_price = BigDecimal.ZERO;
+        //核销门店分佣积分
+        Integer hxmd_point = 0;
+        //技师分佣积分
+        Integer js_point = 0;
+        //绑定门店分佣金额
+        BigDecimal bdmd_price = BigDecimal.ZERO;
+        //绑定门店分佣积分
+        Integer bdmd_point = 0;
+        //绑定门店上级门店分佣金额
+        BigDecimal bdmdsj_price = BigDecimal.ZERO;
+        //绑定门店上级门店分佣积分
+        Integer bdmdsj_point = 0;
+        for (OrderGood orderGood : orderGoods) {
+            //上级获得分佣金额(直推上级|直帮上级)
+            BigDecimal superiorSubcommission = orderGood.getSuperiorSubcommission();
+            //上级获得分佣积分(直推上级|直帮上级)
+            Integer superiorRebatePoints = orderGood.getSuperiorRebatePoints();
+            if(StringUtils.isNotEmpty(orderGood.getSuperiorPriceType())){
+                String[] split = orderGood.getSuperiorPriceType().split(",");
+                for (String s : split) {
+                    //直推上级
+                    if("1".equals(s)){
+                        ztsj_price = ztsj_price.add(superiorSubcommission);
+                    }
+                    //直帮上级
+                    if("2".equals(s)){
+                        zbsj_price = zbsj_price.add(superiorSubcommission);
+                    }
+                }
+            }
+            if(StringUtils.isNotEmpty(orderGood.getSuperiorType())){
+                String[] split = orderGood.getSuperiorType().split(",");
+                for (String s : split) {
+                    //直推上级
+                    if("1".equals(s)){
+                        ztsj_point += superiorRebatePoints;
+                    }
+                    //直帮上级
+                    if("2".equals(s)){
+                        zbsj_point += superiorRebatePoints;
+                    }
+                }
+            }
+
+            //核销门店获取服务费
+            hxmd_price = hxmd_price.add(orderGood.getServuceShopCharges());
+            //核销门店可获得积分
+            hxmd_point += orderGood.getServuceShopPoints();
+            //技师分佣金额
+            if(order.getOrderType() == 1){
+                js_point += orderGood.getTechnicianPoints();
+            }
+            //绑定门店分佣金额
+            bdmd_price = bdmd_price.add(orderGood.getBoundShopCharges());
+            //绑定门店分佣积分
+            bdmd_point += orderGood.getBoundShopPoints();
+            //绑定门店上级门店分佣金额
+            bdmdsj_price = bdmdsj_price.add(orderGood.getBoundShopSuperiorsCharges());
+            //绑定门店上级门店分佣积分
+            bdmdsj_point += orderGood.getBoundShopSuperiorsPoints();
+        }
+        //直推上级
+//        if(null != appUser.getInviteUserId()){
+//            AppUser inviteUser = appUserClient.getAppUserById(appUser.getInviteUserId());
+//            if(null != inviteUser){
+//                BigDecimal balance = inviteUser.getBalance();
+//                Integer lavePoint = inviteUser.getLavePoint();
+//                //添加明细记录
+//                if(!inviteUser.getBalance().equals(balance)){
+//                    BalanceChangeRecordCopy balanceChangeRecordCopy = new BalanceChangeRecordCopy();
+//                    balanceChangeRecordCopy.setAppUserId(inviteUser.getId());
+//                    balanceChangeRecordCopy.setVipId(inviteUser.getVipId());
+//                    balanceChangeRecordCopy.setOrderId(order.getId());
+//                    balanceChangeRecordCopy.setChangeType(4);
+//                    balanceChangeRecordCopy.setBeforeAmount(balance);
+//                    balanceChangeRecordCopy.setChangeAmount(ztsj_price);
+//                    balanceChangeRecordCopy.setAfterAmount(inviteUser.getBalance());
+//                    balanceChangeRecordCopy.setDelFlag(0);
+//                    balanceChangeRecordCopy.setCreateTime(LocalDateTime.now());
+//                    balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecordCopy);
+//                }
+//                //添加积分明细
+//                if(!inviteUser.getLavePoint().equals(lavePoint)){
+//
+//                    UserPointCopy userPointCopy = new UserPointCopy();
+//                    userPointCopy.setType(2);
+//                    userPointCopy.setHistoricalPoint(lavePoint);
+//                    userPointCopy.setVariablePoint(ztsj_point);
+//                    userPointCopy.setBalance(inviteUser.getLavePoint());
+//                    userPointCopy.setCreateTime(LocalDateTime.now());
+//                    userPointCopy.setAppUserId(inviteUser.getId());
+//                    userPointCopy.setObjectId(order.getId());
+//                    userPointCopy.setExtention(order.getOrderNumber());
+//                    userPointClient.saveUserPoint(userPointCopy);
+//                }
+//            }
+//        }
+
+        //指导老师
+        AppUser superiorLeader = appUserClient.getSuperiorLeader(appUser.getId()).getData();
+        if(null != superiorLeader){
+            log.info("指导老师:{}",superiorLeader);
+            BigDecimal balance = superiorLeader.getBalance();
+            Integer lavePoint = superiorLeader.getLavePoint();
+            //添加明细记录
+            BalanceChangeRecordCopy balanceChangeRecord = new BalanceChangeRecordCopy();
+            balanceChangeRecord.setAppUserId(superiorLeader.getId());
+            balanceChangeRecord.setVipId(superiorLeader.getVipId());
+            balanceChangeRecord.setOrderId(order.getId());
+            balanceChangeRecord.setChangeType(4);
+            balanceChangeRecord.setBeforeAmount(balance);
+            balanceChangeRecord.setChangeAmount(zbsj_price);
+            balanceChangeRecord.setAfterAmount(superiorLeader.getBalance());
+            balanceChangeRecord.setDelFlag(0);
+            balanceChangeRecord.setCreateTime(LocalDateTime.now());
+            balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
+            //添加积分明细
+            UserPointCopy userPointCopy = new UserPointCopy();
+            userPointCopy.setType(2);
+            userPointCopy.setHistoricalPoint(lavePoint);
+            userPointCopy.setVariablePoint(zbsj_point);
+            userPointCopy.setBalance(superiorLeader.getLavePoint());
+            userPointCopy.setCreateTime(LocalDateTime.now());
+            userPointCopy.setAppUserId(superiorLeader.getId());
+            userPointCopy.setObjectId(order.getId());
+            userPointCopy.setExtention(order.getOrderNumber());
+            userPointClient.saveUserPoint(userPointCopy);
+        }
+
+        //核销门店
+        Shop shop = shopClient.getShopById(order.getShopId()).getData();
+        AppUser shopAppUser = appUserClient.getAppUserById(shop.getAppUserId());
+        if(null != shopAppUser){
+            BigDecimal shopBalance = shop.getBalance();
+            Integer lavePoint = shopAppUser.getLavePoint();
+            Integer shopLavePoint = shop.getLavePoint();
+            //添加明细记录
+            ShopBalanceStatementCopy shopBalanceStatementCopy = new ShopBalanceStatementCopy();
+            shopBalanceStatementCopy.setShopId(shop.getId());
+            shopBalanceStatementCopy.setType(3);
+            shopBalanceStatementCopy.setHistoricalBalance(shopBalance);
+            shopBalanceStatementCopy.setVariableAmount(hxmd_price);
+            shopBalanceStatementCopy.setBalance(shop.getBalance());
+            shopBalanceStatementCopy.setCreateTime(LocalDateTime.now());
+            shopBalanceStatementCopy.setCreateUserId(order.getAppUserId());
+            shopBalanceStatementCopy.setObjectId(order.getId());
+            shopBalanceStatementCopy.setExtension(order.getOrderNumber());
+            shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatementCopy);
+            //添加积分明细
+            UserPointCopy userPointCopy = new UserPointCopy();
+            userPointCopy.setType(8);
+            userPointCopy.setHistoricalPoint(lavePoint);
+            userPointCopy.setVariablePoint(hxmd_point);
+            userPointCopy.setBalance(shopAppUser.getLavePoint());
+            userPointCopy.setCreateTime(LocalDateTime.now());
+            userPointCopy.setAppUserId(shopAppUser.getId());
+            userPointCopy.setObjectId(order.getId());
+            userPointCopy.setExtention(order.getOrderNumber());
+            userPointClient.saveUserPoint(userPointCopy);
+            ShopPointCopy shopPointCopy = new ShopPointCopy();
+            shopPointCopy.setShopId(shop.getId());
+            shopPointCopy.setType(1);
+            shopPointCopy.setHistoricalPoint(shopLavePoint);
+            shopPointCopy.setVariablePoint(hxmd_point);
+            shopPointCopy.setBalance(shop.getLavePoint());
+            shopPointCopy.setCreateTime(LocalDateTime.now());
+            shopPointCopy.setCreateUserId(order.getAppUserId());
+            shopPointCopy.setObjectId(order.getId());
+            shopPointCopy.setOrderNum(order.getOrderNumber());
+            shopPointClient.saveShopPoint(shopPointCopy);
+        }
+
+        //技师服务积分
+        if(order.getOrderType() == 1){
+            Technician technician = technicianClient.shopdetail(order.getTechnicianId()).getData();
+            if(null != technician){
+                AppUser technicianAppUser = appUserClient.getAppUserById(technician.getAppUserId());
+                if(null != technicianAppUser){
+                    Integer lavePoint = technicianAppUser.getLavePoint();
+                    //添加积分明细
+                    UserPointCopy userPointCopy = new UserPointCopy();
+                    userPointCopy.setType(10);
+                    userPointCopy.setHistoricalPoint(lavePoint);
+                    userPointCopy.setVariablePoint(js_point);
+                    userPointCopy.setBalance(technicianAppUser.getLavePoint());
+                    userPointCopy.setCreateTime(LocalDateTime.now());
+                    userPointCopy.setAppUserId(technicianAppUser.getId());
+                    userPointCopy.setObjectId(order.getId());
+                    userPointCopy.setExtention(order.getOrderNumber());
+                    userPointClient.saveUserPoint(userPointCopy);
+                }
+
+            }
+        }
+
+        //服务商分佣
+        Shop shop1 = shopClient.getServiceProvider(appUser.getId()).getData();
+        if(null != shop1){
+            AppUser bdShopAppUser = appUserClient.getAppUserById(shop1.getAppUserId());
+            if(null != bdShopAppUser){
+                BigDecimal shopBalance = shop1.getBalance();
+                Integer lavePoint = bdShopAppUser.getLavePoint();
+                Integer shopLavePoint = shop1.getLavePoint();
+                //添加明细记录
+                ShopBalanceStatementCopy shopBalanceStatementCopy = new ShopBalanceStatementCopy();
+                shopBalanceStatementCopy.setShopId(shop1.getId());
+                shopBalanceStatementCopy.setType(1);
+                shopBalanceStatementCopy.setHistoricalBalance(shopBalance);
+                shopBalanceStatementCopy.setVariableAmount(bdmd_price);
+                shopBalanceStatementCopy.setBalance(shop1.getBalance());
+                shopBalanceStatementCopy.setCreateTime(LocalDateTime.now());
+                shopBalanceStatementCopy.setCreateUserId(order.getAppUserId());
+                shopBalanceStatementCopy.setObjectId(order.getId());
+                shopBalanceStatementCopy.setExtension(order.getOrderNumber());
+                shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatementCopy);
+                //添加积分明细
+                UserPointCopy userPointCopy = new UserPointCopy();
+                userPointCopy.setType(9);
+                userPointCopy.setHistoricalPoint(lavePoint);
+                userPointCopy.setVariablePoint(bdmd_point);
+                userPointCopy.setBalance(bdShopAppUser.getLavePoint());
+                userPointCopy.setCreateTime(LocalDateTime.now());
+                userPointCopy.setAppUserId(bdShopAppUser.getId());
+                userPointCopy.setObjectId(order.getId());
+                userPointCopy.setExtention(order.getOrderNumber());
+                userPointClient.saveUserPoint(userPointCopy);
+
+                ShopPointCopy shopPointCopy = new ShopPointCopy();
+                shopPointCopy.setShopId(shop1.getId());
+                shopPointCopy.setType(2);
+                shopPointCopy.setHistoricalPoint(shopLavePoint);
+                shopPointCopy.setVariablePoint(bdmd_point);
+                shopPointCopy.setBalance(shop1.getLavePoint());
+                shopPointCopy.setCreateTime(LocalDateTime.now());
+                shopPointCopy.setCreateUserId(order.getAppUserId());
+                shopPointCopy.setObjectId(order.getId());
+                shopPointCopy.setOrderNum(order.getOrderNumber());
+                shopPointClient.saveShopPoint(shopPointCopy);
+            }
+        }
+
+        //高级服务商
+        Shop shop2 = shopClient.getSuperiorServiceProvider(order.getAppUserId()).getData();
+        if(null != shop2){
+            AppUser sjShopAppUser = appUserClient.getAppUserById(shop2.getAppUserId());
+            if(null != sjShopAppUser){
+                BigDecimal shopBalance = shop2.getBalance();
+                Integer lavePoint = sjShopAppUser.getLavePoint();
+                Integer shopLavePoint = shop2.getLavePoint();
+                //添加明细记录
+                ShopBalanceStatementCopy shopBalanceStatementCopy = new ShopBalanceStatementCopy();
+                shopBalanceStatementCopy.setShopId(shop2.getId());
+                shopBalanceStatementCopy.setType(2);
+                shopBalanceStatementCopy.setHistoricalBalance(shopBalance);
+                shopBalanceStatementCopy.setVariableAmount(bdmdsj_price);
+                shopBalanceStatementCopy.setBalance(shop2.getBalance());
+                shopBalanceStatementCopy.setCreateTime(LocalDateTime.now());
+                shopBalanceStatementCopy.setCreateUserId(order.getAppUserId());
+                shopBalanceStatementCopy.setObjectId(order.getId());
+                shopBalanceStatementCopy.setExtension(order.getOrderNumber());
+                shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatementCopy);
+                //添加积分明细
+                UserPointCopy userPointCopy = new UserPointCopy();
+                userPointCopy.setType(14);
+                userPointCopy.setHistoricalPoint(lavePoint);
+                userPointCopy.setVariablePoint(bdmdsj_point);
+                userPointCopy.setBalance(sjShopAppUser.getLavePoint());
+                userPointCopy.setCreateTime(LocalDateTime.now());
+                userPointCopy.setAppUserId(sjShopAppUser.getId());
+                userPointCopy.setObjectId(order.getId());
+                userPointCopy.setExtention(order.getOrderNumber());
+                userPointClient.saveUserPoint(userPointCopy);
+
+                ShopPointCopy shopPointCopy = new ShopPointCopy();
+                shopPointCopy.setShopId(shop2.getId());
+                shopPointCopy.setType(3);
+                shopPointCopy.setHistoricalPoint(shopLavePoint);
+                shopPointCopy.setVariablePoint(bdmdsj_point);
+                shopPointCopy.setBalance(shop2.getLavePoint());
+                shopPointCopy.setCreateTime(LocalDateTime.now());
+                shopPointCopy.setCreateUserId(order.getAppUserId());
+                shopPointCopy.setObjectId(order.getId());
+                shopPointCopy.setOrderNum(order.getOrderNumber());
+                shopPointClient.saveShopPoint(shopPointCopy);
+            }
+        }
+    }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index 8c6d072..c9bc85a 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -117,6 +117,9 @@
     private ShopBalanceStatementClient shopBalanceStatementClient;
 
     @Resource
+    private ShopPointClient shopPointClient;
+
+    @Resource
     private RedisTemplate redisTemplate;
 
     @Resource
@@ -439,6 +442,20 @@
         if (200 == r.getCode()) {
             this.updateById(order);
         }
+
+        R r1 = balanceChangeRecordClient.deleteBalanceChangeRecord(orderId);
+        if (200 != r1.getCode()) { // 项目没有分布式事务,此处报错可能会导致数据不一致
+         throw new RuntimeException("订单取消失败");
+        }
+        R r2 = userPointClient.deleteUserPointCopy(orderId);
+        if (200 != r2.getCode()) { // 项目没有分布式事务,此处报错可能会导致数据不一致
+            throw new RuntimeException("订单取消失败");
+        }
+        R<Boolean> r3 = shopBalanceStatementClient.deleteShopBalanceStatementCopy(orderId);
+        if (200 != r3.getCode()) { // 项目没有分布式事务,此处报错可能会导致数据不一致
+            throw new RuntimeException("订单取消失败");
+        }
+        shopPointClient.deleteShopPointCopy(orderId);
         return r;
     }
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
index efbe37e..78427d1 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -1431,9 +1431,19 @@
 			orderBalancePayment.setDistributionAmount(distributionAmount);
 			orderBalancePaymentService.save(orderBalancePayment);
 		}
+
+		commissionService.calculationCommissionCopy(order);
 		return R.ok(order.getId().toString());
 	}
 
+
+
+
+
+
+
+
+
 	
 	public String getNumber(Integer size){
 		String str = "";
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java
index 3405fa0..bf204f3 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java
@@ -11,19 +11,19 @@
     /**
      * 订单状态
      */
-    @Excel(name = "订单状态")
-    private String status;
+    @Excel(name = "订单状态" , readConverterExp = "1=待发货,2=待收货,3=待使用,4=已完成,5=已取消,6=已退款,7=售后中,8=已评价")
+    private String orderStatus;
 
     /**
      * 订单编号
      */
     @Excel(name = "订单编号")
-    private String code;
+    private String orderNumber;
 
     /**
      * 订单类型
      */
-    @Excel(name = "订单类型")
+    @Excel(name = "订单类型", readConverterExp = "1=服务,2=单品")
     private String orderType;
 
     /**
@@ -56,7 +56,7 @@
      * 商品售价
      */
     @Excel(name = "商品售价")
-    private BigDecimal goodsPrice;
+    private BigDecimal sellingPrice;
 
     /**
      * 成本价
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
index fd9ef5e..c4c7fed 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
@@ -10,7 +10,9 @@
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.other.api.domain.Shop;
 import com.ruoyi.other.api.domain.ShopBalanceStatement;
+import com.ruoyi.other.api.domain.ShopBalanceStatementCopy;
 import com.ruoyi.other.dto.ShopBalanceDto;
+import com.ruoyi.other.mapper.ShopBalanceStatementCopyMapper;
 import com.ruoyi.other.mapper.ShopBalanceStatementMapper;
 import com.ruoyi.other.service.ShopBalanceStatementService;
 import com.ruoyi.other.service.ShopService;
@@ -53,6 +55,8 @@
     private ShopService shopService;
     @Resource
     private SysUserClient sysUserClient;
+    @Resource
+    private ShopBalanceStatementCopyMapper shopBalanceStatementCopyMapper;
     
     
     
@@ -201,6 +205,18 @@
         shopBalanceStatementService.save(shopBalanceStatement);
     }
 
+    @PostMapping("/saveShopBalanceStatementCopy")
+    public void saveShopBalanceStatementCopy(@RequestBody ShopBalanceStatementCopy shopBalanceStatementCopy){
+        shopBalanceStatementCopyMapper.insert(shopBalanceStatementCopy);
+    }
+
+    @DeleteMapping("/deleteShopBalanceStatementCopy")
+    public R<Boolean> deleteShopBalanceStatementCopy(@RequestParam("orderId") Long orderId){
+        shopBalanceStatementCopyMapper.delete(new LambdaQueryWrapper<ShopBalanceStatementCopy>()
+                .eq(ShopBalanceStatementCopy::getObjectId, orderId));
+        return R.ok();
+    }
+
 
     /**
      * 获取门店流水数据
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java
index 5e66135..84be6c3 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java
@@ -1,12 +1,15 @@
 package com.ruoyi.other.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.other.api.domain.ShopPoint;
+import com.ruoyi.other.api.domain.ShopPointCopy;
+import com.ruoyi.other.mapper.ShopPointCopyMapper;
 import com.ruoyi.other.service.ShopPointService;
 import com.ruoyi.other.vo.ShopPointStatistics;
 import com.ruoyi.system.api.domain.SysUser;
@@ -32,6 +35,8 @@
 public class ShopPointController {
     @Resource
     private ShopPointService shopPointService;
+    @Resource
+    private ShopPointCopyMapper shopPointCopyMapper;
     @Resource
     private TokenService tokenService;
     @Resource
@@ -105,5 +110,20 @@
         shopPointService.save(shopPoint);
     }
 
+    /**
+     * 保存门店积分流水
+     * @param shopPoint
+     */
+    @PostMapping("/saveShopPointCopy")
+    public void saveShopPointCopy(@RequestBody ShopPointCopy shopPoint){
+        shopPointCopyMapper.insert(shopPoint);
+    }
+
+    @DeleteMapping("/shop-point/deleteShopPointCopy")
+    public void deleteShopPointCopy(@RequestParam("orderId") Long orderId){
+        shopPointCopyMapper.delete(new LambdaQueryWrapper<ShopPointCopy>()
+                .eq(ShopPointCopy::getObjectId, orderId));
+    }
+
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementCopyMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementCopyMapper.java
new file mode 100644
index 0000000..18a0b28
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementCopyMapper.java
@@ -0,0 +1,17 @@
+package com.ruoyi.other.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.other.api.domain.ShopBalanceStatementCopy;
+
+/**
+ * <p>
+ * Mapper 接口
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-11-20
+ */
+public interface ShopBalanceStatementCopyMapper extends BaseMapper<ShopBalanceStatementCopy> {
+
+
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopPointCopyMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopPointCopyMapper.java
new file mode 100644
index 0000000..bd7ff0d
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopPointCopyMapper.java
@@ -0,0 +1,7 @@
+package com.ruoyi.other.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.other.api.domain.ShopPointCopy;
+
+public interface ShopPointCopyMapper extends BaseMapper<ShopPointCopy> {
+}

--
Gitblit v1.7.1