luofl
2025-02-24 199861555473ab50f2fafa3d58e42e64e838c039
修改物流信息导入模板
1 文件已重命名
25个文件已修改
11个文件已添加
1144 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/BalanceChangeRecordClientFallbackFactory.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/BalanceChangeRecordClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecordCopy.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserPointCopy.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatementCopy.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPointCopy.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopPointClientFallbackFactory.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopPointClient.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/BalanceChangeRecordCopyMapper.xml 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordCopyController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/BalanceChangeRecordCopyMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointCopyMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordCopyService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordCopyServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WalletServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderGoodController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java 330 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementCopyMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopPointCopyMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
            }
        };
    }
}
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());
            }
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);
}
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);
    /**
     * 获取积分变动明细
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;
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecordCopy.java
New file
@@ -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;
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserPointCopy.java
New file
@@ -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;
}
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("获取未分配订单失败");
            }
        };
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);
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatementCopy.java
New file
@@ -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;
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPointCopy.java
New file
@@ -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;
}
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());
            }
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) {
            }
        };
    }
}
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);
    /**
     * 获取门店余额流水
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);
}
ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/BalanceChangeRecordCopyMapper.xml
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());
                });
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordCopyController.java
New file
@@ -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();
    }
}
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();
    }
    /**
     * 积分统计
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)){
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/BalanceChangeRecordCopyMapper.java
New file
@@ -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> {
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointCopyMapper.java
New file
@@ -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> {
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordCopyService.java
New file
@@ -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> {
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordCopyServiceImpl.java
New file
@@ -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 {
}
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"));
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;
    }
}
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")));
            }
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>()
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);
}
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);
            }
        }
    }
}
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;
    }
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 = "";
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;
    /**
     * 成本价
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();
    }
    /**
     * 获取门店流水数据
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));
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementCopyMapper.java
New file
@@ -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> {
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopPointCopyMapper.java
New file
@@ -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> {
}