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> { }