Kaynağa Gözat

1、增加用户vip标识和过期时间
2、优化交易订单

rayson 1 yıl önce
ebeveyn
işleme
17b3f36bdb
28 değiştirilmiş dosya ile 260 ekleme ve 93 silme
  1. 3 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  2. 13 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/TradeOrderTypeMq.java
  3. 11 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/order/TradeOrderTypeEnum.java
  4. 32 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/user/UserVipFlagEnum.java
  5. 9 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseBusinessController.java
  6. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/order/TradeOrderController.java
  7. 31 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/order/AppTradeOrderController.java
  8. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/user/vo/AppMdeUserRespVO.java
  9. 21 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/order/AppRecruitTradeOrderController.java
  10. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/vo/EnterpriseRespVO.java
  11. 6 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/AppTradeOrderCreateReqVO.java
  12. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/AppTradeOrderGetReqVO.java
  13. 3 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/AppTradeOrderGetRespVO.java
  14. 2 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/TradeOrderCreateReqVO.java
  15. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/user/MdeUserRespVO.java
  16. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/order/TradeOrderDO.java
  17. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/MdeUserDO.java
  18. 5 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/PublishJobHireConsumer.java
  19. 27 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/UserMemberConsumer.java
  20. 4 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/producer/OrderProducer.java
  21. 16 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/business/EnterpriseBusinessService.java
  22. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/business/EnterpriseBusinessServiceImpl.java
  23. 7 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/register/EnterpriseRegisterServiceImpl.java
  24. 5 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelServiceImpl.java
  25. 11 16
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/order/TradeOrderService.java
  26. 11 28
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/order/TradeOrderServiceImpl.java
  27. 1 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  28. 1 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

+ 3 - 1
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -244,7 +244,7 @@ public interface ErrorCodeConstants {
 
     ErrorCode MDE_ENTERPRISE_REGISTER_STATUS_APPLYING = new ErrorCode(1_100_021_016, "企业注册申请中");
 
-    ErrorCode MDE_ENTERPRISE_REGISTER_EMAIL_DUPLICATE = new ErrorCode(1_100_021_017, "该邮箱已被其他企业注册");
+    ErrorCode MDE_ENTERPRISE_REGISTER_EMAIL_DUPLICATE = new ErrorCode(1_100_021_017, "[{}]该邮箱已被其他企业注册");
 
     // ========== 企业地址 1_100_022_001 ==========
     ErrorCode MDE_ENTERPRISE_ADDRESS_NOT_EXISTS = new ErrorCode(1_100_022_001, "企业地址不存在");
@@ -480,6 +480,8 @@ public interface ErrorCodeConstants {
     ErrorCode ORDER_GOODS_PRICE_NOT_NULL = new ErrorCode(1_100_046_013, "商品金额不能为空");
 
     ErrorCode ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID = new ErrorCode(1_100_046_014, "交易订单取消失败,订单不是【待支付】状态");
+    ErrorCode ORDER_TYPE_NOT_NULL = new ErrorCode(1_100_046_015, "订单类型不能为空");
+
 
     // ========== 用户实名制 1_100_047_000 ==========
     ErrorCode USER_AUTH_NOT_EXISTS = new ErrorCode(1_100_047_001, "用户实名制不存在");

+ 13 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/TradeOrderTypeMq.java

@@ -6,6 +6,16 @@ package com.citu.module.menduner.system.enums;
  **/
 public class TradeOrderTypeMq {
 
+    /**
+     * 企业支付
+     */
+    public static final String PAY_APP_ENTERPRISE_KEY = "enterprise";
+    /**
+     * 用户支付
+     */
+    public static final String PAY_APP_USER_KEY = "user";
+
+
     /** 平台订单 **/
     public static final String PLATFORM_ORDER_TOPIC = "PLATFORM_ORDER_TOPIC";
 
@@ -15,5 +25,8 @@ public class TradeOrderTypeMq {
     /** 发布众聘职位订单 **/
     public static final String PUBLISH_JOB_HIRE_ORDER_TOPIC = "PUBLISH_JOB_HIRE_ORDER_TOPIC";
 
+    /** 用户会员套餐订单 **/
+    public static final String USER_MEMBER_ORDER_TOPIC = "USER_MEMBER_ORDER_TOPIC";
+
 
 }

+ 11 - 1
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/order/TradeOrderTypeEnum.java

@@ -16,7 +16,17 @@ public enum TradeOrderTypeEnum {
     PLATFORM_ORDER("0", "平台", TradeOrderTypeMq.PLATFORM_ORDER_TOPIC),
     PUBLISH_JOB_ORDER("1", "发布职位", TradeOrderTypeMq.PUBLISH_JOB_ORDER_TOPIC),
     PUBLISH_JOB_HIRE_ORDER("2", "发布众聘职位", TradeOrderTypeMq.PUBLISH_JOB_HIRE_ORDER_TOPIC),
-
+    // 会员
+    // 用户-14天
+    USER_MEMBER_14_DAY("3", "会员套餐-14天", TradeOrderTypeMq.USER_MEMBER_ORDER_TOPIC),
+    // 用户-30天
+    USER_MEMBER_30_DAY("4", "会员套餐-30天", TradeOrderTypeMq.USER_MEMBER_ORDER_TOPIC),
+    // 用户-60天
+    USER_MEMBER_60_DAY("5", "会员套餐-30天", TradeOrderTypeMq.USER_MEMBER_ORDER_TOPIC),
+    // 用户-90天
+    USER_MEMBER_90_DAY("6", "会员套餐-90天", TradeOrderTypeMq.USER_MEMBER_ORDER_TOPIC),
+    // 用户-365天
+    USER_MEMBER_365_DAY("7", "会员套餐-365天", TradeOrderTypeMq.USER_MEMBER_ORDER_TOPIC),
     ;
 
     /**

+ 32 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/user/UserVipFlagEnum.java

@@ -0,0 +1,32 @@
+package com.citu.module.menduner.system.enums.user;
+
+import com.citu.module.menduner.system.enums.order.TradeOrderTypeEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 用户vip标识 14 | 30 | 60 | 90 | 365
+ **/
+@Getter
+@AllArgsConstructor
+public enum UserVipFlagEnum {
+    USER_MEMBER_14_DAY("14","3", "14天"),
+    USER_MEMBER_30_DAY("30", "4","30天"),
+    USER_MEMBER_60_DAY("60", "5","60天"),
+    USER_MEMBER_90_DAY("90", "6","90天"),
+    USER_MEMBER_365_DAY("365", "7","365天");
+
+    private final String flag;
+    /** 对应 {@link TradeOrderTypeEnum} **/
+    private final String relationType;
+    private final String name;
+
+    public static UserVipFlagEnum from(String relationType) {
+        for (UserVipFlagEnum item : UserVipFlagEnum.values()) {
+            if (item.getRelationType().equals(relationType)) {
+                return item;
+            }
+        }
+        return null;
+    }
+}

+ 9 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseBusinessController.java

@@ -70,6 +70,15 @@ public class EnterpriseBusinessController {
         return success(BeanUtils.toBean(enterpriseBusiness, EnterpriseBusinessRespVO.class));
     }
 
+    @GetMapping("/get/by")
+    @Operation(summary = "根据企业id获得企业工商信息")
+    @Parameter(name = "id", description = "企业编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-business:query')")
+    public CommonResult<EnterpriseBusinessRespVO> getByEnterpriseId(@RequestParam("enterpriseId") Long enterpriseId) {
+        EnterpriseBusinessDO enterpriseBusiness = enterpriseBusinessService.getByEnterpriseId(enterpriseId);
+        return success(BeanUtils.toBean(enterpriseBusiness, EnterpriseBusinessRespVO.class));
+    }
+
     @GetMapping("/page")
     @Operation(summary = "获得企业工商信息分页")
     @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-business:query')")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/order/TradeOrderController.java

@@ -38,7 +38,7 @@ public class TradeOrderController {
     @Operation(summary = "创建订单")
     @PreAuthorize("@ss.hasPermission('menduner:system:trade-order:create')")
     public CommonResult<Long> createOrder(@Valid @RequestBody TradeOrderCreateReqVO createReqVO) {
-        return success(tradeOrderService.createOrder(createReqVO));
+        return success(tradeOrderService.createOrder(createReqVO,null));
     }
 
     @GetMapping("/page")

+ 31 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/order/AppTradeOrderController.java

@@ -3,20 +3,25 @@ package com.citu.module.menduner.system.controller.app.jobhunt.order;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageResult;
 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.order.vo.AppTradeOrderPageReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.order.vo.AppTradeOrderRespVO;
+import com.citu.module.menduner.system.controller.base.order.AppTradeOrderGetReqVO;
+import com.citu.module.menduner.system.controller.base.order.AppTradeOrderCreateReqVO;
+import com.citu.module.menduner.system.controller.base.order.AppTradeOrderGetRespVO;
+import com.citu.module.menduner.system.controller.base.order.TradeOrderCreateReqVO;
+import com.citu.module.menduner.system.enums.MdeUserTypeEnum;
 import com.citu.module.menduner.system.service.order.TradeOrderService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
+import static com.citu.module.menduner.system.enums.TradeOrderTypeMq.PAY_APP_USER_KEY;
 
 @Tag(name = "求职端 - 交易订单")
 @RestController
@@ -26,11 +31,33 @@ public class AppTradeOrderController {
 
     @Resource
     private TradeOrderService tradeOrderService;
-    
+
     @GetMapping("/page")
     @Operation(summary = "获得订单分页")
     @PreAuthenticated
     public CommonResult<PageResult<AppTradeOrderRespVO>> page(@Valid AppTradeOrderPageReqVO reqVO) {
         return success(tradeOrderService.page(reqVO));
     }
+
+    @PostMapping("/create")
+    @Operation(summary = "创建订单")
+    @PreAuthenticated
+    public CommonResult<Long> create(@RequestBody @Valid AppTradeOrderCreateReqVO reqVO) {
+        TradeOrderCreateReqVO dto = new TradeOrderCreateReqVO();
+        dto.setUserType(String.valueOf(MdeUserTypeEnum.USER.getType()));
+        dto.setUserId(LoginUserContext.getUserId());
+        dto.setType(reqVO.getType());
+        dto.setSpuId(reqVO.getSpuId());
+        dto.setSpuName(reqVO.getSpuName());
+        dto.setPrice(reqVO.getPrice());
+        return success(tradeOrderService.createOrder(dto,PAY_APP_USER_KEY));
+    }
+
+    @GetMapping("/get/unpaid")
+    @Operation(summary = "获取待支付的订单")
+    @PreAuthenticated
+    public CommonResult<AppTradeOrderGetRespVO> getOrderByUnpaid(@Valid AppTradeOrderGetReqVO reqVO) {
+        AppTradeOrderGetRespVO order = tradeOrderService.getOrderByUnpaid(reqVO, null);
+        return success(order);
+    }
 }

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/user/vo/AppMdeUserRespVO.java

@@ -50,6 +50,14 @@ public class AppMdeUserRespVO {
     @ExcelProperty("注册终端")
     private String registerTerminal;
 
+    @Schema(description = "vip标识")
+    @ExcelProperty("vip标识")
+    private String vipFlag;
+
+    @Schema(description = "vip过期时间")
+    @ExcelProperty("vip过期时间")
+    private LocalDateTime vipExpireDate;
+
     @Schema(description = "最后登录IP")
     @ExcelProperty("最后登录IP")
     private String loginIp;

+ 21 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/order/AppRecruitTradeOrderController.java

@@ -3,7 +3,14 @@ package com.citu.module.menduner.system.controller.app.recruit.order;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.controller.app.recruit.order.vo.*;
+import com.citu.module.menduner.system.controller.base.order.AppTradeOrderCreateReqVO;
+import com.citu.module.menduner.system.controller.base.order.AppTradeOrderGetReqVO;
+import com.citu.module.menduner.system.controller.base.order.AppTradeOrderGetRespVO;
+import com.citu.module.menduner.system.controller.base.order.TradeOrderCreateReqVO;
+import com.citu.module.menduner.system.enums.MdeUserTypeEnum;
+import com.citu.module.menduner.system.enums.order.TradeOrderTypeEnum;
 import com.citu.module.menduner.system.service.order.TradeOrderService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -14,6 +21,7 @@ import javax.annotation.Resource;
 import javax.validation.Valid;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
+import static com.citu.module.menduner.system.enums.TradeOrderTypeMq.PAY_APP_ENTERPRISE_KEY;
 
 @Tag(name = "招聘端 - 交易订单")
 @RestController
@@ -34,15 +42,24 @@ public class AppRecruitTradeOrderController {
     @PostMapping("/create")
     @Operation(summary = "创建订单")
     @PreAuthenticated
-    public CommonResult<Long> create(@RequestBody @Valid AppRecruitTradeOrderCreateReqVO reqVO) {
-        return success(tradeOrderService.create(reqVO));
+    public CommonResult<Long> create(@RequestBody @Valid AppTradeOrderCreateReqVO reqVO) {
+        TradeOrderTypeEnum type = TradeOrderTypeEnum.getByType(reqVO.getType());
+        TradeOrderCreateReqVO dto = new TradeOrderCreateReqVO();
+        dto.setUserType(String.valueOf(MdeUserTypeEnum.ENTERPRISE_USER.getType()));
+        dto.setEnterpriseId(LoginUserContext.getEnterpriseId());
+        dto.setUserId(LoginUserContext.getUserId());
+        dto.setType(reqVO.getType());
+        dto.setSpuId(reqVO.getSpuId());
+        dto.setSpuName(type.getName() + ": " + reqVO.getSpuName());
+        dto.setPrice(reqVO.getPrice());
+        return success(tradeOrderService.createOrder(dto,PAY_APP_ENTERPRISE_KEY));
     }
 
     @GetMapping("/get/unpaid")
     @Operation(summary = "获取待支付的订单")
     @PreAuthenticated
-    public CommonResult<AppRecruitTradeOrderGetRespVO> getOrderByUnpaid(@Valid AppRecruitTradeOrderGetReqVO reqVO) {
-        AppRecruitTradeOrderGetRespVO order = tradeOrderService.getOrderByUnpaid(reqVO);
+    public CommonResult<AppTradeOrderGetRespVO> getOrderByUnpaid(@Valid AppTradeOrderGetReqVO reqVO) {
+        AppTradeOrderGetRespVO order = tradeOrderService.getOrderByUnpaid(reqVO,LoginUserContext.getEnterpriseId());
         return success(order);
     }
 

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

@@ -100,6 +100,10 @@ public class EnterpriseRespVO {
     @ExcelProperty("是否筹备")
     private Boolean prepare;
 
+    @Schema(description = "允许企业发布哪些职位类型")
+    @ExcelProperty("允许企业发布哪些职位类型")
+    private List<String> pubJobTypePerm;
+
     @Schema(description = "状态(0正常 1停用)")
     @ExcelProperty("状态")
     private String status;

+ 6 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/order/vo/AppRecruitTradeOrderCreateReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/AppTradeOrderCreateReqVO.java

@@ -1,15 +1,14 @@
-package com.citu.module.menduner.system.controller.app.recruit.order.vo;
+package com.citu.module.menduner.system.controller.base.order;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
-import java.math.BigDecimal;
 
-@Schema(description = "招聘端 - 交易订单创建 Request VO")
+@Schema(description = "menduner - 交易订单创建 Request VO")
 @Data
-public class AppRecruitTradeOrderCreateReqVO {
+public class AppTradeOrderCreateReqVO {
 
 
     @Schema(description = "商品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17682")
@@ -24,7 +23,9 @@ public class AppRecruitTradeOrderCreateReqVO {
     @NotNull(message = "{1_100_046_013}")
     private Long price;
 
-    @Schema(description = "订单类型 0平台订单|1发布职位订单|2发布众聘职位订单", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotBlank(message = "{1_100_046_015}")
+    @Schema(description = "订单类型 0平台订单|1求职端订单|2招聘端订单|3用户会员-14天|4用户会员-30天|5用户会员-30天|6用户会员-90天|7用户会员-365天",
+            requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private String type;
 
 

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/order/vo/AppRecruitTradeOrderGetReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/AppTradeOrderGetReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.recruit.order.vo;
+package com.citu.module.menduner.system.controller.base.order;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -7,12 +7,12 @@ import javax.validation.constraints.NotNull;
 
 @Schema(description = "招聘端 - 交易订单获取 Request VO")
 @Data
-public class AppRecruitTradeOrderGetReqVO {
+public class AppTradeOrderGetReqVO {
 
     @Schema(description = "商品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17682")
     @NotNull(message = "商品编号不能为空")
     private Long spuId;
 
-    @Schema(description = "订单类型 0平台订单|1发布职位订单|2发布众聘职位订单", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @Schema(description = "订单类型 0平台订单|1求职端订单|2招聘端订单|3用户会员-14天|4用户会员-30天|5用户会员-30天|6用户会员-90天|7用户会员-365天", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private String type;
 }

+ 3 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/order/vo/AppRecruitTradeOrderGetRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/AppTradeOrderGetRespVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.recruit.order.vo;
+package com.citu.module.menduner.system.controller.base.order;
 
 import com.citu.module.menduner.system.dal.dataobject.order.TradeOrderDO;
 import com.citu.module.pay.api.order.dto.PayOrderBaseRespDTO;
@@ -7,12 +7,11 @@ import lombok.Data;
 
 @Data
 @Schema(description = "招聘端 - 交易订单获取 Response VO")
-public class AppRecruitTradeOrderGetRespVO {
+public class AppTradeOrderGetRespVO {
 
     @Schema(description = "业务订单")
     private TradeOrderDO order;
 
-    @Schema(description = "支付订单")
-    private PayOrderBaseRespDTO payOrder;
+
 
 }

+ 2 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/TradeOrderCreateReqVO.java

@@ -1,13 +1,10 @@
 package com.citu.module.menduner.system.controller.base.order;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Builder;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
-import java.math.BigDecimal;
 
 @Schema(description = "管理后台 - 交易订单创建 Request VO")
 @Data
@@ -24,7 +21,8 @@ public class TradeOrderCreateReqVO {
     @NotNull(message = "{1_099_000_006}")
     private Long userId;
 
-    @Schema(description = "订单类型 0平台订单|1求职端订单|2招聘端订单", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @Schema(description = "订单类型 0平台订单|1求职端订单|2招聘端订单|3用户会员-14天|4用户会员-30天|5用户会员-30天|6用户会员-90天|7用户会员-365天",
+            requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private String type;
 
     @Schema(description = "商品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17682")

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/user/MdeUserRespVO.java

@@ -54,6 +54,14 @@ public class MdeUserRespVO {
     @ExcelProperty("注册终端")
     private String registerTerminal;
 
+    @Schema(description = "vip标识")
+    @ExcelProperty("vip标识")
+    private String vipFlag;
+
+    @Schema(description = "vip过期时间")
+    @ExcelProperty("vip过期时间")
+    private LocalDateTime vipExpireDate;
+
     @Schema(description = "最后登录IP")
     @ExcelProperty("最后登录IP")
     private String loginIp;

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

@@ -48,6 +48,10 @@ public class TradeOrderDO extends BaseDO {
     private Long userId;
 
     // ========== 订单基本信息 ==========
+    /**
+     * 应用标识
+     */
+    private String appKey;
     /**
      * 订单类型
      *

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

@@ -67,6 +67,14 @@ public class MdeUserDO extends TenantBaseDO {
      * 注册终端
      */
     private String registerTerminal;
+    /**
+     * vip标识
+     */
+    private String vipFlag;
+    /**
+     * vip过期时间
+     */
+    private LocalDateTime vipExpireDate;
     /**
      * 最后登录IP
      */

+ 5 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/PublishJobHireConsumer.java

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.mq.consumer;
 
 
+import com.citu.module.menduner.system.dal.dataobject.order.TradeOrderDO;
 import com.citu.module.menduner.system.enums.TradeOrderTypeMq;
 import com.citu.module.menduner.system.service.job.JobAdvertisedService;
 import lombok.extern.slf4j.Slf4j;
@@ -20,14 +21,14 @@ import java.util.Collections;
         topic = TradeOrderTypeMq.PUBLISH_JOB_HIRE_ORDER_TOPIC,
         consumerGroup = TradeOrderTypeMq.PUBLISH_JOB_HIRE_ORDER_TOPIC + "_CONSUMER"
 )
-public class PublishJobHireConsumer implements RocketMQListener<Long> {
+public class PublishJobHireConsumer implements RocketMQListener<TradeOrderDO> {
 
     @Resource
     private JobAdvertisedService service;
 
     @Override
-    public void onMessage(Long jobId) {
-        log.info("接收到队列消息[{}]", jobId);
-        service.enable(Collections.singletonList(jobId));
+    public void onMessage(TradeOrderDO order) {
+        log.info("接收到队列消息[{}]", order);
+        service.enable(Collections.singletonList(order.getSpuId()));
     }
 }

+ 27 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/UserMemberConsumer.java

@@ -0,0 +1,27 @@
+package com.citu.module.menduner.system.mq.consumer;
+
+import com.citu.module.menduner.system.dal.dataobject.order.TradeOrderDO;
+import com.citu.module.menduner.system.enums.TradeOrderTypeMq;
+import com.citu.module.menduner.system.enums.user.UserVipFlagEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
+import org.apache.rocketmq.spring.core.RocketMQListener;
+import org.springframework.stereotype.Component;
+
+/**
+ * 众聘职位完成支付 消费
+ **/
+@Slf4j
+@Component
+@RocketMQMessageListener(
+        topic = TradeOrderTypeMq.USER_MEMBER_ORDER_TOPIC,
+        consumerGroup = TradeOrderTypeMq.USER_MEMBER_ORDER_TOPIC + "_CONSUMER"
+)
+public class UserMemberConsumer implements RocketMQListener<TradeOrderDO> {
+
+    @Override
+    public void onMessage(TradeOrderDO order) {
+        log.info("接收到队列消息[{}]", order);
+        UserVipFlagEnum vipFlagEnum = UserVipFlagEnum.from(order.getType());
+    }
+}

+ 4 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/producer/OrderProducer.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.mq.producer;
 
+import com.citu.module.menduner.system.dal.dataobject.order.TradeOrderDO;
 import com.citu.module.menduner.system.enums.order.TradeOrderTypeEnum;
 import com.citu.module.menduner.system.mq.message.ESJobAdvertisedMergeSendMessage;
 import lombok.extern.slf4j.Slf4j;
@@ -22,8 +23,9 @@ public class OrderProducer {
     @Resource
     private RocketMQTemplate rocketMQTemplate;
 
-    public void send(Long spuId, TradeOrderTypeEnum type) {
-        Message<?> message = MessageBuilder.withPayload(spuId).build();
+    public void send(TradeOrderDO order) {
+        TradeOrderTypeEnum type = TradeOrderTypeEnum.getByType(order.getType());
+        Message<?> message = MessageBuilder.withPayload(order).build();
         rocketMQTemplate.syncSend(
                 type.getTopic(),
                 message,

+ 16 - 7
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/business/EnterpriseBusinessService.java

@@ -1,14 +1,14 @@
 package com.citu.module.menduner.system.service.enterprise.business;
 
-import javax.validation.*;
-
 import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
+import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.app.recruit.enterprise.vo.AppRecruitEnterpriseBusinessRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.enterprise.vo.AppRecruitEnterpriseBusinessSaveReqVO;
 import com.citu.module.menduner.system.controller.base.enterprise.business.EnterpriseBusinessPageReqVO;
 import com.citu.module.menduner.system.controller.base.enterprise.business.EnterpriseBusinessSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseBusinessDO;
-import com.citu.framework.common.pojo.PageResult;
+
+import javax.validation.Valid;
 
 /**
  * 企业工商信息 Service 接口
@@ -47,6 +47,14 @@ public interface EnterpriseBusinessService {
      */
     EnterpriseBusinessDO getEnterpriseBusiness(Long id);
 
+    /**
+     * 根据企业id获得企业工商信息
+     *
+     * @param enterpriseId 企业编号
+     * @return 企业工商信息
+     */
+    EnterpriseBusinessDO getByEnterpriseId(Long enterpriseId);
+
     /**
      * 获得企业工商信息分页
      *
@@ -74,17 +82,17 @@ public interface EnterpriseBusinessService {
     /**
      * 新增简易的工商信息
      *
-     * @param code 社会统一信用代码
+     * @param code         社会统一信用代码
      * @param enterpriseId 企业id
-     * @param name 企业名称
+     * @param name         企业名称
      * @return 企业工商信息
      */
-    Long createSimpleBusiness(Long enterpriseId,String code,String name);
+    Long createSimpleBusiness(Long enterpriseId, String code, String name);
 
     /**
      * 新增工商信息
      *
-     * @param enterpriseId 企业id
+     * @param enterpriseId    企业id
      * @param businessLicense 营业执照信息
      * @return 企业工商信息
      */
@@ -94,6 +102,7 @@ public interface EnterpriseBusinessService {
 
     /**
      * 修改企业营业执照信息
+     *
      * @param reqVO
      **/
     void update(AppRecruitEnterpriseBusinessSaveReqVO reqVO);

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/business/EnterpriseBusinessServiceImpl.java

@@ -70,6 +70,11 @@ public class EnterpriseBusinessServiceImpl implements EnterpriseBusinessService
         return enterpriseBusinessMapper.selectById(id);
     }
 
+    @Override
+    public EnterpriseBusinessDO getByEnterpriseId(Long enterpriseId) {
+        return enterpriseBusinessMapper.selectByEnterpriseId(enterpriseId);
+    }
+
     @Override
     public PageResult<EnterpriseBusinessDO> getEnterpriseBusinessPage(EnterpriseBusinessPageReqVO pageReqVO) {
         return enterpriseBusinessMapper.selectPage(pageReqVO);

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

@@ -326,10 +326,13 @@ 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);
+
+        for (EnterpriseRegisterContactsReqVO contact : reqVO.getContacts()) {
+            // 判断邮箱是否注册
+            EnterpriseUserBindDO userBindDO = userBindService.getByEmail(contact.getEmail());
+            if (null != userBindDO) {
+                throw exception(MDE_ENTERPRISE_REGISTER_EMAIL_DUPLICATE, contact.getEmail());
+            }
         }
     }
 

+ 5 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelServiceImpl.java

@@ -35,8 +35,8 @@ import java.util.stream.Collectors;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 import static com.citu.module.menduner.common.util.TimeUtils.generateDateTimeRange;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 import static com.citu.module.menduner.system.util.RecruitAnalysisUtils.packBarCount;
 
 /**
@@ -136,7 +136,7 @@ public class JobCvRelServiceImpl implements JobCvRelService {
     public void send(AppHireJobCvRelReqVO reqVO) {
         // 效验职位是否关闭
         JobAdvertisedDO job = jobAdvertisedService.getJobAdvertised(reqVO.getJobId());
-        if (MendunerStatusEnum.DISABLE.getStatus().equals(job.getStatus())) {
+        if (null == reqVO || MendunerStatusEnum.DISABLE.getStatus().equals(job.getStatus())) {
             throw exception(JOB_CV_REL_JOB_STOP_DELIVERY);
         }
 
@@ -213,7 +213,7 @@ public class JobCvRelServiceImpl implements JobCvRelService {
             }
         }
         return result.stream()
-                .filter(c->!PersonSexEnum.UNKNOWN.getName().equals(c.getKey()))
+                .filter(c -> !PersonSexEnum.UNKNOWN.getName().equals(c.getKey()))
                 .collect(Collectors.toList());
     }
 
@@ -266,7 +266,7 @@ public class JobCvRelServiceImpl implements JobCvRelService {
                 )
                 .collect(Collectors.toList());
         return packBarCount(sortedResult.stream()
-                .filter(c->null!=c.getKey())
+                .filter(c -> null != c.getKey())
                 .collect(Collectors.toList())
         );
     }
@@ -295,7 +295,7 @@ public class JobCvRelServiceImpl implements JobCvRelService {
                 )
                 .collect(Collectors.toList());
         return packBarCount(sortedResult.stream()
-                .filter(c->null!=c.getKey())
+                .filter(c -> null != c.getKey())
                 .collect(Collectors.toList()));
     }
 

+ 11 - 16
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/order/TradeOrderService.java

@@ -4,6 +4,8 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.app.jobhunt.order.vo.AppTradeOrderPageReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.order.vo.AppTradeOrderRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.order.vo.*;
+import com.citu.module.menduner.system.controller.base.order.AppTradeOrderGetReqVO;
+import com.citu.module.menduner.system.controller.base.order.AppTradeOrderGetRespVO;
 import com.citu.module.menduner.system.controller.base.order.TradeOrderCreateReqVO;
 import com.citu.module.menduner.system.controller.base.order.TradeOrderPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.order.TradeOrderDO;
@@ -21,7 +23,7 @@ public interface TradeOrderService {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createOrder(TradeOrderCreateReqVO createReqVO);
+    Long createOrder(TradeOrderCreateReqVO createReqVO,String payKey);
 
     /**
      * 获得订单
@@ -70,6 +72,7 @@ public interface TradeOrderService {
      */
     int cancelOrderBySystem();
 
+
     // ========== 求职端 ==========
     /**
      * 获得订单分页
@@ -79,6 +82,13 @@ public interface TradeOrderService {
      */
     PageResult<AppTradeOrderRespVO> page(AppTradeOrderPageReqVO reqVO);
 
+    /**
+     * 获得未支付的订单
+     *
+     * @param reqVO  参数
+     * @return 订单
+     */
+    AppTradeOrderGetRespVO getOrderByUnpaid(AppTradeOrderGetReqVO reqVO, Long enterpriseId);
 
     // ========== 招聘端 ==========
     /**
@@ -89,19 +99,4 @@ public interface TradeOrderService {
      */
     PageResult<AppRecruitTradeOrderRespVO> page(AppRecruitTradeOrderPageReqVO reqVO);
 
-    /**
-     * 创建订单
-     *
-     * @param reqVO 创建信息
-     * @return 编号
-     */
-    Long create(AppRecruitTradeOrderCreateReqVO reqVO);
-
-    /**
-     * 获得未支付的订单
-     *
-     * @param reqVO  参数
-     * @return 订单
-     */
-    AppRecruitTradeOrderGetRespVO getOrderByUnpaid(AppRecruitTradeOrderGetReqVO reqVO);
 }

+ 11 - 28
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/order/TradeOrderServiceImpl.java

@@ -7,6 +7,8 @@ import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.controller.app.jobhunt.order.vo.AppTradeOrderPageReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.order.vo.AppTradeOrderRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.order.vo.*;
+import com.citu.module.menduner.system.controller.base.order.AppTradeOrderGetReqVO;
+import com.citu.module.menduner.system.controller.base.order.AppTradeOrderGetRespVO;
 import com.citu.module.menduner.system.controller.base.order.TradeOrderCreateReqVO;
 import com.citu.module.menduner.system.controller.base.order.TradeOrderPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.order.TradeOrderDO;
@@ -57,12 +59,7 @@ import static com.citu.module.pay.enums.ErrorCodeConstants.PAY_ORDER_NOT_FOUND;
 @Slf4j
 public class TradeOrderServiceImpl implements TradeOrderService {
 
-    /**
-     * 接入的应用编号
-     * <p>
-     * 从 [支付管理 -> 应用信息] 里添加
-     */
-    private static final String PAY_APP_KEY = "mde_job";
+
     @Resource
     private PayOrderApi payOrderApi;
     @Resource
@@ -82,11 +79,12 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     }
 
     @Override
-    public Long createOrder(TradeOrderCreateReqVO createReqVO) {
+    public Long createOrder(TradeOrderCreateReqVO createReqVO,String payKey) {
         // 1.1 获得商品
         // 1.2 插入 订单
         TradeOrderDO tradeOrderDO = new TradeOrderDO().setUserId(createReqVO.getUserId())
                 .setUserType(createReqVO.getUserType()).setEnterpriseId(createReqVO.getEnterpriseId())
+                .setAppKey(payKey)
                 .setSpuId(createReqVO.getSpuId()).setSpuName(createReqVO.getSpuName())
                 .setPrice(createReqVO.getPrice()).setPayStatus(false).setRefundPrice(0L);
         // 初始化默认
@@ -97,7 +95,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
 
         // 2.1 创建支付单
         Long payOrderId = payOrderApi.createOrder(new PayOrderCreateReqDTO()
-                .setAppKey(PAY_APP_KEY).setUserIp(getClientIP()) // 支付应用
+                .setAppKey(payKey).setUserIp(getClientIP()) // 支付应用
                 .setMerchantOrderId(tradeOrderDO.getId().toString()) // 业务的订单编号
                 .setSubject(createReqVO.getSpuName()).setBody("")
                 .setPrice(Math.toIntExact(createReqVO.getPrice())) // 价格信息
@@ -144,7 +142,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         }
         //发送mq做业务逻辑处理
         TradeOrderDO order = tradeOrderMapper.selectById(id);
-        orderProducer.send(order.getSpuId(), TradeOrderTypeEnum.getByType(order.getType()));
+        orderProducer.send(order);
 
     }
 
@@ -215,7 +213,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         String refundId = order.getId() + "-refund";
         // 2.2 创建退款单
         Long payRefundId = payRefundApi.createRefund(new PayRefundCreateReqDTO()
-                .setAppKey(PAY_APP_KEY).setUserIp(getClientIP()) // 支付应用
+                .setAppKey(order.getAppKey()).setUserIp(getClientIP()) // 支付应用
                 .setMerchantOrderId(String.valueOf(order.getId())) // 支付单号
                 .setMerchantRefundId(refundId)
                 .setReason("想退钱").setPrice(Math.toIntExact(order.getPrice()))).getCheckedData();// 价格信息
@@ -342,30 +340,15 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     }
 
     @Override
-    public Long create(AppRecruitTradeOrderCreateReqVO reqVO) {
-        // 获取待支付的订单
-        TradeOrderTypeEnum type = TradeOrderTypeEnum.getByType(reqVO.getType());
-        TradeOrderCreateReqVO dto = new TradeOrderCreateReqVO();
-        dto.setUserType(String.valueOf(MdeUserTypeEnum.ENTERPRISE_USER.getType()));
-        dto.setEnterpriseId(LoginUserContext.getEnterpriseId());
-        dto.setUserId(LoginUserContext.getUserId());
-        dto.setType(reqVO.getType());
-        dto.setSpuId(reqVO.getSpuId());
-        dto.setSpuName(type.getName() + ": " + reqVO.getSpuName());
-        dto.setPrice(reqVO.getPrice());
-        return createOrder(dto);
-    }
-
-    @Override
-    public AppRecruitTradeOrderGetRespVO getOrderByUnpaid(AppRecruitTradeOrderGetReqVO reqVO) {
+    public AppTradeOrderGetRespVO getOrderByUnpaid(AppTradeOrderGetReqVO reqVO, Long enterpriseId) {
 
-        TradeOrderDO order = tradeOrderMapper.getOrderByUnpaid(LoginUserContext.getEnterpriseId(),
+        TradeOrderDO order = tradeOrderMapper.getOrderByUnpaid(enterpriseId,
                 LoginUserContext.getUserId(), reqVO.getType(), reqVO.getSpuId());
         if (null == order) {
             return null;
         }
         PayOrderBaseRespDTO respDTO = payOrderApi.getOrder2(order.getPayOrderId()).getCheckedData();
-        AppRecruitTradeOrderGetRespVO respVO = new AppRecruitTradeOrderGetRespVO();
+        AppTradeOrderGetRespVO respVO = new AppTradeOrderGetRespVO();
         respVO.setOrder(order);
         respVO.setPayOrder(respDTO);
 

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

@@ -344,6 +344,7 @@
 1_100_046_012=Product name cannot be empty
 1_100_046_013=Product amount cannot be empty
 1_100_046_014=Transaction order cancellation failed, order is not in the 'Pending Payment' status
+1_100_046_015=Order type cannot be empty
 # ========== 用户实名制 1_100_047_000 ==========
 1_100_047_001=User real name system does not exist
 # ========== 品牌 1_100_048_000 ==========

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

@@ -347,6 +347,7 @@
 1_100_046_012=商品名称不能为空
 1_100_046_013=商品金额不能为空
 1_100_046_014=交易订单取消失败,订单不是【待支付】状态
+1_100_046_015=订单类型不能为空
 # ========== 用户实名制 1_100_047_000 ==========
 1_100_047_001=用户实名制不存在
 # ========== 品牌 1_100_048_000 ==========