feat: add coin seller parent unbinding

This commit is contained in:
zhx 2026-07-17 18:12:09 +08:00
parent cc3f3af264
commit e25aed3085
13 changed files with 288 additions and 0 deletions

View File

@ -7,6 +7,7 @@ import com.red.circle.wallet.inner.model.cmd.AddFreightBalanceRunningWaterCmd;
import com.red.circle.wallet.inner.model.cmd.FreightAgentReviewCmd;
import com.red.circle.wallet.inner.model.cmd.FreightBalanceCmd;
import com.red.circle.wallet.inner.model.cmd.FreightBalanceRunningWaterCmd;
import com.red.circle.wallet.inner.model.cmd.FreightSubSellerUnbindCmd;
import com.red.circle.wallet.inner.model.cmd.UpdateFreightBalanceInfoCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalancePageQryCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalanceRunningWaterExportQryCmd;
@ -17,6 +18,7 @@ import com.red.circle.wallet.inner.model.cmd.UserFreightSellerRunningWaterPageQr
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceRunningWaterDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightSellerDTO;
import com.red.circle.wallet.inner.model.dto.FreightSubSellerRelationDTO;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@ -138,6 +140,21 @@ public interface FreightGoldClientApi {
@GetMapping("/removeFreightSeller")
ResultResponse<Void> removeFreightSeller(@RequestParam("id") Long id);
/**
* 查询子 coin seller 当前绑定的超级经销商关系.
*/
@GetMapping("/getFreightSubSellerRelation")
ResultResponse<FreightSubSellerRelationDTO> getFreightSubSellerRelation(
@RequestParam("sysOrigin") String sysOrigin,
@RequestParam("childUserId") Long childUserId);
/**
* 后台解绑子 coin seller 的上级超级经销商.
*/
@PostMapping("/unbindFreightSubSellerRelation")
ResultResponse<Void> unbindFreightSubSellerRelation(
@RequestBody @Validated FreightSubSellerUnbindCmd cmd);
/**
* 更新货运代理账户信息国家和联系方式.
*/

View File

@ -0,0 +1,37 @@
package com.red.circle.wallet.inner.model.cmd;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 后台解绑超级经销商与子 coin seller 的关系.
*/
@Data
@Accessors(chain = true)
public class FreightSubSellerUnbindCmd implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 当前绑定关系 id用于避免并发换绑时误删新关系.
*/
@NotNull(message = "relationId required.")
private Long relationId;
/**
* 来源系统.
*/
@NotBlank(message = "sysOrigin required.")
private String sysOrigin;
/**
* coin seller 用户 id.
*/
@NotNull(message = "childUserId required.")
private Long childUserId;
}

View File

@ -0,0 +1,54 @@
package com.red.circle.wallet.inner.model.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import java.io.Serial;
import java.io.Serializable;
import java.sql.Timestamp;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 超级经销商与子 coin seller 的绑定关系.
*/
@Data
@Accessors(chain = true)
public class FreightSubSellerRelationDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 绑定关系 id.
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long relationId;
/**
* 来源系统.
*/
private String sysOrigin;
/**
* 超级经销商 freight balance id.
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long parentFreightId;
/**
* 超级经销商用户 id.
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long parentUserId;
/**
* coin seller 用户 id.
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long childUserId;
/**
* 绑定时间.
*/
private Timestamp createTime;
}

View File

@ -4,6 +4,7 @@ package com.red.circle.console.adapter.app.user;
import com.alibaba.excel.EasyExcel;
import com.red.circle.console.app.dto.clienobject.user.UserFreightBalanceCO;
import com.red.circle.console.app.dto.clienobject.user.UserFreightBalanceRunningWaterCO;
import com.red.circle.console.app.dto.clienobject.user.FreightSubSellerParentCO;
import com.red.circle.console.app.excel.model.freight.UserFreightBalanceRunningWaterExportModel;
import com.red.circle.console.app.service.admin.UserAccountService;
import com.red.circle.console.app.service.app.user.UserFreightService;
@ -14,6 +15,7 @@ import com.red.circle.framework.dto.PageResult;
import com.red.circle.framework.web.controller.BaseController;
import com.red.circle.other.inner.model.cmd.user.UserFreightBalanceCmd;
import com.red.circle.wallet.inner.model.cmd.UpdateFreightBalanceInfoCmd;
import com.red.circle.wallet.inner.model.cmd.FreightSubSellerUnbindCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalancePageQryCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalanceRunningWaterExportQryCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalanceRunningWaterPageQryCmd;
@ -30,6 +32,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
@ -179,4 +182,24 @@ public class UserFreightRestController extends BaseController {
userFreightService.updateFreightBalanceInfo(cmd);
}
/**
* 查询币商当前绑定的上级经理.
*/
@GetMapping("/sub-seller-parent")
public FreightSubSellerParentCO getFreightSubSellerParent(
@RequestParam("sysOrigin") String sysOrigin,
@RequestParam("childUserId") Long childUserId) {
return userFreightService.getFreightSubSellerParent(sysOrigin, childUserId);
}
/**
* 解绑币商当前绑定的上级经理.
*/
@OpsOperationReqLog("货运代理-解绑币商上级")
@PostMapping("/sub-seller-parent/unbind")
public void unbindFreightSubSellerParent(
@RequestBody @Validated FreightSubSellerUnbindCmd cmd) {
userFreightService.unbindFreightSubSellerParent(cmd);
}
}

View File

@ -4,6 +4,7 @@ import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
import com.red.circle.common.business.core.enums.SysOriginPlatformEnum;
import com.red.circle.component.redis.service.RedisService;
import com.red.circle.console.app.convertor.WalletAppConvertor;
import com.red.circle.console.app.dto.clienobject.user.FreightSubSellerParentCO;
import com.red.circle.console.app.dto.clienobject.user.UserFreightBalanceCO;
import com.red.circle.console.app.dto.clienobject.user.UserFreightBalanceRunningWaterCO;
import com.red.circle.console.app.excel.model.freight.UserFreightBalanceRunningWaterExportModel;
@ -31,6 +32,7 @@ import com.red.circle.wallet.inner.endpoint.freight.FreightGoldClient;
import com.red.circle.wallet.inner.error.WalletErrorCode;
import com.red.circle.wallet.inner.model.cmd.AddFreightBalanceRunningWaterCmd;
import com.red.circle.wallet.inner.model.cmd.FreightAgentReviewCmd;
import com.red.circle.wallet.inner.model.cmd.FreightSubSellerUnbindCmd;
import com.red.circle.wallet.inner.model.cmd.UpdateFreightBalanceInfoCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalancePageQryCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalanceRunningWaterExportQryCmd;
@ -39,6 +41,7 @@ import com.red.circle.wallet.inner.model.cmd.UserFreightSellerCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightSellerRunningWaterPageQryCmd;
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceRunningWaterDTO;
import com.red.circle.wallet.inner.model.dto.FreightSubSellerRelationDTO;
import com.red.circle.wallet.inner.model.enums.FreightBalanceOrigin;
import java.math.BigDecimal;
import java.math.RoundingMode;
@ -547,4 +550,29 @@ public class UserFreightBalanceServiceImpl implements
ResponseAssert.requiredSuccess(freightGoldClient.updateFreightBalanceInfo(cmd));
}
@Override
public FreightSubSellerParentCO getFreightSubSellerParent(String sysOrigin, Long childUserId) {
FreightSubSellerRelationDTO relation = ResponseAssert.requiredSuccess(
freightGoldClient.getFreightSubSellerRelation(sysOrigin, childUserId));
if (Objects.isNull(relation)) {
return null;
}
UserProfileDTO parentUser = ResponseAssert.requiredSuccess(
userProfileClient.getByUserId(relation.getParentUserId()));
return new FreightSubSellerParentCO()
.setRelationId(relation.getRelationId())
.setSysOrigin(relation.getSysOrigin())
.setParentFreightId(relation.getParentFreightId())
.setParentUserId(relation.getParentUserId())
.setChildUserId(relation.getChildUserId())
.setCreateTime(relation.getCreateTime())
.setParentUserBaseInfo(parentUser);
}
@Override
public void unbindFreightSubSellerParent(FreightSubSellerUnbindCmd cmd) {
ResponseAssert.requiredSuccess(freightGoldClient.unbindFreightSubSellerRelation(cmd));
}
}

View File

@ -0,0 +1,42 @@
package com.red.circle.console.app.dto.clienobject.user;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
import java.io.Serial;
import java.io.Serializable;
import java.sql.Timestamp;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 后台展示的子 coin seller 上级绑定信息.
*/
@Data
@Accessors(chain = true)
public class FreightSubSellerParentCO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@JsonSerialize(using = ToStringSerializer.class)
private Long relationId;
private String sysOrigin;
@JsonSerialize(using = ToStringSerializer.class)
private Long parentFreightId;
@JsonSerialize(using = ToStringSerializer.class)
private Long parentUserId;
@JsonSerialize(using = ToStringSerializer.class)
private Long childUserId;
private Timestamp createTime;
/**
* 原上级经理的用户资料便于后台操作前核对目标.
*/
private UserProfileDTO parentUserBaseInfo;
}

View File

@ -2,9 +2,11 @@ package com.red.circle.console.app.service.app.user;
import com.red.circle.console.app.dto.clienobject.user.UserFreightBalanceCO;
import com.red.circle.console.app.dto.clienobject.user.UserFreightBalanceRunningWaterCO;
import com.red.circle.console.app.dto.clienobject.user.FreightSubSellerParentCO;
import com.red.circle.framework.dto.PageResult;
import com.red.circle.other.inner.model.cmd.user.UserFreightBalanceCmd;
import com.red.circle.wallet.inner.model.cmd.UpdateFreightBalanceInfoCmd;
import com.red.circle.wallet.inner.model.cmd.FreightSubSellerUnbindCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalancePageQryCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalanceRunningWaterExportQryCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalanceRunningWaterPageQryCmd;
@ -117,4 +119,14 @@ public interface UserFreightService {
* 更新货运代理账户信息国家和联系方式.
*/
void updateFreightBalanceInfo(UpdateFreightBalanceInfoCmd cmd);
/**
* 查询子 coin seller 当前绑定的上级超级经销商.
*/
FreightSubSellerParentCO getFreightSubSellerParent(String sysOrigin, Long childUserId);
/**
* 解绑子 coin seller 当前的上级超级经销商.
*/
void unbindFreightSubSellerParent(FreightSubSellerUnbindCmd cmd);
}

View File

@ -11,9 +11,13 @@ public interface FreightSubSellerRelationService extends BaseService<FreightSubS
boolean existsByChildUserId(String sysOrigin, Long childUserId);
FreightSubSellerRelation getByChildUserId(String sysOrigin, Long childUserId);
FreightSubSellerRelation getByParentAndChild(String sysOrigin, Long parentUserId,
Long parentFreightId, Long childUserId);
List<FreightSubSellerRelation> listByParentUserId(String sysOrigin, Long parentUserId,
Long parentFreightId);
boolean removeBinding(String sysOrigin, Long childUserId, Long relationId);
}

View File

@ -30,6 +30,15 @@ public class FreightSubSellerRelationServiceImpl extends
.getOne()).isPresent();
}
@Override
public FreightSubSellerRelation getByChildUserId(String sysOrigin, Long childUserId) {
return query()
.eq(FreightSubSellerRelation::getSysOrigin, sysOrigin)
.eq(FreightSubSellerRelation::getChildUserId, childUserId)
.last(PageConstant.LIMIT_ONE)
.getOne();
}
@Override
public FreightSubSellerRelation getByParentAndChild(String sysOrigin, Long parentUserId,
Long parentFreightId, Long childUserId) {
@ -54,4 +63,15 @@ public class FreightSubSellerRelationServiceImpl extends
.list())
.orElseGet(CollectionUtils::newArrayList);
}
@Override
public boolean removeBinding(String sysOrigin, Long childUserId, Long relationId) {
// 同时匹配关系 id平台和子币商避免管理员查看后发生换绑时误删新关系.
return delete()
.eq(FreightSubSellerRelation::getId, relationId)
.eq(FreightSubSellerRelation::getSysOrigin, sysOrigin)
.eq(FreightSubSellerRelation::getChildUserId, childUserId)
.last(PageConstant.LIMIT_ONE)
.execute();
}
}

View File

@ -18,6 +18,7 @@ import com.red.circle.wallet.infra.database.rds.entity.freight.FreightAgentRevie
import com.red.circle.wallet.infra.database.rds.entity.freight.FreightBalance;
import com.red.circle.wallet.infra.database.rds.entity.freight.FreightBalanceRunningWater;
import com.red.circle.wallet.infra.database.rds.entity.freight.FreightSeller;
import com.red.circle.wallet.infra.database.rds.entity.freight.FreightSubSellerRelation;
import com.red.circle.wallet.inner.model.tmp.AssetRecordRunningWaterCO;
import com.red.circle.wallet.inner.model.tmp.UserGoldRunningWaterClsTmpCO;
import com.red.circle.wallet.inner.model.tmp.UserGoldRunningWaterTmpCO;
@ -40,6 +41,7 @@ import com.red.circle.wallet.inner.model.dto.UserDiamondRunWaterDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceRunningWaterDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightSellerDTO;
import com.red.circle.wallet.inner.model.dto.FreightSubSellerRelationDTO;
import com.red.circle.wallet.inner.model.dto.UserGoldRunningWaterClsHistoryDTO;
import com.red.circle.wallet.inner.model.dto.UserGoldRunningWaterHistoryDTO;
import com.red.circle.wallet.inner.model.dto.WalletGoldAssetRecordDTO;
@ -47,6 +49,7 @@ import com.red.circle.wallet.inner.model.dto.WalletReceiptDTO;
import com.red.circle.wallet.inner.model.dto.WalletReceiptResDTO;
import java.util.List;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
/**
* @author pengliang on 2023/12/25
@ -108,6 +111,10 @@ public interface WalletInnerConvertor {
UserFreightSellerDTO toUserFreightSellerDTO(FreightSeller freightSeller);
@Mapping(source = "id", target = "relationId")
FreightSubSellerRelationDTO toFreightSubSellerRelationDTO(
FreightSubSellerRelation relation);
UserDiamondOriginDTO toUserDiamondOriginDTO(DiamondRunningWater diamondRunningWater);

View File

@ -8,6 +8,7 @@ import com.red.circle.wallet.inner.model.cmd.AddFreightBalanceRunningWaterCmd;
import com.red.circle.wallet.inner.model.cmd.FreightAgentReviewCmd;
import com.red.circle.wallet.inner.model.cmd.FreightBalanceCmd;
import com.red.circle.wallet.inner.model.cmd.FreightBalanceRunningWaterCmd;
import com.red.circle.wallet.inner.model.cmd.FreightSubSellerUnbindCmd;
import com.red.circle.wallet.inner.model.cmd.UpdateFreightBalanceInfoCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalancePageQryCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalanceRunningWaterExportQryCmd;
@ -18,6 +19,7 @@ import com.red.circle.wallet.inner.model.cmd.UserFreightSellerRunningWaterPageQr
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceRunningWaterDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightSellerDTO;
import com.red.circle.wallet.inner.model.dto.FreightSubSellerRelationDTO;
import com.red.circle.wallet.inner.service.freight.FreightGoldClientService;
import java.math.BigDecimal;
import java.util.List;
@ -185,6 +187,19 @@ public class FreightGoldClientEndpoint implements FreightGoldClientApi {
return ResultResponse.success();
}
@Override
public ResultResponse<FreightSubSellerRelationDTO> getFreightSubSellerRelation(String sysOrigin,
Long childUserId) {
return ResultResponse.success(
freightGoldClientService.getFreightSubSellerRelation(sysOrigin, childUserId));
}
@Override
public ResultResponse<Void> unbindFreightSubSellerRelation(FreightSubSellerUnbindCmd cmd) {
freightGoldClientService.unbindFreightSubSellerRelation(cmd);
return ResultResponse.success();
}
@Override
public ResultResponse<Boolean> updateFreightBalanceInfo(UpdateFreightBalanceInfoCmd cmd) {
return ResultResponse.success(freightGoldClientService.updateFreightBalanceInfo(cmd));

View File

@ -6,6 +6,7 @@ import com.red.circle.wallet.inner.model.cmd.AddFreightBalanceRunningWaterCmd;
import com.red.circle.wallet.inner.model.cmd.FreightAgentReviewCmd;
import com.red.circle.wallet.inner.model.cmd.FreightBalanceCmd;
import com.red.circle.wallet.inner.model.cmd.FreightBalanceRunningWaterCmd;
import com.red.circle.wallet.inner.model.cmd.FreightSubSellerUnbindCmd;
import com.red.circle.wallet.inner.model.cmd.UpdateFreightBalanceInfoCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalancePageQryCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalanceRunningWaterExportQryCmd;
@ -16,6 +17,7 @@ import com.red.circle.wallet.inner.model.cmd.UserFreightSellerRunningWaterPageQr
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceRunningWaterDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightSellerDTO;
import com.red.circle.wallet.inner.model.dto.FreightSubSellerRelationDTO;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@ -109,6 +111,10 @@ public interface FreightGoldClientService {
void removeFreightSeller(Long id);
FreightSubSellerRelationDTO getFreightSubSellerRelation(String sysOrigin, Long childUserId);
void unbindFreightSubSellerRelation(FreightSubSellerUnbindCmd cmd);
/**
* 更新货运代理账户信息国家和联系方式.
*/

View File

@ -10,15 +10,19 @@ import com.red.circle.wallet.domain.gateway.FreightShipGateway;
import com.red.circle.wallet.infra.database.rds.entity.freight.FreightAgentReview;
import com.red.circle.wallet.infra.database.rds.entity.freight.FreightBalance;
import com.red.circle.wallet.infra.database.rds.entity.freight.FreightBalanceRunningWater;
import com.red.circle.wallet.infra.database.rds.entity.freight.FreightSubSellerRelation;
import com.red.circle.wallet.infra.database.rds.service.freight.FreightBalanceRunningWaterService;
import com.red.circle.wallet.infra.database.rds.service.freight.FreightBalanceService;
import com.red.circle.wallet.infra.database.rds.service.freight.FreightSellerService;
import com.red.circle.wallet.infra.database.rds.service.freight.FreightSubSellerRelationService;
import com.red.circle.wallet.infra.database.rds.service.freight.UserFreightAgentReviewService;
import com.red.circle.wallet.inner.convertor.WalletInnerConvertor;
import com.red.circle.wallet.inner.error.FreightErrorCode;
import com.red.circle.wallet.inner.model.cmd.AddFreightBalanceRunningWaterCmd;
import com.red.circle.wallet.inner.model.cmd.FreightAgentReviewCmd;
import com.red.circle.wallet.inner.model.cmd.FreightBalanceCmd;
import com.red.circle.wallet.inner.model.cmd.FreightBalanceRunningWaterCmd;
import com.red.circle.wallet.inner.model.cmd.FreightSubSellerUnbindCmd;
import com.red.circle.wallet.inner.model.cmd.UpdateFreightBalanceInfoCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalancePageQryCmd;
import com.red.circle.wallet.inner.model.cmd.UserFreightBalanceRunningWaterExportQryCmd;
@ -29,6 +33,7 @@ import com.red.circle.wallet.inner.model.cmd.UserFreightSellerRunningWaterPageQr
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceRunningWaterDTO;
import com.red.circle.wallet.inner.model.dto.UserFreightSellerDTO;
import com.red.circle.wallet.inner.model.dto.FreightSubSellerRelationDTO;
import com.red.circle.wallet.inner.service.freight.FreightGoldClientService;
import java.math.BigDecimal;
import java.util.List;
@ -52,6 +57,7 @@ public class FreightGoldClientServiceImpl implements FreightGoldClientService {
private final FreightShipGateway freightShipGateway;
private final WalletInnerConvertor walletInnerConvertor;
private final FreightSellerService freightSellerService;
private final FreightSubSellerRelationService freightSubSellerRelationService;
private final FreightBalanceService freightBalanceService;
private final UserFreightAgentReviewService freightAgentReviewService;
private final UserFreightRechargeRecordClient userFreightRechargeRecordClient;
@ -252,6 +258,23 @@ public class FreightGoldClientServiceImpl implements FreightGoldClientService {
freightSellerService.removeFreightSeller(id);
}
@Override
public FreightSubSellerRelationDTO getFreightSubSellerRelation(String sysOrigin,
Long childUserId) {
FreightSubSellerRelation relation =
freightSubSellerRelationService.getByChildUserId(sysOrigin, childUserId);
return Objects.isNull(relation) ? null
: walletInnerConvertor.toFreightSubSellerRelationDTO(relation);
}
@Override
public void unbindFreightSubSellerRelation(FreightSubSellerUnbindCmd cmd) {
// 只删除管理员刚刚查看到的关系关系已变化时明确拒绝本次解绑.
ResponseAssert.isTrue(FreightErrorCode.NOT_SUB_FREIGHT_SELLER,
freightSubSellerRelationService.removeBinding(cmd.getSysOrigin(), cmd.getChildUserId(),
cmd.getRelationId()));
}
@Override
public Boolean updateFreightBalanceInfo(UpdateFreightBalanceInfoCmd cmd) {
return freightBalanceService.update()