From e555527410034e97441447bf065c4255c8336fb8 Mon Sep 17 00:00:00 2001 From: baixiao <354287880@qq.com> Date: Wed, 12 Feb 2025 15:33:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=94=80=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-admin-vue3/.env.local | 2 +- yudao-admin-vue3/.image/测试二维码.jpg | Bin 0 -> 18385 bytes .../api/mall/trade/distributemanage/index.ts | 50 +++ .../distributemanage/DistributeManageForm.vue | 141 +++++++ .../mall/trade/distributemanage/index.vue | 391 ++++++++++++++++++ .../trade/enums/ErrorCodeConstants.java | 1 + .../DistributeManageController.java | 95 +++++ .../vo/DistributeManagePageReqVO.java | 51 +++ .../vo/DistributeManageRespVO.java | 67 +++ .../vo/DistributeManageSaveReqVO.java | 48 +++ .../distributemanage/DistributeManageDO.java | 75 ++++ .../DistributeManageMapper.java | 36 ++ .../DistributeManageService.java | 55 +++ .../DistributeManageServiceImpl.java | 74 ++++ .../DistributeManageMapper.xml | 12 + .../DistributeManageServiceImplTest.java | 170 ++++++++ 16 files changed, 1267 insertions(+), 1 deletion(-) create mode 100644 yudao-admin-vue3/.image/测试二维码.jpg create mode 100644 yudao-admin-vue3/src/api/mall/trade/distributemanage/index.ts create mode 100644 yudao-admin-vue3/src/views/mall/trade/distributemanage/DistributeManageForm.vue create mode 100644 yudao-admin-vue3/src/views/mall/trade/distributemanage/index.vue create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/DistributeManageController.java create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManagePageReqVO.java create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManageRespVO.java create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManageSaveReqVO.java create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/distributemanage/DistributeManageDO.java create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/distributemanage/DistributeManageMapper.java create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageService.java create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageServiceImpl.java create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/resources/mapper/distributemanage/DistributeManageMapper.xml create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageServiceImplTest.java diff --git a/yudao-admin-vue3/.env.local b/yudao-admin-vue3/.env.local index 120bda0..ef09344 100644 --- a/yudao-admin-vue3/.env.local +++ b/yudao-admin-vue3/.env.local @@ -5,7 +5,7 @@ VITE_DEV=true # 请求路径 #VITE_BASE_URL='https://zysc.fjptzykj.com' -VITE_BASE_URL='http://192.168.1.12:6127' +VITE_BASE_URL='http://172.24.128.1:6127' # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务 VITE_UPLOAD_TYPE=server diff --git a/yudao-admin-vue3/.image/测试二维码.jpg b/yudao-admin-vue3/.image/测试二维码.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1447283cdf1b49b51c1204a160e01cb789e957a8 GIT binary patch literal 18385 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 pEwzL`>i*8R__Kv1*C}gmHZq>QI%40h(qzO { + return await request.get({ url: `/trade/distribute-manage/page`, params }) + }, + + // 查询分销员管理详情 + getDistributeManage: async (id: number) => { + return await request.get({ url: `/trade/distribute-manage/get?id=` + id }) + }, + + // 新增分销员管理 + createDistributeManage: async (data: DistributeManageVO) => { + return await request.post({ url: `/trade/distribute-manage/create`, data }) + }, + + // 修改分销员管理 + updateDistributeManage: async (data: DistributeManageVO) => { + return await request.put({ url: `/trade/distribute-manage/update`, data }) + }, + + // 删除分销员管理 + deleteDistributeManage: async (id: number) => { + return await request.delete({ url: `/trade/distribute-manage/delete?id=` + id }) + }, + + // 导出分销员管理 Excel + exportDistributeManage: async (params) => { + return await request.download({ url: `/trade/distribute-manage/export-excel`, params }) + }, +} \ No newline at end of file diff --git a/yudao-admin-vue3/src/views/mall/trade/distributemanage/DistributeManageForm.vue b/yudao-admin-vue3/src/views/mall/trade/distributemanage/DistributeManageForm.vue new file mode 100644 index 0000000..4269924 --- /dev/null +++ b/yudao-admin-vue3/src/views/mall/trade/distributemanage/DistributeManageForm.vue @@ -0,0 +1,141 @@ + + diff --git a/yudao-admin-vue3/src/views/mall/trade/distributemanage/index.vue b/yudao-admin-vue3/src/views/mall/trade/distributemanage/index.vue new file mode 100644 index 0000000..ebdc537 --- /dev/null +++ b/yudao-admin-vue3/src/views/mall/trade/distributemanage/index.vue @@ -0,0 +1,391 @@ + + + diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java index aad6fb4..1c142e2 100644 --- a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java +++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java @@ -90,6 +90,7 @@ public interface ErrorCodeConstants { ErrorCode BROKERAGE_BIND_OVERRIDE = new ErrorCode(1_011_007_006, "已绑定了推广人"); 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 DISTRIBUTE_MANAGE_NOT_EXISTS = new ErrorCode(1_011_007_009, "分销员管理不存在"); // ========== 分销提现 模块 1-011-008-000 ========== ErrorCode BROKERAGE_WITHDRAW_NOT_EXISTS = new ErrorCode(1_011_008_000, "佣金提现记录不存在"); diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/DistributeManageController.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/DistributeManageController.java new file mode 100644 index 0000000..46f3c25 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/DistributeManageController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.trade.controller.admin.distributemanage; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.trade.controller.admin.distributemanage.vo.*; +import cn.iocoder.yudao.module.trade.dal.dataobject.distributemanage.DistributeManageDO; +import cn.iocoder.yudao.module.trade.service.distributemanage.DistributeManageService; + +@Tag(name = "管理后台 - 分销员管理") +@RestController +@RequestMapping("/trade/distribute-manage") +@Validated +public class DistributeManageController { + + @Resource + private DistributeManageService distributeManageService; + + @PostMapping("/create") + @Operation(summary = "创建分销员管理") + @PreAuthorize("@ss.hasPermission('trade:distribute-manage:create')") + public CommonResult createDistributeManage(@Valid @RequestBody DistributeManageSaveReqVO createReqVO) { + return success(distributeManageService.createDistributeManage(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新分销员管理") + @PreAuthorize("@ss.hasPermission('trade:distribute-manage:update')") + public CommonResult updateDistributeManage(@Valid @RequestBody DistributeManageSaveReqVO updateReqVO) { + distributeManageService.updateDistributeManage(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除分销员管理") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('trade:distribute-manage:delete')") + public CommonResult deleteDistributeManage(@RequestParam("id") Long id) { + distributeManageService.deleteDistributeManage(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得分销员管理") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('trade:distribute-manage:query')") + public CommonResult getDistributeManage(@RequestParam("id") Long id) { + DistributeManageDO distributeManage = distributeManageService.getDistributeManage(id); + return success(BeanUtils.toBean(distributeManage, DistributeManageRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得分销员管理分页") + @PreAuthorize("@ss.hasPermission('trade:distribute-manage:query')") + public CommonResult> getDistributeManagePage(@Valid DistributeManagePageReqVO pageReqVO) { + PageResult pageResult = distributeManageService.getDistributeManagePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DistributeManageRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出分销员管理 Excel") + @PreAuthorize("@ss.hasPermission('trade:distribute-manage:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDistributeManageExcel(@Valid DistributeManagePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = distributeManageService.getDistributeManagePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "分销员管理.xls", "数据", DistributeManageRespVO.class, + BeanUtils.toBean(list, DistributeManageRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManagePageReqVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManagePageReqVO.java new file mode 100644 index 0000000..c0ad98b --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManagePageReqVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.trade.controller.admin.distributemanage.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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 DistributeManagePageReqVO extends PageParam { + + @Schema(description = "商品图片") + private String goodImage; + + @Schema(description = "用户信息", example = "姓名: 昵称: 电话:") + private String userInformation; + + @Schema(description = "分销等级", example = "--") + private Integer distributeLevel; + + @Schema(description = "推广订单金额", example = "0.0") + private Double marketingorderMoney; + + @Schema(description = "已提现金额", example = "0.0") + private Double alreadytokenMoney; + + @Schema(description = "未提现金额", example = "0.0") + private Double untokenMoney; + + @Schema(description = "上级推广人") + private String superiorPromoter; + + @Schema(description = "提现次数") + private Integer takeTimes; + + @Schema(description = "佣兵总金额") + private Double mercenarieMoney; + + @Schema(description = "推广用户数量") + private Integer marketinguserNumber; + + @Schema(description = "推广订单数量") + private Integer marketingorderNumber; + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManageRespVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManageRespVO.java new file mode 100644 index 0000000..b0f8206 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManageRespVO.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.trade.controller.admin.distributemanage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 分销员管理 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DistributeManageRespVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29548") + @ExcelProperty("id") + private Long id; + + @Schema(description = "商品图片") + @ExcelProperty("商品图片") + private String goodImage; + + @Schema(description = "用户信息", example = "姓名: 昵称: 电话:") + @ExcelProperty("用户信息") + private String userInformation; + + @Schema(description = "分销等级", example = "--") + @ExcelProperty("分销等级") + private Integer distributeLevel; + + @Schema(description = "推广订单金额", example = "0.0") + @ExcelProperty("推广订单金额") + private Double marketingorderMoney; + + @Schema(description = "已提现金额", example = "0.0") + @ExcelProperty("已提现金额") + private Double alreadytokenMoney; + + @Schema(description = "未提现金额", example = "0.0") + @ExcelProperty("未提现金额") + private Double untokenMoney; + + @Schema(description = "上级推广人") + @ExcelProperty("上级推广人") + private String superiorPromoter; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "提现次数") + @ExcelProperty("提现次数") + private Integer takeTimes; + + @Schema(description = "佣兵总金额") + @ExcelProperty("佣兵总金额") + private Double mercenarieMoney; + + @Schema(description = "推广用户数量") + @ExcelProperty("推广用户数量") + private Integer marketinguserNumber; + + @Schema(description = "推广订单数量") + @ExcelProperty("推广订单数量") + private Integer marketingorderNumber; + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManageSaveReqVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManageSaveReqVO.java new file mode 100644 index 0000000..e6a1dbf --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/distributemanage/vo/DistributeManageSaveReqVO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.trade.controller.admin.distributemanage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 分销员管理新增/修改 Request VO") +@Data +public class DistributeManageSaveReqVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29548") + private Long id; + + @Schema(description = "商品图片") + private String goodImage; + + @Schema(description = "用户信息", example = "姓名: 昵称: 电话:") + private String userInformation; + + @Schema(description = "分销等级", example = "--") + private Integer distributeLevel; + + @Schema(description = "推广订单金额", example = "0.0") + private Double marketingorderMoney; + + @Schema(description = "已提现金额", example = "0.0") + private Double alreadytokenMoney; + + @Schema(description = "未提现金额", example = "0.0") + private Double untokenMoney; + + @Schema(description = "上级推广人") + private String superiorPromoter; + + @Schema(description = "提现次数") + private Integer takeTimes; + + @Schema(description = "佣兵总金额") + private Double mercenarieMoney; + + @Schema(description = "推广用户数量") + private Integer marketinguserNumber; + + @Schema(description = "推广订单数量") + private Integer marketingorderNumber; + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/distributemanage/DistributeManageDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/distributemanage/DistributeManageDO.java new file mode 100644 index 0000000..78e51d3 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/distributemanage/DistributeManageDO.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.trade.dal.dataobject.distributemanage; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 分销员管理 DO + * + * @author 管理员 + */ +@TableName("trade_distribute_manage") +@KeySequence("trade_distribute_manage_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DistributeManageDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 商品图片 + */ + private String goodImage; + /** + * 用户信息 + */ + private String userInformation; + /** + * 分销等级 + */ + private Integer distributeLevel; + /** + * 推广订单金额 + */ + private Double marketingorderMoney; + /** + * 已提现金额 + */ + private Double alreadytokenMoney; + /** + * 未提现金额 + */ + private Double untokenMoney; + /** + * 上级推广人 + */ + private String superiorPromoter; + /** + * 提现次数 + */ + private Integer takeTimes; + /** + * 佣兵总金额 + */ + private Double mercenarieMoney; + /** + * 推广用户数量 + */ + private Integer marketinguserNumber; + /** + * 推广订单数量 + */ + private Integer marketingorderNumber; + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/distributemanage/DistributeManageMapper.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/distributemanage/DistributeManageMapper.java new file mode 100644 index 0000000..6591519 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/distributemanage/DistributeManageMapper.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.trade.dal.mysql.distributemanage; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.trade.dal.dataobject.distributemanage.DistributeManageDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.trade.controller.admin.distributemanage.vo.*; + +/** + * 分销员管理 Mapper + * + * @author 管理员 + */ +@Mapper +public interface DistributeManageMapper extends BaseMapperX { + + default PageResult selectPage(DistributeManagePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DistributeManageDO::getGoodImage, reqVO.getGoodImage()) + .eqIfPresent(DistributeManageDO::getUserInformation, reqVO.getUserInformation()) + .eqIfPresent(DistributeManageDO::getDistributeLevel, reqVO.getDistributeLevel()) + .eqIfPresent(DistributeManageDO::getMarketingorderMoney, reqVO.getMarketingorderMoney()) + .eqIfPresent(DistributeManageDO::getAlreadytokenMoney, reqVO.getAlreadytokenMoney()) + .eqIfPresent(DistributeManageDO::getUntokenMoney, reqVO.getUntokenMoney()) + .eqIfPresent(DistributeManageDO::getSuperiorPromoter, reqVO.getSuperiorPromoter()) + .eqIfPresent(DistributeManageDO::getTakeTimes, reqVO.getTakeTimes()) + .eqIfPresent(DistributeManageDO::getMercenarieMoney, reqVO.getMercenarieMoney()) + .eqIfPresent(DistributeManageDO::getMarketinguserNumber, reqVO.getMarketinguserNumber()) + .eqIfPresent(DistributeManageDO::getMarketingorderNumber, reqVO.getMarketingorderNumber()) + .orderByDesc(DistributeManageDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageService.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageService.java new file mode 100644 index 0000000..dcc836d --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.trade.service.distributemanage; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.trade.controller.admin.distributemanage.vo.*; +import cn.iocoder.yudao.module.trade.dal.dataobject.distributemanage.DistributeManageDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 分销员管理 Service 接口 + * + * @author 管理员 + */ +public interface DistributeManageService { + + /** + * 创建分销员管理 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDistributeManage(@Valid DistributeManageSaveReqVO createReqVO); + + /** + * 更新分销员管理 + * + * @param updateReqVO 更新信息 + */ + void updateDistributeManage(@Valid DistributeManageSaveReqVO updateReqVO); + + /** + * 删除分销员管理 + * + * @param id 编号 + */ + void deleteDistributeManage(Long id); + + /** + * 获得分销员管理 + * + * @param id 编号 + * @return 分销员管理 + */ + DistributeManageDO getDistributeManage(Long id); + + /** + * 获得分销员管理分页 + * + * @param pageReqVO 分页查询 + * @return 分销员管理分页 + */ + PageResult getDistributeManagePage(DistributeManagePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageServiceImpl.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageServiceImpl.java new file mode 100644 index 0000000..cd77965 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.trade.service.distributemanage; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.trade.controller.admin.distributemanage.vo.*; +import cn.iocoder.yudao.module.trade.dal.dataobject.distributemanage.DistributeManageDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.trade.dal.mysql.distributemanage.DistributeManageMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; + +/** + * 分销员管理 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class DistributeManageServiceImpl implements DistributeManageService { + + @Resource + private DistributeManageMapper distributeManageMapper; + + @Override + public Long createDistributeManage(DistributeManageSaveReqVO createReqVO) { + // 插入 + DistributeManageDO distributeManage = BeanUtils.toBean(createReqVO, DistributeManageDO.class); + distributeManageMapper.insert(distributeManage); + // 返回 + return distributeManage.getId(); + } + + @Override + public void updateDistributeManage(DistributeManageSaveReqVO updateReqVO) { + // 校验存在 + validateDistributeManageExists(updateReqVO.getId()); + // 更新 + DistributeManageDO updateObj = BeanUtils.toBean(updateReqVO, DistributeManageDO.class); + distributeManageMapper.updateById(updateObj); + } + + @Override + public void deleteDistributeManage(Long id) { + // 校验存在 + validateDistributeManageExists(id); + // 删除 + distributeManageMapper.deleteById(id); + } + + private void validateDistributeManageExists(Long id) { + if (distributeManageMapper.selectById(id) == null) { + throw exception(DISTRIBUTE_MANAGE_NOT_EXISTS); + } + } + + @Override + public DistributeManageDO getDistributeManage(Long id) { + return distributeManageMapper.selectById(id); + } + + @Override + public PageResult getDistributeManagePage(DistributeManagePageReqVO pageReqVO) { + return distributeManageMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/resources/mapper/distributemanage/DistributeManageMapper.xml b/yudao-module-mall/yudao-module-trade-biz/src/main/resources/mapper/distributemanage/DistributeManageMapper.xml new file mode 100644 index 0000000..fd5edc2 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/resources/mapper/distributemanage/DistributeManageMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageServiceImplTest.java b/yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageServiceImplTest.java new file mode 100644 index 0000000..5b168f2 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/distributemanage/DistributeManageServiceImplTest.java @@ -0,0 +1,170 @@ +package cn.iocoder.yudao.module.trade.service.distributemanage; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; + +import cn.iocoder.yudao.module.trade.controller.admin.distributemanage.vo.*; +import cn.iocoder.yudao.module.trade.dal.dataobject.distributemanage.DistributeManageDO; +import cn.iocoder.yudao.module.trade.dal.mysql.distributemanage.DistributeManageMapper; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*; +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link DistributeManageServiceImpl} 的单元测试类 + * + * @author 管理员 + */ +@Import(DistributeManageServiceImpl.class) +public class DistributeManageServiceImplTest extends BaseDbUnitTest { + + @Resource + private DistributeManageServiceImpl distributeManageService; + + @Resource + private DistributeManageMapper distributeManageMapper; + + @Test + public void testCreateDistributeManage_success() { + // 准备参数 + DistributeManageSaveReqVO createReqVO = randomPojo(DistributeManageSaveReqVO.class).setId(null); + + // 调用 + Long distributeManageId = distributeManageService.createDistributeManage(createReqVO); + // 断言 + assertNotNull(distributeManageId); + // 校验记录的属性是否正确 + DistributeManageDO distributeManage = distributeManageMapper.selectById(distributeManageId); + assertPojoEquals(createReqVO, distributeManage, "id"); + } + + @Test + public void testUpdateDistributeManage_success() { + // mock 数据 + DistributeManageDO dbDistributeManage = randomPojo(DistributeManageDO.class); + distributeManageMapper.insert(dbDistributeManage);// @Sql: 先插入出一条存在的数据 + // 准备参数 + DistributeManageSaveReqVO updateReqVO = randomPojo(DistributeManageSaveReqVO.class, o -> { + o.setId(dbDistributeManage.getId()); // 设置更新的 ID + }); + + // 调用 + distributeManageService.updateDistributeManage(updateReqVO); + // 校验是否更新正确 + DistributeManageDO distributeManage = distributeManageMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, distributeManage); + } + + @Test + public void testUpdateDistributeManage_notExists() { + // 准备参数 + DistributeManageSaveReqVO updateReqVO = randomPojo(DistributeManageSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> distributeManageService.updateDistributeManage(updateReqVO), DISTRIBUTE_MANAGE_NOT_EXISTS); + } + + @Test + public void testDeleteDistributeManage_success() { + // mock 数据 + DistributeManageDO dbDistributeManage = randomPojo(DistributeManageDO.class); + distributeManageMapper.insert(dbDistributeManage);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbDistributeManage.getId(); + + // 调用 + distributeManageService.deleteDistributeManage(id); + // 校验数据不存在了 + assertNull(distributeManageMapper.selectById(id)); + } + + @Test + public void testDeleteDistributeManage_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> distributeManageService.deleteDistributeManage(id), DISTRIBUTE_MANAGE_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetDistributeManagePage() { + // mock 数据 + DistributeManageDO dbDistributeManage = randomPojo(DistributeManageDO.class, o -> { // 等会查询到 + o.setGoodImage(null); + o.setUserInformation(null); + o.setDistributeLevel(null); + o.setMarketingorderMoney(null); + o.setAlreadytokenMoney(null); + o.setUntokenMoney(null); + o.setSuperiorPromoter(null); + o.setTakeTimes(null); + o.setMercenarieMoney(null); + o.setMarketinguserNumber(null); + o.setMarketingorderNumber(null); + }); + distributeManageMapper.insert(dbDistributeManage); + // 测试 goodImage 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setGoodImage(null))); + // 测试 userInformation 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setUserInformation(null))); + // 测试 distributeLevel 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setDistributeLevel(null))); + // 测试 marketingorderMoney 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setMarketingorderMoney(null))); + // 测试 alreadytokenMoney 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setAlreadytokenMoney(null))); + // 测试 untokenMoney 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setUntokenMoney(null))); + // 测试 superiorPromoter 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setSuperiorPromoter(null))); + // 测试 takeTimes 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setTakeTimes(null))); + // 测试 mercenarieMoney 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setMercenarieMoney(null))); + // 测试 marketinguserNumber 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setMarketinguserNumber(null))); + // 测试 marketingorderNumber 不匹配 + distributeManageMapper.insert(cloneIgnoreId(dbDistributeManage, o -> o.setMarketingorderNumber(null))); + // 准备参数 + DistributeManagePageReqVO reqVO = new DistributeManagePageReqVO(); + reqVO.setGoodImage(null); + reqVO.setUserInformation(null); + reqVO.setDistributeLevel(null); + reqVO.setMarketingorderMoney(null); + reqVO.setAlreadytokenMoney(null); + reqVO.setUntokenMoney(null); + reqVO.setSuperiorPromoter(null); + reqVO.setTakeTimes(null); + reqVO.setMercenarieMoney(null); + reqVO.setMarketinguserNumber(null); + reqVO.setMarketingorderNumber(null); + + // 调用 + PageResult pageResult = distributeManageService.getDistributeManagePage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbDistributeManage, pageResult.getList().get(0)); + } + +} \ No newline at end of file