Merge remote-tracking branch 'origin/feature/mall_product' into feature/mall_product
# Conflicts: # yudao-module-member/yudao-module-member-biz/src/test/resources/sql/create_tables.sqlplp
commit
eb342d5abf
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.module.member.enums.brokerage;
|
package cn.iocoder.yudao.module.trade.enums.brokerage;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.module.member.enums.brokerage;
|
package cn.iocoder.yudao.module.trade.enums.brokerage;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.module.member.enums.brokerage;
|
package cn.iocoder.yudao.module.trade.enums.brokerage;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.module.member.enums.brokerage;
|
package cn.iocoder.yudao.module.trade.enums.brokerage;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.module.member.enums.brokerage;
|
package cn.iocoder.yudao.module.trade.enums.brokerage;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.module.member.enums.brokerage;
|
package cn.iocoder.yudao.module.trade.enums.brokerage;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.brokerage.record;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo.TradeBrokerageRecordPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo.TradeBrokerageRecordRespVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.convert.brokerage.record.TradeBrokerageRecordConvert;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.record.TradeBrokerageRecordDO;
|
||||||
|
import cn.iocoder.yudao.module.trade.service.brokerage.record.TradeBrokerageRecordService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 佣金记录")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/trade/brokerage-record")
|
||||||
|
@Validated
|
||||||
|
public class TradeBrokerageRecordController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TradeBrokerageRecordService tradeBrokerageRecordService;
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得佣金记录")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('trade:brokerage-record:query')")
|
||||||
|
public CommonResult<TradeBrokerageRecordRespVO> getBrokerageRecord(@RequestParam("id") Integer id) {
|
||||||
|
TradeBrokerageRecordDO tradeBrokerageRecord = tradeBrokerageRecordService.getBrokerageRecord(id);
|
||||||
|
return success(TradeBrokerageRecordConvert.INSTANCE.convert(tradeBrokerageRecord));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得佣金记录分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('trade:brokerage-record:query')")
|
||||||
|
public CommonResult<PageResult<TradeBrokerageRecordRespVO>> getBrokerageRecordPage(@Valid TradeBrokerageRecordPageReqVO pageVO) {
|
||||||
|
PageResult<TradeBrokerageRecordDO> pageResult = tradeBrokerageRecordService.getBrokerageRecordPage(pageVO);
|
||||||
|
return success(TradeBrokerageRecordConvert.INSTANCE.convertPage(pageResult));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
4
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/brokerage/record/vo/MemberBrokerageRecordBaseVO.java → yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/record/vo/TradeBrokerageRecordBaseVO.java
4
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/brokerage/record/vo/MemberBrokerageRecordBaseVO.java → yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/record/vo/TradeBrokerageRecordBaseVO.java
4
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/brokerage/record/vo/MemberBrokerageRecordPageReqVO.java → yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/record/vo/TradeBrokerageRecordPageReqVO.java
4
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/brokerage/record/vo/MemberBrokerageRecordPageReqVO.java → yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/record/vo/TradeBrokerageRecordPageReqVO.java
4
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/brokerage/record/vo/MemberBrokerageRecordRespVO.java → yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/record/vo/TradeBrokerageRecordRespVO.java
4
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/brokerage/record/vo/MemberBrokerageRecordRespVO.java → yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/record/vo/TradeBrokerageRecordRespVO.java
@ -0,0 +1,71 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.brokerage.user;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.*;
|
||||||
|
import cn.iocoder.yudao.module.trade.convert.brokerage.user.TradeBrokerageUserConvert;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO;
|
||||||
|
import cn.iocoder.yudao.module.trade.service.brokerage.user.TradeBrokerageUserService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 分销用户")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/trade/brokerage-user")
|
||||||
|
@Validated
|
||||||
|
public class TradeBrokerageUserController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TradeBrokerageUserService brokerageUserService;
|
||||||
|
|
||||||
|
@PutMapping("/update-brokerage-user")
|
||||||
|
@Operation(summary = "修改推广员")
|
||||||
|
@PreAuthorize("@ss.hasPermission('trade:brokerage-user:update-brokerage-user')")
|
||||||
|
public CommonResult<Boolean> updateBrokerageUser(@Valid @RequestBody TradeBrokerageUserUpdateBrokerageUserReqVO updateReqVO) {
|
||||||
|
brokerageUserService.updateBrokerageUserId(updateReqVO.getId(), updateReqVO.getBrokerageUserId());
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/clear-brokerage-user")
|
||||||
|
@Operation(summary = "清除推广员")
|
||||||
|
@PreAuthorize("@ss.hasPermission('trade:brokerage-user:clear-brokerage-user')")
|
||||||
|
public CommonResult<Boolean> clearBrokerageUser(@Valid @RequestBody TradeBrokerageUserClearBrokerageUserReqVO updateReqVO) {
|
||||||
|
brokerageUserService.updateBrokerageUserId(updateReqVO.getId(), null);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update-brokerage-enable")
|
||||||
|
@Operation(summary = "修改推广资格")
|
||||||
|
@PreAuthorize("@ss.hasPermission('trade:brokerage-user:update-brokerage-enable')")
|
||||||
|
public CommonResult<Boolean> updateBrokerageEnabled(@Valid @RequestBody TradeBrokerageUserUpdateBrokerageEnabledReqVO updateReqVO) {
|
||||||
|
brokerageUserService.updateBrokerageEnabled(updateReqVO.getId(), updateReqVO.getBrokerageEnabled());
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得分销用户")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('trade:brokerage-user:query')")
|
||||||
|
public CommonResult<TradeBrokerageUserRespVO> getBrokerageUser(@RequestParam("id") Long id) {
|
||||||
|
TradeBrokerageUserDO brokerageUser = brokerageUserService.getBrokerageUser(id);
|
||||||
|
return success(TradeBrokerageUserConvert.INSTANCE.convert(brokerageUser));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得分销用户分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('trade:brokerage-user:query')")
|
||||||
|
public CommonResult<PageResult<TradeBrokerageUserRespVO>> getBrokerageUserPage(@Valid TradeBrokerageUserPageReqVO pageVO) {
|
||||||
|
PageResult<TradeBrokerageUserDO> pageResult = brokerageUserService.getBrokerageUserPage(pageVO);
|
||||||
|
return success(TradeBrokerageUserConvert.INSTANCE.convertPage(pageResult));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 分销用户 - 清除推广员 Request VO")
|
||||||
|
@Data
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class TradeBrokerageUserClearBrokerageUserReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
|
||||||
|
@NotNull(message = "用户编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 分销用户分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class TradeBrokerageUserPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "推广员编号", example = "4587")
|
||||||
|
private Long brokerageUserId;
|
||||||
|
|
||||||
|
@Schema(description = "推广资格")
|
||||||
|
private Boolean brokerageEnabled;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 分销用户 Response VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class TradeBrokerageUserRespVO extends TradeBrokerageUserBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 分销用户 - 修改推广员 Request VO")
|
||||||
|
@Data
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class TradeBrokerageUserUpdateBrokerageEnabledReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
|
||||||
|
@NotNull(message = "用户编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "推广资格", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@NotNull(message = "推广资格不能为空")
|
||||||
|
private Boolean brokerageEnabled;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 分销用户 - 修改推广员 Request VO")
|
||||||
|
@Data
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class TradeBrokerageUserUpdateBrokerageUserReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
|
||||||
|
@NotNull(message = "用户编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "推广员编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4587")
|
||||||
|
@NotNull(message = "推广员编号不能为空")
|
||||||
|
private Long brokerageUserId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.config.vo.TradeConfigRespVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.config.vo.TradeConfigSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.convert.config.TradeConfigConvert;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.config.TradeConfigDO;
|
||||||
|
import cn.iocoder.yudao.module.trade.service.config.TradeConfigService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 交易中心配置")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/trade/config")
|
||||||
|
@Validated
|
||||||
|
public class TradeConfigController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TradeConfigService tradeConfigService;
|
||||||
|
|
||||||
|
@PutMapping("/save")
|
||||||
|
@Operation(summary = "更新交易中心配置")
|
||||||
|
@PreAuthorize("@ss.hasPermission('trade:config:save')")
|
||||||
|
public CommonResult<Boolean> updateConfig(@Valid @RequestBody TradeConfigSaveReqVO updateReqVO) {
|
||||||
|
tradeConfigService.saveTradeConfig(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得交易中心配置")
|
||||||
|
@PreAuthorize("@ss.hasPermission('trade:config:query')")
|
||||||
|
public CommonResult<TradeConfigRespVO> getConfig() {
|
||||||
|
TradeConfigDO config = tradeConfigService.getTradeConfig();
|
||||||
|
return success(TradeConfigConvert.INSTANCE.convert(config));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.config.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 交易中心配置 Response VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class TradeConfigRespVO extends TradeConfigBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.controller.admin.config.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 交易中心配置更新 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class TradeConfigSaveReqVO extends TradeConfigBaseVO {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.convert.brokerage.user;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.TradeBrokerageUserRespVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分销用户 Convert
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface TradeBrokerageUserConvert {
|
||||||
|
|
||||||
|
TradeBrokerageUserConvert INSTANCE = Mappers.getMapper(TradeBrokerageUserConvert.class);
|
||||||
|
|
||||||
|
TradeBrokerageUserRespVO convert(TradeBrokerageUserDO bean);
|
||||||
|
|
||||||
|
List<TradeBrokerageUserRespVO> convertList(List<TradeBrokerageUserDO> list);
|
||||||
|
|
||||||
|
PageResult<TradeBrokerageUserRespVO> convertPage(PageResult<TradeBrokerageUserDO> page);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.convert.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.config.vo.TradeConfigRespVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.config.vo.TradeConfigSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.config.TradeConfigDO;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易中心配置 Convert
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface TradeConfigConvert {
|
||||||
|
|
||||||
|
TradeConfigConvert INSTANCE = Mappers.getMapper(TradeConfigConvert.class);
|
||||||
|
|
||||||
|
TradeConfigDO convert(TradeConfigSaveReqVO bean);
|
||||||
|
|
||||||
|
TradeConfigRespVO convert(TradeConfigDO bean);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,56 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分销用户 DO
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@TableName("trade_brokerage_user")
|
||||||
|
@KeySequence("trade_brokerage_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class TradeBrokerageUserDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户编号
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 推广员编号
|
||||||
|
*/
|
||||||
|
private Long brokerageUserId;
|
||||||
|
/**
|
||||||
|
* 推广员绑定时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime brokerageBindTime;
|
||||||
|
/**
|
||||||
|
* 推广资格
|
||||||
|
*/
|
||||||
|
private Boolean brokerageEnabled;
|
||||||
|
/**
|
||||||
|
* 成为分销员时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime brokerageTime;
|
||||||
|
/**
|
||||||
|
* 可用佣金
|
||||||
|
*/
|
||||||
|
private Integer brokeragePrice;
|
||||||
|
/**
|
||||||
|
* 冻结佣金
|
||||||
|
*/
|
||||||
|
private Integer frozenBrokeragePrice;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,90 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.dal.dataobject.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.type.IntegerListTypeHandler;
|
||||||
|
import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageBindModeEnum;
|
||||||
|
import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageEnabledConditionEnum;
|
||||||
|
import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawTypeEnum;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易中心配置 DO
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@TableName(value = "trade_config", autoResultMap = true)
|
||||||
|
@KeySequence("trade_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class TradeConfigDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自增主键
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
// ========== 分销相关 ==========
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否启用分佣
|
||||||
|
*/
|
||||||
|
private Boolean brokerageEnabled;
|
||||||
|
/**
|
||||||
|
* 分佣模式
|
||||||
|
* <p>
|
||||||
|
* 枚举 {@link BrokerageEnabledConditionEnum 对应的类}
|
||||||
|
*/
|
||||||
|
private Integer brokerageEnabledCondition;
|
||||||
|
/**
|
||||||
|
* 分销关系绑定模式
|
||||||
|
* <p>
|
||||||
|
* 枚举 {@link BrokerageBindModeEnum 对应的类}
|
||||||
|
*/
|
||||||
|
private Integer brokerageBindMode;
|
||||||
|
/**
|
||||||
|
* 分销海报图地址数组
|
||||||
|
*/
|
||||||
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
|
private List<String> brokeragePostUrls;
|
||||||
|
/**
|
||||||
|
* 一级返佣比例
|
||||||
|
*/
|
||||||
|
private Integer brokerageFirstPercent;
|
||||||
|
/**
|
||||||
|
* 二级返佣比例
|
||||||
|
*/
|
||||||
|
private Integer brokerageSecondPercent;
|
||||||
|
/**
|
||||||
|
* 用户提现最低金额
|
||||||
|
*/
|
||||||
|
private Integer brokerageWithdrawMinPrice;
|
||||||
|
/**
|
||||||
|
* 提现银行
|
||||||
|
*/
|
||||||
|
@TableField(typeHandler = IntegerListTypeHandler.class)
|
||||||
|
private List<Integer> brokerageBankNames;
|
||||||
|
/**
|
||||||
|
* 佣金冻结时间(天)
|
||||||
|
*/
|
||||||
|
private Integer brokerageFrozenDays;
|
||||||
|
/**
|
||||||
|
* 提现方式
|
||||||
|
* <p>
|
||||||
|
* 枚举 {@link BrokerageWithdrawTypeEnum 对应的类}
|
||||||
|
*/
|
||||||
|
@TableField(typeHandler = IntegerListTypeHandler.class)
|
||||||
|
private List<Integer> brokerageWithdrawType;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.dal.mysql.brokerage.record;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo.TradeBrokerageRecordPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.record.TradeBrokerageRecordDO;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 佣金记录 Mapper
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface TradeBrokerageRecordMapper extends BaseMapperX<TradeBrokerageRecordDO> {
|
||||||
|
|
||||||
|
default PageResult<TradeBrokerageRecordDO> selectPage(TradeBrokerageRecordPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<TradeBrokerageRecordDO>()
|
||||||
|
.eqIfPresent(TradeBrokerageRecordDO::getUserId, reqVO.getUserId())
|
||||||
|
.eqIfPresent(TradeBrokerageRecordDO::getBizType, reqVO.getBizType())
|
||||||
|
.eqIfPresent(TradeBrokerageRecordDO::getStatus, reqVO.getStatus())
|
||||||
|
.betweenIfPresent(TradeBrokerageRecordDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(TradeBrokerageRecordDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<TradeBrokerageRecordDO> selectListByStatusAndUnfreezeTimeLt(Integer status, LocalDateTime unfreezeTime) {
|
||||||
|
return selectList(new LambdaQueryWrapper<TradeBrokerageRecordDO>()
|
||||||
|
.eq(TradeBrokerageRecordDO::getStatus, status)
|
||||||
|
.lt(TradeBrokerageRecordDO::getUnfreezeTime, unfreezeTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
default int updateByIdAndStatus(Integer id, Integer status, TradeBrokerageRecordDO updateObj) {
|
||||||
|
return update(updateObj, new LambdaQueryWrapper<TradeBrokerageRecordDO>()
|
||||||
|
.eq(TradeBrokerageRecordDO::getId, id)
|
||||||
|
.eq(TradeBrokerageRecordDO::getStatus, status));
|
||||||
|
}
|
||||||
|
|
||||||
|
default TradeBrokerageRecordDO selectByUserIdAndBizTypeAndBizId(Integer bizType, String bizId) {
|
||||||
|
return selectOne(TradeBrokerageRecordDO::getBizType, bizType,
|
||||||
|
TradeBrokerageRecordDO::getBizId, bizId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.dal.mysql.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.config.TradeConfigDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易中心配置 Mapper
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface TradeConfigMapper extends BaseMapperX<TradeConfigDO> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.job.brokerage;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
|
||||||
|
import cn.iocoder.yudao.module.trade.service.brokerage.record.TradeBrokerageRecordService;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 佣金解冻 Job
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@TenantJob
|
||||||
|
public class TradeBrokerageRecordUnfreezeJob implements JobHandler {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TradeBrokerageRecordService tradeBrokerageRecordService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute(String param) {
|
||||||
|
int count = tradeBrokerageRecordService.unfreezeRecord();
|
||||||
|
return StrUtil.format("解冻佣金 {} 个", count);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,17 +1,17 @@
|
|||||||
package cn.iocoder.yudao.module.member.api.brokerage.dto;
|
package cn.iocoder.yudao.module.trade.service.brokerage.record.bo;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 佣金 增加 Request DTO
|
* 佣金 增加 Request BO
|
||||||
* @author owen
|
* @author owen
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class BrokerageAddReqDTO {
|
public class BrokerageAddReqBO {
|
||||||
/**
|
/**
|
||||||
* 业务ID
|
* 业务ID
|
||||||
*/
|
*/
|
||||||
@ -0,0 +1,106 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.service.brokerage.user;
|
||||||
|
|
||||||
|
import cn.hutool.core.lang.Assert;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.TradeBrokerageUserPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.mysql.brokerage.user.TradeBrokerageUserMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.MEMBER_FROZEN_BROKERAGE_PRICE_NOT_ENOUGH;
|
||||||
|
import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.BROKERAGE_USER_NOT_EXISTS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分销用户 Service 实现类
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class TradeBrokerageUserServiceImpl implements TradeBrokerageUserService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TradeBrokerageUserMapper brokerageUserMapper;
|
||||||
|
|
||||||
|
private void validateBrokerageUserExists(Long id) {
|
||||||
|
if (brokerageUserMapper.selectById(id) == null) {
|
||||||
|
throw exception(BROKERAGE_USER_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TradeBrokerageUserDO getBrokerageUser(Long id) {
|
||||||
|
return brokerageUserMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<TradeBrokerageUserDO> getBrokerageUserList(Collection<Long> ids) {
|
||||||
|
return brokerageUserMapper.selectBatchIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<TradeBrokerageUserDO> getBrokerageUserPage(TradeBrokerageUserPageReqVO pageReqVO) {
|
||||||
|
return brokerageUserMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateBrokerageUserId(Long id, Long brokerageUserId) {
|
||||||
|
// 校验存在
|
||||||
|
validateBrokerageUserExists(id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateBrokerageEnabled(Long id, Boolean brokerageEnabled) {
|
||||||
|
// 校验存在
|
||||||
|
validateBrokerageUserExists(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TradeBrokerageUserDO getInviteBrokerageUser(Long id) {
|
||||||
|
return Optional.ofNullable(id)
|
||||||
|
.map(this::getBrokerageUser)
|
||||||
|
.map(TradeBrokerageUserDO::getBrokerageUserId)
|
||||||
|
.map(this::getBrokerageUser)
|
||||||
|
.orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void updateUserBrokeragePrice(Long id, int brokeragePrice) {
|
||||||
|
if (brokeragePrice > 0) {
|
||||||
|
brokerageUserMapper.updateBrokeragePriceIncr(id, brokeragePrice);
|
||||||
|
} else if (brokeragePrice < 0) {
|
||||||
|
brokerageUserMapper.updateBrokeragePriceDecr(id, brokeragePrice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void updateUserFrozenBrokeragePrice(Long id, int frozenBrokeragePrice) {
|
||||||
|
if (frozenBrokeragePrice > 0) {
|
||||||
|
brokerageUserMapper.updateFrozenBrokeragePriceIncr(id, frozenBrokeragePrice);
|
||||||
|
} else if (frozenBrokeragePrice < 0) {
|
||||||
|
brokerageUserMapper.updateFrozenBrokeragePriceDecr(id, frozenBrokeragePrice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(Long id, int frozenBrokeragePrice) {
|
||||||
|
Assert.isTrue(frozenBrokeragePrice < 0);
|
||||||
|
int updateRows = brokerageUserMapper.updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(id, frozenBrokeragePrice);
|
||||||
|
if (updateRows == 0) {
|
||||||
|
throw exception(MEMBER_FROZEN_BROKERAGE_PRICE_NOT_ENOUGH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.service.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.config.vo.TradeConfigSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.config.TradeConfigDO;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易中心配置 Service 接口
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
public interface TradeConfigService {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新交易中心配置
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void saveTradeConfig(@Valid TradeConfigSaveReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得交易中心配置
|
||||||
|
*
|
||||||
|
* @return 交易中心配置
|
||||||
|
*/
|
||||||
|
TradeConfigDO getTradeConfig();
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.service.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.config.vo.TradeConfigSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.convert.config.TradeConfigConvert;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.config.TradeConfigDO;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.mysql.config.TradeConfigMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易中心配置 Service 实现类
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class TradeConfigServiceImpl implements TradeConfigService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TradeConfigMapper tradeConfigMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveTradeConfig(TradeConfigSaveReqVO saveReqVO) {
|
||||||
|
// 存在,则进行更新
|
||||||
|
TradeConfigDO dbConfig = getTradeConfig();
|
||||||
|
if (dbConfig != null) {
|
||||||
|
tradeConfigMapper.updateById(TradeConfigConvert.INSTANCE.convert(saveReqVO).setId(dbConfig.getId()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 不存在,则进行插入
|
||||||
|
tradeConfigMapper.insert(TradeConfigConvert.INSTANCE.convert(saveReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TradeConfigDO getTradeConfig() {
|
||||||
|
List<TradeConfigDO> list = tradeConfigMapper.selectList();
|
||||||
|
return CollectionUtils.getFirst(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
52
yudao-module-member/yudao-module-member-biz/src/test/java/cn/iocoder/yudao/module/member/service/brokerage/record/MemberBrokerageRecordServiceImplTest.java → yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/brokerage/record/TradeBrokerageRecordServiceImplTest.java
52
yudao-module-member/yudao-module-member-biz/src/test/java/cn/iocoder/yudao/module/member/service/brokerage/record/MemberBrokerageRecordServiceImplTest.java → yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/brokerage/record/TradeBrokerageRecordServiceImplTest.java
@ -0,0 +1,64 @@
|
|||||||
|
package cn.iocoder.yudao.module.trade.service.brokerage.user;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||||
|
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.TradeBrokerageUserPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO;
|
||||||
|
import cn.iocoder.yudao.module.trade.dal.mysql.brokerage.user.TradeBrokerageUserMapper;
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link TradeBrokerageUserServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@Import(TradeBrokerageUserServiceImpl.class)
|
||||||
|
public class TradeBrokerageUserServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TradeBrokerageUserServiceImpl brokerageUserService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TradeBrokerageUserMapper brokerageUserMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetBrokerageUserPage() {
|
||||||
|
// mock 数据
|
||||||
|
TradeBrokerageUserDO dbBrokerageUser = randomPojo(TradeBrokerageUserDO.class, o -> { // 等会查询到
|
||||||
|
o.setBrokerageUserId(null);
|
||||||
|
o.setBrokerageEnabled(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
brokerageUserMapper.insert(dbBrokerageUser);
|
||||||
|
// 测试 brokerageUserId 不匹配
|
||||||
|
brokerageUserMapper.insert(cloneIgnoreId(dbBrokerageUser, o -> o.setBrokerageUserId(null)));
|
||||||
|
// 测试 brokerageEnabled 不匹配
|
||||||
|
brokerageUserMapper.insert(cloneIgnoreId(dbBrokerageUser, o -> o.setBrokerageEnabled(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
brokerageUserMapper.insert(cloneIgnoreId(dbBrokerageUser, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
TradeBrokerageUserPageReqVO reqVO = new TradeBrokerageUserPageReqVO();
|
||||||
|
reqVO.setBrokerageUserId(null);
|
||||||
|
reqVO.setBrokerageEnabled(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
PageResult<TradeBrokerageUserDO> pageResult = brokerageUserService.getBrokerageUserPage(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, pageResult.getTotal());
|
||||||
|
assertEquals(1, pageResult.getList().size());
|
||||||
|
assertPojoEquals(dbBrokerageUser, pageResult.getList().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,30 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.member.api.brokerage;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.member.api.brokerage.dto.BrokerageAddReqDTO;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 佣金 API 接口
|
|
||||||
*
|
|
||||||
* @author owen
|
|
||||||
*/
|
|
||||||
public interface BrokerageApi {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 增加佣金
|
|
||||||
*
|
|
||||||
* @param userId 会员ID
|
|
||||||
* @param list 请求参数列表
|
|
||||||
*/
|
|
||||||
void addBrokerage(Long userId, List<BrokerageAddReqDTO> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取消佣金
|
|
||||||
*
|
|
||||||
* @param userId 会员ID
|
|
||||||
* @param bizId 业务编号
|
|
||||||
*/
|
|
||||||
void cancelBrokerage(Long userId, String bizId);
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.member.api.brokerage;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.member.api.brokerage.dto.BrokerageAddReqDTO;
|
|
||||||
import cn.iocoder.yudao.module.member.service.brokerage.record.MemberBrokerageRecordService;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 佣金 API 实现类
|
|
||||||
*
|
|
||||||
* @author owen
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
@Validated
|
|
||||||
public class BrokerageApiImpl implements BrokerageApi {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private MemberBrokerageRecordService memberBrokerageRecordService;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addBrokerage(Long userId, List<BrokerageAddReqDTO> list) {
|
|
||||||
memberBrokerageRecordService.addBrokerage(userId, list);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void cancelBrokerage(Long userId, String bizId) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.member.controller.admin.brokerage.record;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordRespVO;
|
|
||||||
import cn.iocoder.yudao.module.member.convert.brokerage.record.MemberBrokerageRecordConvert;
|
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.brokerage.record.MemberBrokerageRecordDO;
|
|
||||||
import cn.iocoder.yudao.module.member.service.brokerage.record.MemberBrokerageRecordService;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import javax.validation.Valid;
|
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 佣金记录")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/member/member-brokerage-record")
|
|
||||||
@Validated
|
|
||||||
public class MemberBrokerageRecordController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private MemberBrokerageRecordService memberBrokerageRecordService;
|
|
||||||
|
|
||||||
@GetMapping("/get")
|
|
||||||
@Operation(summary = "获得佣金记录")
|
|
||||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
|
||||||
@PreAuthorize("@ss.hasPermission('member:member-brokerage-record:query')")
|
|
||||||
public CommonResult<MemberBrokerageRecordRespVO> getMemberBrokerageRecord(@RequestParam("id") Integer id) {
|
|
||||||
MemberBrokerageRecordDO memberBrokerageRecord = memberBrokerageRecordService.getMemberBrokerageRecord(id);
|
|
||||||
return success(MemberBrokerageRecordConvert.INSTANCE.convert(memberBrokerageRecord));
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/page")
|
|
||||||
@Operation(summary = "获得佣金记录分页")
|
|
||||||
@PreAuthorize("@ss.hasPermission('member:member-brokerage-record:query')")
|
|
||||||
public CommonResult<PageResult<MemberBrokerageRecordRespVO>> getMemberBrokerageRecordPage(@Valid MemberBrokerageRecordPageReqVO pageVO) {
|
|
||||||
PageResult<MemberBrokerageRecordDO> pageResult = memberBrokerageRecordService.getMemberBrokerageRecordPage(pageVO);
|
|
||||||
return success(MemberBrokerageRecordConvert.INSTANCE.convertPage(pageResult));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.member.dal.mysql.brokerage.record;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO;
|
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.brokerage.record.MemberBrokerageRecordDO;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 佣金记录 Mapper
|
|
||||||
*
|
|
||||||
* @author owen
|
|
||||||
*/
|
|
||||||
@Mapper
|
|
||||||
public interface MemberBrokerageRecordMapper extends BaseMapperX<MemberBrokerageRecordDO> {
|
|
||||||
|
|
||||||
default PageResult<MemberBrokerageRecordDO> selectPage(MemberBrokerageRecordPageReqVO reqVO) {
|
|
||||||
return selectPage(reqVO, new LambdaQueryWrapperX<MemberBrokerageRecordDO>()
|
|
||||||
.eqIfPresent(MemberBrokerageRecordDO::getUserId, reqVO.getUserId())
|
|
||||||
.eqIfPresent(MemberBrokerageRecordDO::getBizType, reqVO.getBizType())
|
|
||||||
.eqIfPresent(MemberBrokerageRecordDO::getStatus, reqVO.getStatus())
|
|
||||||
.betweenIfPresent(MemberBrokerageRecordDO::getCreateTime, reqVO.getCreateTime())
|
|
||||||
.orderByDesc(MemberBrokerageRecordDO::getId));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,40 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.brokerage.record;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
||||||
import cn.iocoder.yudao.module.member.api.brokerage.dto.BrokerageAddReqDTO;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO;
|
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.brokerage.record.MemberBrokerageRecordDO;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 佣金记录 Service 接口
|
|
||||||
*
|
|
||||||
* @author owen
|
|
||||||
*/
|
|
||||||
public interface MemberBrokerageRecordService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获得佣金记录
|
|
||||||
*
|
|
||||||
* @param id 编号
|
|
||||||
* @return 佣金记录
|
|
||||||
*/
|
|
||||||
MemberBrokerageRecordDO getMemberBrokerageRecord(Integer id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获得佣金记录分页
|
|
||||||
*
|
|
||||||
* @param pageReqVO 分页查询
|
|
||||||
* @return 佣金记录分页
|
|
||||||
*/
|
|
||||||
PageResult<MemberBrokerageRecordDO> getMemberBrokerageRecordPage(MemberBrokerageRecordPageReqVO pageReqVO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 增加佣金
|
|
||||||
*
|
|
||||||
* @param userId 会员ID
|
|
||||||
* @param list 请求参数列表
|
|
||||||
*/
|
|
||||||
void addBrokerage(Long userId, List<BrokerageAddReqDTO> list);
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue