【功能新增】商城分销: 创建分销员
This commit is contained in:
parent
424750f628
commit
33dc329485
|
@ -93,6 +93,7 @@ public interface ErrorCodeConstants {
|
||||||
ErrorCode BROKERAGE_BIND_OVERRIDE = new ErrorCode(1_011_007_006, "已绑定了推广人");
|
ErrorCode BROKERAGE_BIND_OVERRIDE = new ErrorCode(1_011_007_006, "已绑定了推广人");
|
||||||
ErrorCode BROKERAGE_BIND_LOOP = new ErrorCode(1_011_007_007, "下级不能绑定自己的上级");
|
ErrorCode BROKERAGE_BIND_LOOP = new ErrorCode(1_011_007_007, "下级不能绑定自己的上级");
|
||||||
ErrorCode BROKERAGE_USER_LEVEL_NOT_SUPPORT = new ErrorCode(1_011_007_008, "目前只支持 level 小于等于 2");
|
ErrorCode BROKERAGE_USER_LEVEL_NOT_SUPPORT = new ErrorCode(1_011_007_008, "目前只支持 level 小于等于 2");
|
||||||
|
ErrorCode BROKERAGE_CREATE_USER_EXISTS = new ErrorCode(1_011_007_009, "分销用户已存在");
|
||||||
|
|
||||||
// ========== 分销提现 模块 1-011-008-000 ==========
|
// ========== 分销提现 模块 1-011-008-000 ==========
|
||||||
ErrorCode BROKERAGE_WITHDRAW_NOT_EXISTS = new ErrorCode(1_011_008_000, "佣金提现记录不存在");
|
ErrorCode BROKERAGE_WITHDRAW_NOT_EXISTS = new ErrorCode(1_011_008_000, "佣金提现记录不存在");
|
||||||
|
|
|
@ -47,6 +47,13 @@ public class BrokerageUserController {
|
||||||
@Resource
|
@Resource
|
||||||
private MemberUserApi memberUserApi;
|
private MemberUserApi memberUserApi;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建分销用户")
|
||||||
|
@PreAuthorize("@ss.hasPermission('trade:brokerage-user:create')")
|
||||||
|
public CommonResult<Long> createBrokerageUser(@Valid @RequestBody BrokerageUserCreateReqVO createReqVO) {
|
||||||
|
return success(brokerageUserService.createBrokerageUser(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
@PutMapping("/update-bind-user")
|
@PutMapping("/update-bind-user")
|
||||||
@Operation(summary = "修改推广员")
|
@Operation(summary = "修改推广员")
|
||||||
@PreAuthorize("@ss.hasPermission('trade:brokerage-user:update-bind-user')")
|
@PreAuthorize("@ss.hasPermission('trade:brokerage-user:update-bind-user')")
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 分销用户创建 Request VO")
|
||||||
|
@Data
|
||||||
|
public class BrokerageUserCreateReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "分销用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
@NotNull(message = "分销用户编号不能为空")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Schema(description = "推广员编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4587")
|
||||||
|
private Long bindUserId;
|
||||||
|
|
||||||
|
@Schema(description = "推广资格", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@NotNull(message = "推广资格不能为空")
|
||||||
|
private Boolean brokerageEnabled;
|
||||||
|
|
||||||
|
@Schema(description = "可用佣金", requiredMode = Schema.RequiredMode.REQUIRED, example = "11089")
|
||||||
|
@NotNull(message = "可用佣金不能为空")
|
||||||
|
private Integer price;
|
||||||
|
|
||||||
|
@Schema(description = "冻结佣金", requiredMode = Schema.RequiredMode.REQUIRED, example = "30916")
|
||||||
|
@NotNull(message = "冻结佣金不能为空")
|
||||||
|
private Integer frozenPrice;
|
||||||
|
|
||||||
|
}
|
|
@ -59,6 +59,9 @@ public interface BrokerageUserConvert {
|
||||||
}
|
}
|
||||||
|
|
||||||
default BrokerageUserRespVO copyTo(MemberUserRespDTO source, BrokerageUserRespVO target) {
|
default BrokerageUserRespVO copyTo(MemberUserRespDTO source, BrokerageUserRespVO target) {
|
||||||
|
if (target == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
Optional.ofNullable(source).ifPresent(
|
Optional.ofNullable(source).ifPresent(
|
||||||
user -> target.setNickname(user.getNickname()).setAvatar(user.getAvatar()));
|
user -> target.setNickname(user.getNickname()).setAvatar(user.getAvatar()));
|
||||||
return target;
|
return target;
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
package cn.iocoder.yudao.module.trade.service.brokerage;
|
package cn.iocoder.yudao.module.trade.service.brokerage;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserCreateReqVO;
|
||||||
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO;
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO;
|
||||||
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryPageReqVO;
|
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryPageReqVO;
|
||||||
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO;
|
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO;
|
||||||
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO;
|
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO;
|
||||||
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankPageReqVO;
|
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankPageReqVO;
|
||||||
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
|
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -107,6 +109,13 @@ public interface BrokerageUserService {
|
||||||
*/
|
*/
|
||||||
boolean bindBrokerageUser(@NotNull Long userId, @NotNull Long bindUserId);
|
boolean bindBrokerageUser(@NotNull Long userId, @NotNull Long bindUserId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建分销用户
|
||||||
|
* @param createReqVO 请求
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createBrokerageUser(@Valid BrokerageUserCreateReqVO createReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户是否有分销资格
|
* 获取用户是否有分销资格
|
||||||
*
|
*
|
||||||
|
|
|
@ -8,9 +8,11 @@ import cn.hutool.core.util.ObjUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
|
import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
|
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
|
||||||
import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
|
import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
|
||||||
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
|
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserCreateReqVO;
|
||||||
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO;
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO;
|
||||||
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryPageReqVO;
|
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryPageReqVO;
|
||||||
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO;
|
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO;
|
||||||
|
@ -28,6 +30,7 @@ import cn.iocoder.yudao.module.trade.service.config.TradeConfigService;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
@ -202,6 +205,24 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public Long createBrokerageUser(BrokerageUserCreateReqVO createReqVO) {
|
||||||
|
// 1. 校验分销用户是否已存在
|
||||||
|
BrokerageUserDO brokerageUser = brokerageUserMapper.selectById(createReqVO.getUserId());
|
||||||
|
if (brokerageUser != null) {
|
||||||
|
throw exception(BROKERAGE_CREATE_USER_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2.1 创建分销人
|
||||||
|
brokerageUser = BeanUtils.toBean(createReqVO, BrokerageUserDO.class).setId(createReqVO.getUserId())
|
||||||
|
.setBrokerageTime(LocalDateTime.now()).setBindUserId(null);
|
||||||
|
brokerageUserMapper.insert(brokerageUser);
|
||||||
|
// 2.2 绑定推广员
|
||||||
|
updateBrokerageUserId(brokerageUser.getId(), createReqVO.getBindUserId());
|
||||||
|
return brokerageUser.getId();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 补全绑定用户的字段
|
* 补全绑定用户的字段
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue