浏览代码

1、增加兑换模块
2、优化企业申请注册逻辑

rayson 9 月之前
父节点
当前提交
34940044a9
共有 35 个文件被更改,包括 1077 次插入89 次删除
  1. 14 4
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  2. 2 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/account/PointBizTypeEnum.java
  3. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/redeem/RedeemController.java
  4. 12 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/enterprise/AppEnterpriseUserBindController.java
  5. 15 9
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/enterprise/vo/register/AppEnterpriseRegisterReqVO.java
  6. 51 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/redeem/AppRedeemController.java
  7. 44 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/redeem/vo/AppRedeemRespVO.java
  8. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/redeem/vo/AppRedeemSubmitReqVO.java
  9. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/enterprise/vo/AppRecruitEnterpriseSaveReqVO.java
  10. 30 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/contact/EnterpriseRegisterContactsReqVO.java
  11. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterAuditReqVO.java
  12. 15 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterPageReqVO.java
  13. 22 13
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterRespVO.java
  14. 16 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterSaveReqVO.java
  15. 52 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/redeem/RedeemPageReqVO.java
  16. 64 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/redeem/RedeemRespVO.java
  17. 54 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/redeem/RedeemSaveReqVO.java
  18. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseDO.java
  19. 14 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseRegisterDO.java
  20. 73 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/redeem/RedeemDO.java
  21. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/MdeUserDO.java
  22. 0 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseRegisterMapper.java
  23. 34 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/redeem/RedeemMapper.java
  24. 5 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseService.java
  25. 5 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java
  26. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java
  27. 3 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindServiceImpl.java
  28. 46 20
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/register/EnterpriseRegisterServiceImpl.java
  29. 61 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/redeem/RedeemService.java
  30. 98 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/redeem/RedeemServiceImpl.java
  31. 9 1
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  32. 9 1
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties
  33. 156 0
      menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/redeem/RedeemServiceImplTest.java
  34. 2 1
      menduner/menduner-system-biz/src/test/resources/sql/clean.sql
  35. 21 1
      menduner/menduner-system-biz/src/test/resources/sql/create_tables.sql

+ 14 - 4
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -216,8 +216,8 @@ public interface ErrorCodeConstants {
             new ErrorCode(1_100_021_003, "企业注册申请已审批通过,无法拒绝");
 
     ErrorCode MDE_ENTERPRISE_REGISTER_NAME_NOT_NULL = new ErrorCode(1_100_021_004, "企业名称不能为空");
-    ErrorCode MDE_ENTERPRISE_REGISTER_PHONE_NOT_NULL = new ErrorCode(1_100_021_005, "联系电话不能为空");
-    ErrorCode MDE_ENTERPRISE_REGISTER_EMAIL_NOT_NULL = new ErrorCode(1_100_021_006, "联系邮箱不能为空");
+    ErrorCode MDE_ENTERPRISE_REGISTER_PHONE_NOT_NULL = new ErrorCode(1_100_021_005, "管理员联系电话不能为空");
+    ErrorCode MDE_ENTERPRISE_REGISTER_EMAIL_NOT_NULL = new ErrorCode(1_100_021_006, "管理员联系邮箱不能为空");
     ErrorCode MDE_ENTERPRISE_REGISTER_BUSINESS_LICENSE_URL_NOT_NULL =
             new ErrorCode(1_100_021_007, "未上传营业执照");
 
@@ -237,14 +237,13 @@ public interface ErrorCodeConstants {
             = new ErrorCode(1_100_021_012, "统一社会信用代码已被注册");
 
 
-    ErrorCode MDE_ENTERPRISE_REGISTER_CONTACT_NAME_NOT_NULL = new ErrorCode(1_100_021_013, "联系人名称不能为空");
+    ErrorCode MDE_ENTERPRISE_REGISTER_CONTACT_NAME_NOT_NULL = new ErrorCode(1_100_021_013, "管理员名称不能为空");
 
     ErrorCode MDE_ENTERPRISE_REGISTER_PASSWORD_NOT_NULL = new ErrorCode(1_100_021_014, "密码不能为空");
     ErrorCode MDE_ENTERPRISE_REGISTER_PASSWORD_LENGTH = new ErrorCode(1_100_021_015, "密码长度为 8-16 位");
 
     ErrorCode MDE_ENTERPRISE_REGISTER_STATUS_APPLYING = new ErrorCode(1_100_021_016, "企业注册申请中");
 
-
     ErrorCode MDE_ENTERPRISE_REGISTER_EMAIL_DUPLICATE = new ErrorCode(1_100_021_017, "该邮箱已被其他企业注册");
 
     // ========== 企业地址 1_100_022_001 ==========
@@ -487,4 +486,15 @@ public interface ErrorCodeConstants {
 
     // ========== 品牌 1_100_048_000 ==========
     ErrorCode BRAND_NOT_EXISTS = new ErrorCode(1_100_048_001, "品牌不存在");
+
+    // ========== 兑换 1_100_049_000 ==========
+    ErrorCode REDEEM_NOT_EXISTS = new ErrorCode(1_100_049_001, "兑换不存在");
+
+    ErrorCode REDEEM_NAME_NOT_NULL = new ErrorCode(1_100_049_002, "商品名不能为空");
+    ErrorCode REDEEM_URL_NOT_NULL = new ErrorCode(1_100_049_003, "商品图片地址不能为空");
+    ErrorCode REDEEM_POINT_NOT_NULL = new ErrorCode(1_100_049_004, "兑换积分不能为空");
+    ErrorCode REDEEM_CONTACT_NAME_NOT_NULL = new ErrorCode(1_100_049_005, "联系人姓名不能为空");
+    ErrorCode REDEEM_CONTACT_PHONE_NOT_NULL = new ErrorCode(1_100_049_006, "联系电话不能为空");
+    ErrorCode REDEEM_TYPE_NOT_NULL = new ErrorCode(1_100_049_007, "商品类型不能为空");
+
 }

+ 2 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/account/PointBizTypeEnum.java

@@ -24,9 +24,11 @@ public enum PointBizTypeEnum {
     DELIVERY_PERSON(6, "投递人", "投递人,获得 {}", true),
     GIFT(7, "赠与", "赠与,获得 {}", true),
     NOT_RECOMMENDED(8,"无推荐人,推荐人佣金给到平台","推荐职位,获得 {}",true),
+    REDEEM(9, "积分兑换", "兑换,扣除 {} 积分", false),
     SIGN(98, "签到", "签到获得 {} 积分", true),
     EVENT(99, "事件跟踪", "访问[{}],{}{} 积分", true),
     RECOMMEND_TASK(100, "完成任务", "[{}],{}{} 积分", true),
+
     ;
 
     /**

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/redeem/RedeemController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.redeem;
+
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemPageReqVO;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemRespVO;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.redeem.RedeemDO;
+import com.citu.module.menduner.system.service.redeem.RedeemService;
+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.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 兑换")
+@RestController
+@RequestMapping("/menduner/system/redeem")
+@Validated
+public class RedeemController {
+
+    @Resource
+    private RedeemService redeemService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建兑换")
+    @PreAuthorize("@ss.hasPermission('menduner:system:redeem:create')")
+    public CommonResult<Long> createRedeem(@Valid @RequestBody RedeemSaveReqVO createReqVO) {
+        return success(redeemService.createRedeem(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新兑换")
+    @PreAuthorize("@ss.hasPermission('menduner:system:redeem:update')")
+    public CommonResult<Boolean> updateRedeem(@Valid @RequestBody RedeemSaveReqVO updateReqVO) {
+        redeemService.updateRedeem(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除兑换")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:redeem:delete')")
+    public CommonResult<Boolean> deleteRedeem(@RequestParam("id") Long id) {
+        redeemService.deleteRedeem(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得兑换")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:redeem:query')")
+    public CommonResult<RedeemRespVO> getRedeem(@RequestParam("id") Long id) {
+        RedeemDO redeem = redeemService.getRedeem(id);
+        return success(BeanUtils.toBean(redeem, RedeemRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得兑换分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:redeem:query')")
+    public CommonResult<PageResult<RedeemRespVO>> getRedeemPage(@Valid RedeemPageReqVO pageReqVO) {
+        PageResult<RedeemDO> pageResult = redeemService.getRedeemPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, RedeemRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出兑换 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:redeem:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportRedeemExcel(@Valid RedeemPageReqVO pageReqVO,
+                                  HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<RedeemDO> list = redeemService.getRedeemPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "兑换.xls", "数据", RedeemRespVO.class,
+                BeanUtils.toBean(list, RedeemRespVO.class));
+    }
+
+}

+ 12 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/enterprise/AppEnterpriseUserBindController.java

@@ -3,9 +3,12 @@ package com.citu.module.menduner.system.controller.app.jobhunt.enterprise;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppEnterpriseUserBindRespVO;
+import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
+import com.citu.module.menduner.system.service.user.MdeUserService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -13,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.Collections;
 import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
@@ -26,6 +30,8 @@ public class AppEnterpriseUserBindController {
     @Resource
     private EnterpriseUserBindService enterpriseUserBindService;
 
+    @Resource
+    private MdeUserService mdeUserService;
 
     @PreAuthenticated
     @GetMapping("/get/enterprise/list")
@@ -39,7 +45,12 @@ public class AppEnterpriseUserBindController {
     @Operation(summary = "根据手机号获取用户绑定的企业列表")
     public CommonResult<List<AppEnterpriseUserBindRespVO>> getBindListByPhone
             (@RequestParam("phone") String phone) {
-        return success(enterpriseUserBindService.getBindListByPhone(phone));
+        MdeUserDO user = mdeUserService.getUserByPhone(phone);
+        if (null == user) {
+            // 返回空列表,方便前端跳注册申请页面
+            return success(Collections.emptyList());
+        }
+        return success(enterpriseUserBindService.getBindListByUserId(user.getId()));
 
     }
 

+ 15 - 9
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/enterprise/vo/register/AppEnterpriseRegisterReqVO.java

@@ -1,38 +1,44 @@
 package com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.register;
 
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
+import com.citu.module.menduner.system.controller.base.contact.EnterpriseRegisterContactsReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
-import org.hibernate.validator.constraints.Length;
 
+import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
+import java.util.List;
 
 @Schema(description = "menduner - 企业申请注册 Request VO")
 @Data
 public class AppEnterpriseRegisterReqVO {
 
+
+
     @NotBlank(message = "{1_100_021_004}")
     @Schema(description = "企业名称", example = "xx公司")
     private String name;
 
+    @Schema(description = "企业别称", example = "xx科技")
+    private String anotherName;
+
     @NotBlank(message = "{1_100_021_013}")
-    @Schema(description = "联系人名称", example = "张三")
+    @Schema(description = "管理员名称", example = "张三")
     private String contactName;
 
     @NotBlank(message = "{1_100_021_005}")
-    @Schema(description = "联系电话")
+    @Schema(description = "管理员联系电话")
     private String phone;
 
     @NotBlank(message = "{1_100_021_006}")
-    @Schema(description = "企业邮箱")
+    @Schema(description = "管理员企业邮箱")
     private String email;
 
-    @Schema(description = "新密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "buzhidao")
-    @NotEmpty(message = "{1_100_021_014}")
-    @Length(min = 8, max = 16, message = "{1_100_021_015}")
-    private String password;
+    @Valid
+    @Schema(description = "联系人用户(包含管理员)")
+    private List<EnterpriseRegisterContactsReqVO> contacts;
 
     @Schema(description = "说明")
     private String description;

+ 51 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/redeem/AppRedeemController.java

@@ -0,0 +1,51 @@
+package com.citu.module.menduner.system.controller.app.jobhunt.redeem;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.common.util.LoginUserContext;
+import com.citu.module.menduner.system.controller.app.jobhunt.redeem.vo.AppRedeemRespVO;
+import com.citu.module.menduner.system.controller.app.jobhunt.redeem.vo.AppRedeemSubmitReqVO;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemPageReqVO;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemRespVO;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.redeem.RedeemDO;
+import com.citu.module.menduner.system.service.redeem.RedeemService;
+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 com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "求职端 - 兑换")
+@RestController
+@RequestMapping("/menduner/system/redeem")
+@Validated
+public class AppRedeemController {
+
+    @Resource
+    private RedeemService redeemService;
+
+    @PreAuthenticated
+    @PostMapping("/submit")
+    @Operation(summary = "兑换提交")
+    public CommonResult<Boolean> submit(@Valid @RequestBody AppRedeemSubmitReqVO reqVO) {
+        redeemService.submit(reqVO);
+        return success(true);
+    }
+
+    @PreAuthenticated
+    @GetMapping("/page")
+    @Operation(summary = "获取兑换记录")
+    public CommonResult<PageResult<AppRedeemRespVO>> getRedeemPage(@Valid RedeemPageReqVO pageReqVO) {
+        pageReqVO.setUserId(LoginUserContext.getUserId());
+        PageResult<RedeemDO> pageResult = redeemService.getRedeemPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, AppRedeemRespVO.class));
+    }
+}

+ 44 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/redeem/vo/AppRedeemRespVO.java

@@ -0,0 +1,44 @@
+package com.citu.module.menduner.system.controller.app.jobhunt.redeem.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.time.LocalDateTime;
+
+@Schema(description = "求职端 - 兑换 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class AppRedeemRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22593")
+    private Long id;
+
+    @Schema(description = "商品类型")
+    private String type;
+
+    @Schema(description = "商品名", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+    private String name;
+
+    @Schema(description = "url", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
+    private String url;
+
+    @Schema(description = "兑换积分", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Integer point;
+
+    @Schema(description = "联系人姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    private String contactName;
+
+    @Schema(description = "联系地址")
+    private String contactAddress;
+
+    @Schema(description = "联系电话", requiredMode = Schema.RequiredMode.REQUIRED)
+    private String contactPhone;
+
+    @Schema(description = "状态", example = "1")
+    private String status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime createTime;
+}

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/redeem/vo/AppRedeemSubmitReqVO.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.controller.app.jobhunt.redeem.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "求职端 - 兑换提交 Request VO")
+@Data
+public class AppRedeemSubmitReqVO {
+
+    @NotEmpty(message = "{1_100_049_007}")
+    @Schema(description = "商品类型")
+    private String type;
+
+    @Schema(description = "商品名", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+    @NotEmpty(message = "{1_100_049_002}")
+    private String name;
+
+    @Schema(description = "url", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
+    @NotEmpty(message = "{1_100_049_003}")
+    private String url;
+
+    @Schema(description = "兑换积分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "{1_100_049_004}")
+    private Integer point;
+
+    @Schema(description = "联系人姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    @NotEmpty(message = "{1_100_049_005}")
+    private String contactName;
+
+    @Schema(description = "联系地址")
+    private String contactAddress;
+
+    @Schema(description = "联系电话", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "{1_100_049_006}")
+    private String contactPhone;
+}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/enterprise/vo/AppRecruitEnterpriseSaveReqVO.java

@@ -39,7 +39,7 @@ public class AppRecruitEnterpriseSaveReqVO {
     @Schema(description = "所在行业", example = "16657")
     private Long industryId;
 
-    @NotBlank(message = "{1_100_019_007}")
+//    @NotBlank(message = "{1_100_019_007}")
     @Schema(description = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)", example = "2")
     private String financingStatus;
 

+ 30 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/contact/EnterpriseRegisterContactsReqVO.java

@@ -0,0 +1,30 @@
+package com.citu.module.menduner.system.controller.base.contact;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+
+@Schema(description = "menduner - 企业注册申请联系人 Request VO")
+@Data
+public class EnterpriseRegisterContactsReqVO {
+
+    @NotBlank(message = "{1_100_021_013}")
+    @Schema(description = "联系人名称", example = "张三")
+    private String contactName;
+
+    @NotBlank(message = "{1_100_021_005}")
+    @Schema(description = "联系电话")
+    private String phone;
+
+    @NotBlank(message = "{1_100_021_006}")
+    @Schema(description = "企业邮箱")
+    private String email;
+
+    @Schema(description = "新密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "buzhidao")
+    @NotEmpty(message = "{1_100_021_014}")
+    @Length(min = 8, max = 16, message = "{1_100_021_015}")
+    private String password;
+}

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterAuditReqVO.java

@@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 @Schema(description = "企业注册审核 Request VO")
 @Data
@@ -15,4 +16,7 @@ public class EnterpriseRegisterAuditReqVO {
 
     @Schema(description = "原因")
     private String reason;
+
+    @Schema(description = "允许企业发布哪些职位类型")
+    private List<String> pubJobTypePerm;
 }

+ 15 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterPageReqVO.java

@@ -2,11 +2,13 @@ package com.citu.module.menduner.system.controller.base.enterprise.register;
 
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.citu.module.menduner.system.controller.base.contact.EnterpriseRegisterContactsReqVO;
 import lombok.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import com.citu.framework.common.pojo.PageParam;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
+import java.util.List;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
@@ -22,20 +24,27 @@ public class EnterpriseRegisterPageReqVO extends PageParam {
     @Schema(description = "企业名称", example = "芋艿")
     private String name;
 
-    @Schema(description = "联系人姓名", example = "芋艿")
+    @Schema(description = "企业别称", example = "xx科技")
+    private String anotherName;
+
+    @Schema(description = "管理员姓名", example = "芋艿")
     private String contactName;
 
+    @Schema(description = "管理员电话")
+    private String phone;
+
+    @Schema(description = "管理员邮箱")
+    private String email;
+
+    @Schema(description = "联系人用户")
+    private List<EnterpriseRegisterContactsReqVO> contacts;
+
     @Schema(description = "是否筹备")
     private Boolean prepare;
 
     @Schema(description = "说明")
     private String description;
 
-    @Schema(description = "联系电话")
-    private String phone;
-
-    @Schema(description = "联系邮箱")
-    private String email;
 
     @Schema(description = "统一社会信用代码")
     private String code;

+ 22 - 13
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterRespVO.java

@@ -4,14 +4,20 @@ package com.citu.module.menduner.system.controller.base.enterprise.register;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
+import com.citu.module.menduner.system.controller.base.contact.EnterpriseRegisterContactsReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import java.time.LocalDateTime;
+import java.util.List;
+
 import com.alibaba.excel.annotation.*;
 import com.citu.framework.excel.core.annotations.DictFormat;
 import com.citu.framework.excel.core.convert.DictConvert;
 
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+
 import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_STATUS;
 
 @Schema(description = "企业注册申请 Response VO")
@@ -31,10 +37,24 @@ public class EnterpriseRegisterRespVO {
     @ExcelProperty("企业名称")
     private String name;
 
-    @Schema(description = "联系人姓名", example = "芋艿")
-    @ExcelProperty("联系人姓名")
+    @Schema(description = "企业别称", example = "xx科技")
+    private String anotherName;
+
+    @Schema(description = "管理员姓名", example = "芋艿")
+    @ExcelProperty("管理员姓名")
     private String contactName;
 
+    @Schema(description = "管理员电话")
+    @ExcelProperty("管理员电话")
+    private String phone;
+
+    @Schema(description = "管理员邮箱")
+    @ExcelProperty("管理员邮箱")
+    private String email;
+
+    @Schema(description = "联系人用户")
+    private List<EnterpriseRegisterContactsReqVO> contacts;
+
     @Schema(description = "是否筹备")
     @ExcelProperty("是否筹备")
     private Boolean prepare;
@@ -43,17 +63,6 @@ public class EnterpriseRegisterRespVO {
     @ExcelProperty("说明")
     private String description;
 
-    @Schema(description = "联系电话")
-    @ExcelProperty("联系电话")
-    private String phone;
-
-    @Schema(description = "联系邮箱")
-    @ExcelProperty("联系邮箱")
-    private String email;
-
-    @Schema(description = "密码")
-    @ExcelProperty("密码")
-    private String password;
 
     @Schema(description = "统一社会信用代码")
     @ExcelProperty("统一社会信用代码")

+ 16 - 7
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterSaveReqVO.java

@@ -1,11 +1,14 @@
 package com.citu.module.menduner.system.controller.base.enterprise.register;
 
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
+import com.citu.module.menduner.system.controller.base.contact.EnterpriseRegisterContactsReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
+import java.util.List;
 
 @Schema(description = "企业注册申请新增/修改 Request VO")
 @Data
@@ -20,21 +23,27 @@ public class EnterpriseRegisterSaveReqVO {
     @Schema(description = "企业名称", example = "芋艿")
     private String name;
 
-    @Schema(description = "联系人姓名", example = "芋艿")
+    @Schema(description = "企业别称", example = "xx科技")
+    private String anotherName;
+
+    @Schema(description = "管理员姓名", example = "芋艿")
     private String contactName;
 
+    @Schema(description = "管理员电话")
+    private String phone;
+
+    @Schema(description = "管理员邮箱")
+    private String email;
+
+    @Schema(description = "联系人用户")
+    private List<EnterpriseRegisterContactsReqVO> contacts;
+
     @Schema(description = "是否筹备")
     private Boolean prepare;
 
     @Schema(description = "说明")
     private String description;
 
-    @Schema(description = "联系电话")
-    private String phone;
-
-    @Schema(description = "联系邮箱")
-    private String email;
-
     @Schema(description = "统一社会信用代码")
     private String code;
 

+ 52 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/redeem/RedeemPageReqVO.java

@@ -0,0 +1,52 @@
+package com.citu.module.menduner.system.controller.base.redeem;
+
+
+import com.citu.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 com.citu.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 RedeemPageReqVO extends PageParam {
+
+    @Schema(description = "商品类型")
+    private String type;
+
+    @Schema(description = "商品名", example = "李四")
+    private String name;
+
+    @Schema(description = "url", example = "https://www.iocoder.cn")
+    private String url;
+
+    @Schema(description = "用户id", example = "23516")
+    private Long userId;
+
+    @Schema(description = "联系人姓名", example = "张三")
+    private String contactName;
+
+    @Schema(description = "联系地址")
+    private String contactAddress;
+
+    @Schema(description = "联系电话")
+    private String contactPhone;
+
+    @Schema(description = "状态", example = "1")
+    private String status;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 64 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/redeem/RedeemRespVO.java

@@ -0,0 +1,64 @@
+package com.citu.module.menduner.system.controller.base.redeem;
+
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 兑换 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class RedeemRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22593")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "商品类型")
+    @ExcelProperty("商品类型")
+    private String type;
+
+    @Schema(description = "商品名", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+    @ExcelProperty("商品名")
+    private String name;
+
+    @Schema(description = "url", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
+    @ExcelProperty("url")
+    private String url;
+
+    @Schema(description = "兑换积分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("兑换积分")
+    private Integer point;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23516")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "联系人姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    @ExcelProperty("联系人姓名")
+    private String contactName;
+
+    @Schema(description = "联系地址")
+    @ExcelProperty("联系地址")
+    private String contactAddress;
+
+    @Schema(description = "联系电话", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("联系电话")
+    private String contactPhone;
+
+    @Schema(description = "状态", example = "1")
+    @ExcelProperty("状态")
+    private String status;
+
+    @Schema(description = "备注", example = "随便")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 54 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/redeem/RedeemSaveReqVO.java

@@ -0,0 +1,54 @@
+package com.citu.module.menduner.system.controller.base.redeem;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 兑换新增/修改 Request VO")
+@Data
+public class RedeemSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22593")
+    private Long id;
+
+    @NotEmpty(message = "{1_100_049_007}")
+    @Schema(description = "商品类型")
+    private String type;
+
+    @Schema(description = "商品名", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+    @NotEmpty(message = "{1_100_049_002}")
+    private String name;
+
+    @Schema(description = "url", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
+    @NotEmpty(message = "{1_100_049_003}")
+    private String url;
+
+    @Schema(description = "兑换积分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "{1_100_049_004}")
+    private Integer point;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23516")
+    @NotNull(message = "{1_099_000_006}")
+    private Long userId;
+
+    @Schema(description = "联系人姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    @NotEmpty(message = "{1_100_049_005}")
+    private String contactName;
+
+    @Schema(description = "联系地址")
+    private String contactAddress;
+
+    @Schema(description = "联系电话", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "{1_100_049_006}")
+    private String contactPhone;
+
+    @Schema(description = "状态", example = "1")
+    private String status;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+}

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseDO.java

@@ -134,9 +134,15 @@ public class EnterpriseDO extends TenantBaseDO {
      * vip过期时间
      */
     private LocalDateTime vipExpireDate;
+    /**
+     * 允许发布哪些职位类型
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> pubJobTypePerm;
     /**
      * 帐号状态(0正常 1停用)
      **/
     private String status;
 
+
 }

+ 14 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseRegisterDO.java

@@ -5,9 +5,13 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
+import com.citu.module.menduner.system.controller.base.contact.EnterpriseRegisterContactsReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
 /**
  * 企业注册申请 DO
  *
@@ -37,21 +41,26 @@ public class EnterpriseRegisterDO extends TenantBaseDO {
      */
     private String name;
     /**
-     * 联系人名称
+     * 企业名称
+     */
+    private String anotherName;
+    /**
+     * 管理员姓名
      */
     private String contactName;
     /**
-     * 联系电话
+     * 管理员联系电话
      */
     private String phone;
     /**
-     * 联系邮箱
+     * 管理员企业邮箱
      */
     private String email;
     /**
-     * 登录密码
+     * 企业用户
      */
-    private String password;
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<EnterpriseRegisterContactsReqVO> contacts;
     /**
      * 是否筹备
      */

+ 73 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/redeem/RedeemDO.java

@@ -0,0 +1,73 @@
+package com.citu.module.menduner.system.dal.dataobject.redeem;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * 兑换 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_redeem")
+@KeySequence("mde_redeem_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class RedeemDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 类型(0虚拟商品,1实物商品)
+     */
+    private String type;
+    /**
+     * 商品名
+     */
+    private String name;
+    /**
+     * url
+     */
+    private String url;
+    /**
+     * 兑换积分
+     */
+    private Integer point;
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 联系人姓名
+     */
+    private String contactName;
+    /**
+     * 联系地址
+     */
+    private String contactAddress;
+    /**
+     * 联系电话
+     */
+    private String contactPhone;
+    /**
+     * 状态
+     */
+    private String status;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/MdeUserDO.java

@@ -49,6 +49,10 @@ public class MdeUserDO extends TenantBaseDO {
      * 头像地址
      */
     private String avatar;
+    /**
+     * 邀请码,用户id
+     */
+    private String inviteCode;
     /**
      * 帐号状态(0正常 1停用)
      * <p>

+ 0 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseRegisterMapper.java

@@ -21,8 +21,6 @@ public interface EnterpriseRegisterMapper extends BaseMapperX<EnterpriseRegister
         return selectPage(reqVO, new LambdaQueryWrapperX<EnterpriseRegisterDO>()
                 .eqIfPresent(EnterpriseRegisterDO::getUserId, reqVO.getUserId())
                 .likeIfPresent(EnterpriseRegisterDO::getName, reqVO.getName())
-                .likeIfPresent(EnterpriseRegisterDO::getPhone, reqVO.getPhone())
-                .likeIfPresent(EnterpriseRegisterDO::getEmail, reqVO.getEmail())
                 .eqIfPresent(EnterpriseRegisterDO::getStatus, reqVO.getStatus())
                 .betweenIfPresent(EnterpriseRegisterDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(EnterpriseRegisterDO::getUpdateTime));

+ 34 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/redeem/RedeemMapper.java

@@ -0,0 +1,34 @@
+package com.citu.module.menduner.system.dal.mysql.redeem;
+
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.redeem.RedeemDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 兑换 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface RedeemMapper extends BaseMapperX<RedeemDO> {
+
+    default PageResult<RedeemDO> selectPage(RedeemPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<RedeemDO>()
+                .eqIfPresent(RedeemDO::getType, reqVO.getType())
+                .likeIfPresent(RedeemDO::getName, reqVO.getName())
+                .eqIfPresent(RedeemDO::getUrl, reqVO.getUrl())
+                .eqIfPresent(RedeemDO::getUserId, reqVO.getUserId())
+                .likeIfPresent(RedeemDO::getContactName, reqVO.getContactName())
+                .likeIfPresent(RedeemDO::getContactAddress, reqVO.getContactAddress())
+                .likeIfPresent(RedeemDO::getContactPhone, reqVO.getContactPhone())
+                .eqIfPresent(RedeemDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(RedeemDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(RedeemDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(RedeemDO::getId));
+    }
+
+}

+ 5 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseService.java

@@ -120,11 +120,15 @@ public interface EnterpriseService {
      * 更新企业父企业
      *
      * @param name 企业名称
+     * @param anotherName 企业别称
+     * @param pubJobTypePerm 发布职位类型权限
      * @param contactName 联系人名称
      * @param phone 联系电话
      * @param prepare 是否筹备
      */
-    Long createSimpleEnterprise(String name,String contactName, String phone,Boolean prepare);
+    Long createSimpleEnterprise(String name,String anotherName,
+                                List<String> pubJobTypePerm,
+                                String contactName, String phone,Boolean prepare);
     // ========== 求职端 ==========
     /**
      * 点击执行埋点

+ 5 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java

@@ -11,7 +11,6 @@ import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.api.python.GraphSendDTO;
 import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppEnterpriseClickReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppEnterpriseDetailRespVO;
-import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppEnterpriseSearchPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.enterprise.vo.*;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.enterprise.vo.*;
@@ -29,7 +28,6 @@ import com.citu.module.menduner.system.enums.visits.MdeVisitsEnum;
 import com.citu.module.menduner.system.mq.producer.ESProducer;
 import com.citu.module.menduner.system.mq.producer.GraphProducer;
 import com.citu.module.menduner.system.mq.producer.MdeVisitsProducer;
-import com.citu.module.menduner.system.service.area.AreaService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
@@ -204,14 +202,17 @@ public class EnterpriseServiceImpl implements EnterpriseService {
             RedisKeyConstants.MDE_ENTERPRISE_TREE,
             RedisKeyConstants.ENTERPRISE_CHILDREN_IDS
     }, allEntries = true)
-    public Long createSimpleEnterprise(String name, String contactName, String phone, Boolean prepare) {
+    public Long createSimpleEnterprise(String name, String anotherName,
+                                       List<String> pubJobTypePerm,
+                                       String contactName, String phone, Boolean prepare) {
         EnterpriseDO enterprise = new EnterpriseDO();
         enterprise.setName(name);
+        enterprise.setAnotherName(anotherName);
         enterprise.setContact(contactName);
-        enterprise.setAnotherName(name);
         enterprise.setPhone(phone);
         enterprise.setPrepare(prepare);
         enterprise.setParentId(0L);
+        enterprise.setPubJobTypePerm(pubJobTypePerm);
         enterprise.setStatus(MendunerStatusEnum.ENABLE.getStatus());
         enterpriseMapper.insert(enterprise);
         // 返回

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java

@@ -170,9 +170,9 @@ public interface EnterpriseUserBindService {
     List<AppEnterpriseUserBindRespVO> getBindList();
 
     /**
-     * 根据手机号获取用户绑定的企业列表
+     * 根据userId获取用户绑定的企业列表
      **/
-    List<AppEnterpriseUserBindRespVO> getBindListByPhone(String phone);
+    List<AppEnterpriseUserBindRespVO> getBindListByUserId(Long userId);
 
 
     // ========== 招聘端 ==========

+ 3 - 10
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindServiceImpl.java

@@ -17,7 +17,6 @@ import com.citu.module.menduner.system.controller.base.enterprise.bind.Enterpris
 import com.citu.module.menduner.system.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
-import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseUserBindMapper;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
@@ -54,7 +53,6 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
     @Resource
     private EnterpriseUserBindMapper mapper;
 
-
     @Resource
     @Lazy
     private MdePermissionService mdePermissionService;
@@ -170,7 +168,7 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
             throw exception(MDE_ENTERPRISE_USER_BIND_NOT_EXISTS);
         }
         if (EnterpriseUserTypeEnum.ADMIN.getType().toString()
-               .equals(userBindDO.getUserType())) {
+                .equals(userBindDO.getUserType())) {
             throw exception(FORBIDDEN);
         }
     }
@@ -263,14 +261,9 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
     }
 
     @Override
-    public List<AppEnterpriseUserBindRespVO> getBindListByPhone(String phone) {
-        MdeUserDO user = mdeUserService.getUserByPhone(phone);
-        if (null == user) {
-            // 返回空列表,方便前端跳注册申请页面
-            return Collections.emptyList();
-        }
+    public List<AppEnterpriseUserBindRespVO> getBindListByUserId(Long userId) {
         // 获取用户绑定企业信息
-        List<EnterpriseUserBindDO> list = mapper.selectListByUserId(user.getId());
+        List<EnterpriseUserBindDO> list = mapper.selectListByUserId(userId);
         if (null == list) {
             return Collections.emptyList();
         }

+ 46 - 20
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/register/EnterpriseRegisterServiceImpl.java

@@ -10,6 +10,7 @@ import com.citu.framework.common.util.validation.ValidationUtils;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.register.AppEnterpriseRegisterReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.register.AppEnterpriseRegisterRespVO;
+import com.citu.module.menduner.system.controller.base.contact.EnterpriseRegisterContactsReqVO;
 import com.citu.module.menduner.system.controller.base.enterprise.register.EnterpriseRegisterAuditReqVO;
 import com.citu.module.menduner.system.controller.base.enterprise.register.EnterpriseRegisterPageReqVO;
 import com.citu.module.menduner.system.controller.base.enterprise.register.EnterpriseRegisterSaveReqVO;
@@ -17,6 +18,7 @@ import com.citu.module.menduner.system.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseBusinessDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseRegisterDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
+import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseRegisterMapper;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.enums.enterprise.EnterpriseRegisterAuditStatusEnum;
@@ -24,6 +26,7 @@ import com.citu.module.menduner.system.enums.enterprise.EnterpriseUserTypeEnum;
 import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
 import com.citu.module.menduner.system.service.enterprise.business.EnterpriseBusinessService;
+import com.citu.module.menduner.system.service.user.MdeUserService;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
@@ -31,6 +34,8 @@ import org.springframework.validation.annotation.Validated;
 import javax.annotation.Resource;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.framework.common.util.servlet.ServletUtils.getClientIP;
+import static com.citu.framework.web.core.util.WebFrameworkUtils.getTerminal;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 
 /**
@@ -54,6 +59,9 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
     @Resource
     private EnterpriseUserBindService userBindService;
 
+    @Resource
+    private MdeUserService mdeUserService;
+
     @Resource
     private AipOcrClient aipOcrClient;
 
@@ -136,10 +144,13 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
         enterpriseRegister.setReason(reqVO.getReason());
         mapper.updateById(enterpriseRegister);
 
+        // TODO 增加企业的发布职位限制权限
         // 增加企业信息
         Long enterpriseId = enterpriseService.createSimpleEnterprise(
-                enterpriseRegister.getName(), enterpriseRegister.getContactName(),
-                enterpriseRegister.getPhone(), enterpriseRegister.getPrepare());
+                enterpriseRegister.getName(), enterpriseRegister.getAnotherName(),
+                reqVO.getPubJobTypePerm(), enterpriseRegister.getContactName(), enterpriseRegister.getPhone(),
+                enterpriseRegister.getPrepare()
+        );
 
         // 增加企业工商信息
         if (StringUtils.hasText(enterpriseRegister.getBusinessLicenseUrl())) {
@@ -159,18 +170,38 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
             }
         }
 
-        // 增加企业用户
-        EnterpriseUserBindDO userBindDO = EnterpriseUserBindDO.builder()
-                .enterpriseId(enterpriseId)
-                .userId(enterpriseRegister.getUserId())
-                .name(enterpriseRegister.getContactName())
-                .status(MendunerStatusEnum.ENABLE.getStatus())
-                .phone(enterpriseRegister.getPhone())
-                .email(enterpriseRegister.getEmail())
-                .userType(EnterpriseUserTypeEnum.ADMIN.getType())
-                .password(enterpriseRegister.getPassword())
-                .build();
-        userBindService.createUser(userBindDO);
+        // 1、先判断用户是否注册,没有就先注册用户
+        // 2、然后判断企业账户是否注册,没有就注册
+        for (int i = 0; i < enterpriseRegister.getContacts().size(); i++) {
+            EnterpriseRegisterContactsReqVO contact = enterpriseRegister.getContacts().get(i);
+            // 查询用户表
+            MdeUserDO userDO = mdeUserService.getUserByPhone(contact.getPhone());
+            if(null == userDO) {
+                // 没有就创建
+                userDO = mdeUserService.createUserIfAbsent(contact.getPhone(),getClientIP(),getTerminal().toString());
+            }
+            // 查询企业用户表
+            EnterpriseUserBindDO enterpriseUserBindDO = userBindService
+                    .selectByEnterpriseIdAndUserId(enterpriseId, userDO.getId());
+            if(null!=enterpriseUserBindDO) {
+                // 该用户存在该企业的账号,不做处理
+                continue;
+            }
+            // 增加企业用户
+            EnterpriseUserBindDO userBindDO = EnterpriseUserBindDO.builder()
+                    .enterpriseId(enterpriseId)
+                    .userId(userDO.getId())
+                    .name(contact.getContactName())
+                    .status(MendunerStatusEnum.ENABLE.getStatus())
+                    .phone(contact.getPhone())
+                    .email(contact.getEmail())
+                    .userType(EnterpriseUserTypeEnum.ADMIN.getType())
+                    .password(contact.getPassword())
+                    .build();
+            userBindService.createUser(userBindDO);
+        }
+
+
     }
 
     /**
@@ -264,11 +295,6 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
             // 存在审批中的申请
             throw exception(MDE_ENTERPRISE_REGISTER_APPLY_DUPLICATE);
         }
-        if (null != mapper.selectEmailAndStatus(reqVO.getEmail(),
-                EnterpriseRegisterAuditStatusEnum.AUDITING.getStatus())) {
-            // 存在审批中的申请
-            throw exception(MDE_ENTERPRISE_REGISTER_APPLY_DUPLICATE);
-        }
         // 兼容筹备中提交统一社会信用代码的情况
         if (StringUtils.hasText(reqVO.getCode())) {
             if (mapper.existsByCode(null, reqVO.getCode())) {
@@ -287,7 +313,7 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
         if (null != enterpriseBusinessDO) {
             throw exception(MDE_ENTERPRISE_REGISTER_DUPLICATE);
         }
-        // 判断邮箱是否注册
+        // 判断管理员邮箱是否注册
         EnterpriseUserBindDO userBindDO = userBindService.getByEmail(reqVO.getEmail());
         if (null != userBindDO) {
             throw exception(MDE_ENTERPRISE_REGISTER_EMAIL_DUPLICATE);

+ 61 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/redeem/RedeemService.java

@@ -0,0 +1,61 @@
+package com.citu.module.menduner.system.service.redeem;
+
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.app.jobhunt.redeem.vo.AppRedeemSubmitReqVO;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemPageReqVO;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.redeem.RedeemDO;
+
+import javax.validation.Valid;
+
+/**
+ * 兑换 Service 接口
+ *
+ * @author Rayson
+ */
+public interface RedeemService {
+
+    /**
+     * 创建兑换
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createRedeem(@Valid RedeemSaveReqVO createReqVO);
+
+    /**
+     * 更新兑换
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateRedeem(@Valid RedeemSaveReqVO updateReqVO);
+
+    /**
+     * 删除兑换
+     *
+     * @param id 编号
+     */
+    void deleteRedeem(Long id);
+
+    /**
+     * 获得兑换
+     *
+     * @param id 编号
+     * @return 兑换
+     */
+    RedeemDO getRedeem(Long id);
+
+    /**
+     * 获得兑换分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 兑换分页
+     */
+    PageResult<RedeemDO> getRedeemPage(RedeemPageReqVO pageReqVO);
+
+    // ========== 求职端 ==========
+    /** 兑换 **/
+    void submit(AppRedeemSubmitReqVO reqVO);
+
+}

+ 98 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/redeem/RedeemServiceImpl.java

@@ -0,0 +1,98 @@
+package com.citu.module.menduner.system.service.redeem;
+
+
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.common.util.LoginUserContext;
+import com.citu.module.menduner.system.controller.app.jobhunt.redeem.vo.AppRedeemSubmitReqVO;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemPageReqVO;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.redeem.RedeemDO;
+import com.citu.module.menduner.system.dal.mysql.redeem.RedeemMapper;
+import com.citu.module.menduner.system.enums.MathOperationEnum;
+import com.citu.module.menduner.system.enums.account.PointBizTypeEnum;
+import com.citu.module.menduner.system.service.record.UserAccountRecordService;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.REDEEM_NOT_EXISTS;
+
+/**
+ * 兑换 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class RedeemServiceImpl implements RedeemService {
+
+    @Resource
+    private RedeemMapper redeemMapper;
+
+    @Resource
+    private UserAccountRecordService accountRecordService;
+
+    @Override
+    public Long createRedeem(RedeemSaveReqVO createReqVO) {
+        // 插入
+        RedeemDO redeem = BeanUtils.toBean(createReqVO, RedeemDO.class);
+        redeemMapper.insert(redeem);
+        // 返回
+        return redeem.getId();
+    }
+
+    @Override
+    public void updateRedeem(RedeemSaveReqVO updateReqVO) {
+        // 校验存在
+        validateRedeemExists(updateReqVO.getId());
+        // 更新
+        RedeemDO updateObj = BeanUtils.toBean(updateReqVO, RedeemDO.class);
+        redeemMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteRedeem(Long id) {
+        // 校验存在
+        validateRedeemExists(id);
+        // 删除
+        redeemMapper.deleteById(id);
+    }
+
+    private void validateRedeemExists(Long id) {
+        if (redeemMapper.selectById(id) == null) {
+            throw exception(REDEEM_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public RedeemDO getRedeem(Long id) {
+        return redeemMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<RedeemDO> getRedeemPage(RedeemPageReqVO pageReqVO) {
+        return redeemMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    @DSTransactional
+    public void submit(AppRedeemSubmitReqVO reqVO) {
+        RedeemDO redeem = BeanUtils.toBean(reqVO, RedeemDO.class);
+        redeem.setUserId(LoginUserContext.getUserId());
+        redeemMapper.insert(redeem);
+        // 创建记录
+        accountRecordService.createPointRecord(
+                LoginUserContext.getUserId(),
+                null,
+                PointBizTypeEnum.REDEEM.getName(),
+                MathOperationEnum.SUBTRACT,
+                reqVO.getPoint(),
+                PointBizTypeEnum.REDEEM,
+                redeem.getId().toString()
+        );
+    }
+}

+ 9 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties

@@ -347,4 +347,12 @@
 # ========== 用户实名制 1_100_047_000 ==========
 1_100_047_001=User real name system does not exist
 # ========== 品牌 1_100_048_000 ==========
-1_100_048_001=Brand does not exist
+1_100_048_001=Brand does not exist
+# ========== 兑换 1_100_049_000 ==========
+1_100_049_001=Exchange does not exist
+1_100_049_002=Product name cannot be empty
+1_100_049_003=Product image address cannot be empty
+1_100_049_004=Redemption points cannot be empty
+1_100_049_005=Contact name cannot be empty
+1_100_049_006=Contact phone number cannot be empty
+1_100_049_007=Product type cannot be empty

+ 9 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -350,4 +350,12 @@
 # ========== 用户实名制 1_100_047_000 ==========
 1_100_047_001=用户实名制不存在
 # ========== 品牌 1_100_048_000 ==========
-1_100_048_001=品牌不存在
+1_100_048_001=品牌不存在
+# ========== 兑换 1_100_049_000 ==========
+1_100_049_001=兑换不存在
+1_100_049_002=商品名不能为空
+1_100_049_003=商品图片地址不能为空
+1_100_049_004=兑换积分不能为空
+1_100_049_005=联系人姓名不能为空
+1_100_049_006=联系电话不能为空
+1_100_049_007=商品类型不能为空

+ 156 - 0
menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/redeem/RedeemServiceImplTest.java

@@ -0,0 +1,156 @@
+package com.citu.module.menduner.system.service.redeem;
+
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.test.core.ut.BaseDbUnitTest;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemPageReqVO;
+import com.citu.module.menduner.system.controller.base.redeem.RedeemSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.redeem.RedeemDO;
+import com.citu.module.menduner.system.dal.mysql.redeem.RedeemMapper;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Import;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
+import static com.citu.framework.common.util.object.ObjectUtils.cloneIgnoreId;
+import static com.citu.framework.test.core.util.AssertUtils.assertPojoEquals;
+import static com.citu.framework.test.core.util.AssertUtils.assertServiceException;
+import static com.citu.framework.test.core.util.RandomUtils.randomLongId;
+import static com.citu.framework.test.core.util.RandomUtils.randomPojo;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.REDEEM_NOT_EXISTS;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * {@link RedeemServiceImpl} 的单元测试类
+ *
+ * @author Rayson
+ */
+@Import(RedeemServiceImpl.class)
+public class RedeemServiceImplTest extends BaseDbUnitTest {
+
+    @Resource
+    private RedeemServiceImpl redeemService;
+
+    @Resource
+    private RedeemMapper redeemMapper;
+
+    @Test
+    public void testCreateRedeem_success() {
+        // 准备参数
+        RedeemSaveReqVO createReqVO = randomPojo(RedeemSaveReqVO.class).setId(null);
+
+        // 调用
+        Long redeemId = redeemService.createRedeem(createReqVO);
+        // 断言
+        assertNotNull(redeemId);
+        // 校验记录的属性是否正确
+        RedeemDO redeem = redeemMapper.selectById(redeemId);
+        assertPojoEquals(createReqVO, redeem, "id");
+    }
+
+    @Test
+    public void testUpdateRedeem_success() {
+        // mock 数据
+        RedeemDO dbRedeem = randomPojo(RedeemDO.class);
+        redeemMapper.insert(dbRedeem);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        RedeemSaveReqVO updateReqVO = randomPojo(RedeemSaveReqVO.class, o -> {
+            o.setId(dbRedeem.getId()); // 设置更新的 ID
+        });
+
+        // 调用
+        redeemService.updateRedeem(updateReqVO);
+        // 校验是否更新正确
+        RedeemDO redeem = redeemMapper.selectById(updateReqVO.getId()); // 获取最新的
+        assertPojoEquals(updateReqVO, redeem);
+    }
+
+    @Test
+    public void testUpdateRedeem_notExists() {
+        // 准备参数
+        RedeemSaveReqVO updateReqVO = randomPojo(RedeemSaveReqVO.class);
+
+        // 调用, 并断言异常
+        assertServiceException(() -> redeemService.updateRedeem(updateReqVO), REDEEM_NOT_EXISTS);
+    }
+
+    @Test
+    public void testDeleteRedeem_success() {
+        // mock 数据
+        RedeemDO dbRedeem = randomPojo(RedeemDO.class);
+        redeemMapper.insert(dbRedeem);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        Long id = dbRedeem.getId();
+
+        // 调用
+        redeemService.deleteRedeem(id);
+        // 校验数据不存在了
+        assertNull(redeemMapper.selectById(id));
+    }
+
+    @Test
+    public void testDeleteRedeem_notExists() {
+        // 准备参数
+        Long id = randomLongId();
+
+        // 调用, 并断言异常
+        assertServiceException(() -> redeemService.deleteRedeem(id), REDEEM_NOT_EXISTS);
+    }
+
+    @Test
+    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+    public void testGetRedeemPage() {
+        // mock 数据
+        RedeemDO dbRedeem = randomPojo(RedeemDO.class, o -> { // 等会查询到
+            o.setName(null);
+            o.setUrl(null);
+            o.setUserId(null);
+            o.setContactName(null);
+            o.setContactAddress(null);
+            o.setContactPhone(null);
+            o.setStatus(null);
+            o.setRemark(null);
+            o.setCreateTime(null);
+        });
+        redeemMapper.insert(dbRedeem);
+        // 测试 name 不匹配
+        redeemMapper.insert(cloneIgnoreId(dbRedeem, o -> o.setName(null)));
+        // 测试 url 不匹配
+        redeemMapper.insert(cloneIgnoreId(dbRedeem, o -> o.setUrl(null)));
+        // 测试 userId 不匹配
+        redeemMapper.insert(cloneIgnoreId(dbRedeem, o -> o.setUserId(null)));
+        // 测试 contactName 不匹配
+        redeemMapper.insert(cloneIgnoreId(dbRedeem, o -> o.setContactName(null)));
+        // 测试 contactAddress 不匹配
+        redeemMapper.insert(cloneIgnoreId(dbRedeem, o -> o.setContactAddress(null)));
+        // 测试 contactPhone 不匹配
+        redeemMapper.insert(cloneIgnoreId(dbRedeem, o -> o.setContactPhone(null)));
+        // 测试 status 不匹配
+        redeemMapper.insert(cloneIgnoreId(dbRedeem, o -> o.setStatus(null)));
+        // 测试 remark 不匹配
+        redeemMapper.insert(cloneIgnoreId(dbRedeem, o -> o.setRemark(null)));
+        // 测试 createTime 不匹配
+        redeemMapper.insert(cloneIgnoreId(dbRedeem, o -> o.setCreateTime(null)));
+        // 准备参数
+        RedeemPageReqVO reqVO = new RedeemPageReqVO();
+        reqVO.setName(null);
+        reqVO.setUrl(null);
+        reqVO.setUserId(null);
+        reqVO.setContactName(null);
+        reqVO.setContactAddress(null);
+        reqVO.setContactPhone(null);
+        reqVO.setStatus(null);
+        reqVO.setRemark(null);
+        reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+        // 调用
+        PageResult<RedeemDO> pageResult = redeemService.getRedeemPage(reqVO);
+        // 断言
+        assertEquals(1, pageResult.getTotal());
+        assertEquals(1, pageResult.getList().size());
+        assertPojoEquals(dbRedeem, pageResult.getList().get(0));
+    }
+
+}

+ 2 - 1
menduner/menduner-system-biz/src/test/resources/sql/clean.sql

@@ -38,4 +38,5 @@ DELETE FROM "mde_interview_invite";
 DELETE FROM "mde_enterprise_auth";
 DELETE FROM "mde_tag";
 DELETE FROM "mde_hunt";
-DELETE FROM "mde_user_auth";
+DELETE FROM "mde_user_auth";
+DELETE FROM "mde_redeem";

+ 21 - 1
menduner/menduner-system-biz/src/test/resources/sql/create_tables.sql

@@ -680,4 +680,24 @@ CREATE TABLE IF NOT EXISTS "mde_user_auth" (
     "deleted" bit NOT NULL DEFAULT FALSE,
     "tenant_id" bigint NOT NULL,
     PRIMARY KEY ("id")
-) COMMENT '用户实名制';
+) COMMENT '用户实名制';
+
+CREATE TABLE IF NOT EXISTS "mde_redeem" (
+    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+    "name" varchar NOT NULL,
+    "url" varchar NOT NULL,
+    "point" int NOT NULL,
+    "user_id" bigint NOT NULL,
+    "contact_name" varchar NOT NULL,
+    "contact_address" varchar,
+    "contact_phone" varchar NOT NULL,
+    "status" varchar,
+    "remark" varchar,
+    "creator" varchar DEFAULT '',
+    "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updater" varchar DEFAULT '',
+    "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    "deleted" bit NOT NULL DEFAULT FALSE,
+    "tenant_id" bigint NOT NULL,
+    PRIMARY KEY ("id")
+) COMMENT '兑换';