Просмотр исходного кода

1、增加新任命权限判断
2、优化邮件模版参数

rayson 6 месяцев назад
Родитель
Сommit
27139c05ad
14 измененных файлов с 343 добавлено и 71 удалено
  1. 183 30
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/CommonConstants.java
  2. 3 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  3. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/aop/VipEntitlementCheck.java
  4. 7 8
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/aop/VipEntitlementCheckAspect.java
  5. 12 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/common/data/NewAppointmentsController.java
  6. 4 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthServiceImpl.java
  7. 1 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java
  8. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/register/EnterpriseRegisterServiceImpl.java
  9. 17 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/vip/EnterpriseEntitlementService.java
  10. 89 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/vip/EnterpriseEntitlementServiceImpl.java
  11. 5 11
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/EnterpriseEmailNoticeTask.java
  12. 13 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/MessageUtils.java
  13. 1 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  14. 1 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

+ 183 - 30
menduner/menduner-common/src/main/java/com/citu/module/menduner/common/CommonConstants.java

@@ -1,5 +1,12 @@
 package com.citu.module.menduner.common;
 
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.RandomUtil;
+import com.citu.framework.common.util.date.DateUtils;
+import com.citu.module.system.api.mail.dto.MailSendSingleToUserReqDTO;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -9,65 +16,211 @@ import java.util.Map;
  * 公共常量
  **/
 public class CommonConstants {
-    /** 邮箱验证码 **/
-    public static final String EMAIL_TEMPLATE_CODE = "menduner-code";
 
-    /** 企业登录邮箱初始化密码 **/
+    /** ========== 邮件模版 ========== **/
+    /**
+     * 邮箱验证码
+     **/
+    public static final String EMAIL_VERIFICATION_CODE = "menduner-code";
+
+    public static MailSendSingleToUserReqDTO packEmailVerificationCode(String email, Object code) {
+        MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
+        reqDTO.setMail(email);
+        reqDTO.setTemplateCode(EMAIL_VERIFICATION_CODE);
+        reqDTO.setTemplateParams(MapUtil.builder("code", code).build());
+        return reqDTO;
+    }
+
+    /**
+     * 企业登录邮箱初始化密码
+     **/
     public static final String EMAIL_ENTERPRISE_INIT_PASSWORD = "menduner-enterprise-init-password";
 
-    /** 企业发布职位额度赠送提醒 **/
+    public static MailSendSingleToUserReqDTO packEmailEnterpriseInitPassword(String email, Object password) {
+        MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
+        reqDTO.setMail(email);
+        reqDTO.setTemplateCode(EMAIL_ENTERPRISE_INIT_PASSWORD);
+        reqDTO.setTemplateParams(MapUtil.builder("password", password).build());
+        return reqDTO;
+    }
+
+    /**
+     * 企业发布职位额度赠送提醒
+     **/
     public static final String EMAIL_ENTERPRISE_PUBLISH_JOB_QUOTA = "menduner-enterprise-publish-job-quota";
 
-    /** 系统提示-后台管理系统公共模版 **/
+    public static MailSendSingleToUserReqDTO packEmailEnterprisePublishJobQuota
+            (String email, String enterpriseName, Integer jobNum) {
+        MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
+        reqDTO.setMail(email);
+        reqDTO.setTemplateCode(CommonConstants.EMAIL_ENTERPRISE_PUBLISH_JOB_QUOTA);
+        Map<String, Object> templateParamMap = new HashMap<>();
+        templateParamMap.put("enterpriseName", enterpriseName);
+        templateParamMap.put("jobNum", jobNum);
+        reqDTO.setTemplateParams(templateParamMap);
+        return reqDTO;
+    }
+
+    /**
+     * 系统提示-后台管理系统公共模版
+     **/
     public static final String EMAIL_SYS_NOTIFY_TEMPLATE = "menduner-sys-notify";
 
-    /** ========== 短信模版 ========== **/
+    public static MailSendSingleToUserReqDTO packSysNotifyTemplate(String email, String content) {
+        MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
+        reqDTO.setMail(email);
+        reqDTO.setTemplateCode(CommonConstants.EMAIL_SYS_NOTIFY_TEMPLATE);
+        reqDTO.setTemplateParams(MapUtil.<String, Object>builder()
+                .put("content", content)
+                .build());
+        return reqDTO;
+    }
+
+    /**
+     * 企业注册通过
+     **/
+    public static final String EMAIL_ENTERPRISE_REGISTER_SUCCESS = "menduner-enterprise-register";
+
+    public static MailSendSingleToUserReqDTO packEnterpriseRegisterSuccess(String email) {
+        MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
+        reqDTO.setMail(email);
+        reqDTO.setTemplateCode(CommonConstants.EMAIL_ENTERPRISE_REGISTER_SUCCESS);
+        reqDTO.setTemplateParams(MapUtil.<String, Object>builder().build());
+        return reqDTO;
+    }
+
+    /**
+     * 生日祝福
+     **/
+    public static final String EMAIL_BIRTHDAY_WISH = "menduner-birthday-wish";
+
+    public static MailSendSingleToUserReqDTO packBirthdayWish(String email) {
+        MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
+        reqDTO.setMail(email);
+        reqDTO.setTemplateCode(CommonConstants.EMAIL_BIRTHDAY_WISH);
+        reqDTO.setTemplateParams(MapUtil.<String, Object>builder().build());
+        return reqDTO;
+    }
+
+    /**
+     * 积分兑换
+     **/
+    public static final String EMAIL_SYS_POINT_REDEEM = "menduner-sys-point-redeem";
+
+    public static MailSendSingleToUserReqDTO packPointRedeemTemplate(String email, Object name) {
+        MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
+        reqDTO.setMail(email);
+        reqDTO.setTemplateCode(CommonConstants.EMAIL_SYS_POINT_REDEEM);
+        // 将当前日期序列化成DateUtils.FORMAT_YEAR_MONTH_DAY_CHINESE格式
+        reqDTO.setTemplateParams(MapUtil.<String, Object>builder()
+                .put("name", name)
+//                .put("date", LocalDate.now()
+//                        .format(DateTimeFormatter.ofPattern(DateUtils.FORMAT_YEAR_MONTH_DAY_CHINESE)))
+                .build()
+        );
+        return reqDTO;
+
+    }
+
+    /**
+     * 提醒查看简历
+     **/
+    public static final String EMAIL_REMIND_VIEW_CV = "menduner-remind-view-cv";
+
+    public static MailSendSingleToUserReqDTO packRemindViewCvTemplate(String email, String name, String peopleNum) {
+        MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
+        reqDTO.setMail(email);
+        reqDTO.setTemplateCode(CommonConstants.EMAIL_REMIND_VIEW_CV);
+        reqDTO.setTemplateParams(MapUtil.<String, Object>builder()
+                .put("name", name)
+                .put("peopleNum", peopleNum)
+                .build()
+        );
+        return reqDTO;
+    }
+
+
+    /**
+     * ========== 短信模版 ==========
+     **/
     public static final String SMS_SYS_NOTIFY_TEMPLATE = "menduner-sys-notify";
 
-    /** ========== 站内信模版 ========== **/
-    public static final List<Long> notifySysUserId = new ArrayList<>(){{ add(131L);}};
-    public static final Map<String,String> notifySysStrMap = new HashMap<>(){{
-        put(NOTIFY_SYS_POINT_REDEEM,"积分兑换");
-        put(NOTIFY_SYS_INVOICE,"开具发票");
-        put(NOTIFY_SYS_ENTERPRISE_REGISTER,"企业申请注册");
-        put(NOTIFY_SYS_HUNTER_SERVICE,"猎头服务");
+    /**
+     * ========== 站内信模版 ==========
+     **/
+    public static final List<Long> notifySysUserId = new ArrayList<>() {{
+        add(131L);
+    }};
+    public static final Map<String, String> notifySysStrMap = new HashMap<>() {{
+        put(NOTIFY_SYS_POINT_REDEEM, "积分兑换");
+        put(NOTIFY_SYS_INVOICE, "开具发票");
+        put(NOTIFY_SYS_ENTERPRISE_REGISTER, "企业申请注册");
+        put(NOTIFY_SYS_HUNTER_SERVICE, "猎头服务");
     }};
-    /** 系统提示-积分兑换 1-{商品},2-{兑换积分},3-{联系人},4-{联系电话}**/
+    /**
+     * 系统提示-积分兑换 1-{商品},2-{兑换积分},3-{联系人},4-{联系电话}
+     **/
     public static final String NOTIFY_SYS_POINT_REDEEM = "menduner_sys_point_redeem";
-    /** 系统提示-开局发票 1-{开票金额},2-{企业}**/
+    /**
+     * 系统提示-开局发票 1-{开票金额},2-{企业}
+     **/
     public static final String NOTIFY_SYS_INVOICE = "menduner_sys_invoice";
-    /** 系统提示-企业申请注册 1-{企业}**/
+    /**
+     * 系统提示-企业申请注册 1-{企业}
+     **/
     public static final String NOTIFY_SYS_ENTERPRISE_REGISTER = "menduner_sys_enterprise_register";
-    /** 系统提示-猎头服务 1-{企业}**/
+    /**
+     * 系统提示-猎头服务 1-{企业}
+     **/
     public static final String NOTIFY_SYS_HUNTER_SERVICE = "menduner_sys_hunter_service";
 
     /** ========== im 消息模版 ========== **/
-    /** 投递简历时,发送给职位发布者 **/
+    /**
+     * 投递简历时,发送给职位发布者
+     **/
     public static final String IM_SYS_JOB_CV_REL_TEMPLATE = "您发布的职位:【{}】 ,收到新的简历,请查收。";
-    /** 简历被查看时,发送给投递者 **/
+    /**
+     * 简历被查看时,发送给投递者
+     **/
     public static final String IM_SYS_CV_LOOK_TEMPLATE = "您投递的简历,已被【{}】查看。";
-    /** 面试邀约,发送给投递者 **/
+    /**
+     * 面试邀约,发送给投递者
+     **/
     public static final String IM_SYS_INTERVIEW_INVITE_TEMPLATE = "【{}】邀约您参加面试,职位:【{}】 ,面试时间:【{}】, 请前往“个人中心-求职反馈”中查看最新信息。";
-    /** 面试邀约修改,发送给投递者 **/
+    /**
+     * 面试邀约修改,发送给投递者
+     **/
     public static final String IM_SYS_INTERVIEW_INVITE_MODIFY_TEMPLATE = "【{}】修改了面试邀约信息,职位:【{}】 ,面试时间:【{}】, 请前往“个人中心-求职反馈”中查看最新信息。";
-    /** 面试进度提醒,发送给投递者 **/
+    /**
+     * 面试进度提醒,发送给投递者
+     **/
     public static final String IM_SYS_INTERVIEW_PROGRESS_TEMPLATE = "【{}】已更新面试进度,职位:【{}】 ,面试进度:【{}】, 请前往“个人中心-求职反馈”中查看最新信息。";
-    /** 同意面试邀约,发送给职位发布者 **/
+    /**
+     * 同意面试邀约,发送给职位发布者
+     **/
     public static final String IM_SYS_INTERVIEW_INVITE_AGREE_TEMPLATE = "【{}】用户同意了您发起的【{}】职位面试邀请,请前往“人才招聘-面试”中查看。";
-    /** 拒绝面试邀约,发送给职位发布者 **/
+    /**
+     * 拒绝面试邀约,发送给职位发布者
+     **/
     public static final String IM_SYS_INTERVIEW_INVITE_REJECT_TEMPLATE = "【{}】用户拒绝了您发起的【{}】职位面试邀请,请前往“人才招聘-面试”中查看。";
-    /** 企业开票提醒,发送给企业 **/
+    /**
+     * 企业开票提醒,发送给企业
+     **/
     public static final String IM_SYS_ENTERPRISE_INVOICE_TEMPLATE = "您申请的发票已开具完成,请前往“财务中心-订单管理-交易订单”查看详情。";
 
     /** ========== 小程序订阅 消息模版 ========== **/
-    /** 简历投递反馈通知,发送给投递者 **/
-    public static final Map<String,String> WX_SUBSCRIBE_TEMPLATE_PAGE = new HashMap<>() {{
-        put(WX_SUBSCRIBE_CV_FEEDBACK_TEMPLATE,WX_SUBSCRIBE_CV_FEEDBACK_TEMPLATE_PAGE );
-        put(WX_SUBSCRIBE_INTERVIEW_REMIND_TEMPLATE,WX_SUBSCRIBE_INTERVIEW_REMIND_TEMPLATE_PAGE );
+    /**
+     * 简历投递反馈通知,发送给投递者
+     **/
+    public static final Map<String, String> WX_SUBSCRIBE_TEMPLATE_PAGE = new HashMap<>() {{
+        put(WX_SUBSCRIBE_CV_FEEDBACK_TEMPLATE, WX_SUBSCRIBE_CV_FEEDBACK_TEMPLATE_PAGE);
+        put(WX_SUBSCRIBE_INTERVIEW_REMIND_TEMPLATE, WX_SUBSCRIBE_INTERVIEW_REMIND_TEMPLATE_PAGE);
     }};
     public static final String WX_SUBSCRIBE_CV_FEEDBACK_TEMPLATE = "简历投递反馈通知";
     public static final String WX_SUBSCRIBE_CV_FEEDBACK_TEMPLATE_PAGE = "pages/index/my";
-    /** 线下面试提醒,发送给投递者 **/
+    /**
+     * 线下面试提醒,发送给投递者
+     **/
     public static final String WX_SUBSCRIBE_INTERVIEW_REMIND_TEMPLATE = "线下面试提醒";
     public static final String WX_SUBSCRIBE_INTERVIEW_REMIND_TEMPLATE_PAGE = "pages/index/my";
 

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

@@ -587,6 +587,9 @@ public interface ErrorCodeConstants {
 
     ErrorCode ENTERPRISE_ENTITLEMENT_QUOTA_OVERFLOW = new ErrorCode(1_100_054_002, "企业额度已超过");
 
+    ErrorCode ENTERPRISE_ENTITLEMENT_PERMISSION_DENIED = new ErrorCode(1_100_054_003, "您没有权限查看该信息,请您联系工作人员开通权限");
+
+
     // ========== 早报资讯 1_100_055_000 ==========
     ErrorCode MORNING_NEWS_NOT_EXISTS = new ErrorCode(1_100_055_001, "早报资讯不存在");
 
@@ -630,5 +633,4 @@ public interface ErrorCodeConstants {
 
     // ========== 新任命 1_100_064_000 ==========
     ErrorCode NEW_APPOINTMENTS_NOT_EXISTS = new ErrorCode(1_100_064_001, "新任命不存在");
-
 }

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/aop/VipEntitlementCheck.java

@@ -46,6 +46,10 @@ public @interface VipEntitlementCheck {
      * 企业权益-是否允许发布众聘职位
      **/
     String OPERATE_HIRE_JOB = "hire_job";
+    /**
+     * 企业权益-是否开启新任命
+     **/
+    String OPERATE_NEW_APPOINTMENT = "new_appointment";
 
     /**
      * 权益类型

+ 7 - 8
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/aop/VipEntitlementCheckAspect.java

@@ -14,7 +14,6 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
-
 import java.util.function.Consumer;
 import java.util.function.Supplier;
 
@@ -73,10 +72,9 @@ public class VipEntitlementCheckAspect {
     }
 
 
-
     private void deductQuota(boolean isEnterprise, Long enterpriseId,
-                          Long userId, String type,
-                          VipEntitlementCheck.OperationType operator) {
+                             Long userId, String type,
+                             VipEntitlementCheck.OperationType operator) {
 
         if (!isEnterprise || LoginUserContext.checkIsSystemUser()) {
             return;
@@ -88,7 +86,7 @@ public class VipEntitlementCheckAspect {
         EnterpriseEntitlementRespVO entitlementRespVO =
                 enterpriseEntitlementService.getByEnterpriseIdAndUserId(enterpriseId, userId);
 
-        // 过期会抛出异常,不过期则为false,不是vip也是false
+        // 企业是会员,但是过期了会抛出异常,不是会员不会抛出异常
         enterpriseEntitlementService.checkVipExpired(enterpriseId);
         // ========== end =========
 
@@ -101,14 +99,14 @@ public class VipEntitlementCheckAspect {
 //            // 新增不做效验
 //            return;
 //        }
-        deductQuota(type, entitlementRespVO,operator);
+        deductQuota(type, entitlementRespVO, operator);
     }
 
     /**
      * 扣减额度
      */
     private void deductQuota(String type, EnterpriseEntitlementRespVO entitlementRespVO, VipEntitlementCheck.OperationType operator) {
-        int amount =  -1;
+        int amount = -1;
 
         switch (type) {
             case OPERATE_PUBLISH_JOB:
@@ -142,7 +140,7 @@ public class VipEntitlementCheckAspect {
                                         int maxCount, int amount, VipEntitlementCheck.OperationType operator) {
         int currentCount = getCurrentCount.get();
         int newCount = currentCount + amount;
-         if (VipEntitlementCheck.OperationType.DEDUCT.equals(operator) && currentCount <= 0) {
+        if (VipEntitlementCheck.OperationType.DEDUCT.equals(operator) && currentCount <= 0) {
             throw exception(ENTERPRISE_ENTITLEMENT_QUOTA_OVERFLOW);
         }
 
@@ -155,4 +153,5 @@ public class VipEntitlementCheckAspect {
         setNewCount.accept(newCount);
     }
 
+
 }

+ 12 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/common/data/NewAppointmentsController.java

@@ -6,12 +6,15 @@ 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.aop.VipEntitlementCheck;
+import com.citu.module.menduner.system.aop.VipEntitlementCheckAspect;
 import com.citu.module.menduner.system.controller.base.appointment.NewAppointmentsConditionRespVO;
 import com.citu.module.menduner.system.controller.base.appointment.NewAppointmentsPageReqVO;
 import com.citu.module.menduner.system.controller.base.appointment.NewAppointmentsRespVO;
 import com.citu.module.menduner.system.controller.base.appointment.NewAppointmentsSimpleRespVO;
 import com.citu.module.menduner.system.dal.dataobject.appointment.NewAppointmentsDO;
 import com.citu.module.menduner.system.service.appointment.NewAppointmentsService;
+import com.citu.module.menduner.system.service.enterprise.vip.EnterpriseEntitlementService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -39,11 +42,16 @@ public class NewAppointmentsController {
     @Resource
     private NewAppointmentsService newAppointmentsService;
 
+    @Resource
+    private EnterpriseEntitlementService enterpriseEntitlementService;
+
 
     @GetMapping("/get")
     @Operation(summary = "获得新任命")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     public CommonResult<NewAppointmentsRespVO> get(@RequestParam("id") Long id) {
+        // 效验,没有权限抛出异常
+        enterpriseEntitlementService.checkPermission(VipEntitlementCheck.OPERATE_NEW_APPOINTMENT);
         NewAppointmentsDO newAppointments = newAppointmentsService.getNewAppointments(id);
         return success(BeanUtils.toBean(newAppointments, NewAppointmentsRespVO.class));
     }
@@ -57,6 +65,10 @@ public class NewAppointmentsController {
     @GetMapping("/page")
     @Operation(summary = "获得新任命分页")
     public CommonResult<PageResult<NewAppointmentsSimpleRespVO>> page(@Valid NewAppointmentsPageReqVO pageReqVO) {
+        if(pageReqVO.getPageNo()>1 || pageReqVO.getPageSize()>10) {
+            // 效验,没有权限抛出异常
+            enterpriseEntitlementService.checkPermission(VipEntitlementCheck.OPERATE_NEW_APPOINTMENT);
+        }
         PageResult<NewAppointmentsDO> pageResult = newAppointmentsService.getNewAppointmentsPage(pageReqVO);
         return success(BeanUtils.toBean(pageResult, NewAppointmentsSimpleRespVO.class));
     }

+ 4 - 10
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthServiceImpl.java

@@ -49,6 +49,8 @@ import java.util.concurrent.TimeUnit;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.common.util.servlet.ServletUtils.getClientIP;
+import static com.citu.module.menduner.common.CommonConstants.packEmailEnterpriseInitPassword;
+import static com.citu.module.menduner.common.CommonConstants.packEmailVerificationCode;
 import static com.citu.module.menduner.system.controller.base.logger.LoginLogCreateReqDTO.TYPE_ENTERPRISE_USER;
 import static com.citu.module.menduner.system.dal.redis.RedisKeyConstants.MDE_AUTH_ENTERPRISE_USER_PWD_LOCK;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
@@ -142,11 +144,7 @@ public class MdeEnterpriseAuthServiceImpl implements MdeEnterpriseAuthService {
             if (null == user.getLoginDate() && userBindService.isPasswordMatch(user.getEmail(), user.getPassword())) {
                 // 效验有没有更改过密码
                 // 没有则发送邮箱
-                MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
-                reqDTO.setMail(email);
-                reqDTO.setTemplateCode(CommonConstants.EMAIL_ENTERPRISE_INIT_PASSWORD);
-                reqDTO.setTemplateParams(MapUtil.builder("password", (Object) email).build());
-                mailSendApi.sendSingleMailToMember(reqDTO).getCheckedData();
+                mailSendApi.sendSingleMailToMember(packEmailEnterpriseInitPassword(email, email)).getCheckedData();
                 throw exception(MDE_USER_EMAIL_INIT_PASSWORD);
             } else {
                 // 获取错误次数
@@ -307,12 +305,8 @@ public class MdeEnterpriseAuthServiceImpl implements MdeEnterpriseAuthService {
 
     @Override
     public void sendEmail(String email) {
-        MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
-        reqDTO.setMail(email);
-        reqDTO.setTemplateCode(CommonConstants.EMAIL_TEMPLATE_CODE);
         Object code = RandomUtil.randomNumbers(6);
-        reqDTO.setTemplateParams(MapUtil.builder("code", code).build());
-        mailSendApi.sendSingleMailToMember(reqDTO).getCheckedData();
+        mailSendApi.sendSingleMailToMember(packEmailVerificationCode(email, code)).getCheckedData();
         redisTemplate.opsForValue().set(email, code, 5, TimeUnit.MINUTES);
     }
 

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

@@ -408,6 +408,7 @@ public class EnterpriseServiceImpl implements EnterpriseService {
     public void checkVipExpired(Long id) {
         EnterpriseDO enterprise = validateEnterpriseExists(id);
         if (null == enterprise.getVipExpireDate()) {
+            // 没有时间代表的是有权益次数额度,但是没有会员
             return;
         }
         if (enterprise.getVipExpireDate().isBefore(LocalDateTime.now())) {

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

@@ -44,6 +44,7 @@ import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exce
 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.common.CommonConstants.NOTIFY_SYS_ENTERPRISE_REGISTER;
+import static com.citu.module.menduner.common.CommonConstants.packEnterpriseRegisterSuccess;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 
 /**
@@ -218,7 +219,8 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
                     .build();
             userBindService.createUser(userBindDO);
         }
-
+        // 给管理员发邮件
+        messageUtils.sendMail(packEnterpriseRegisterSuccess(enterpriseRegister.getEmail()));
 
     }
 

+ 17 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/vip/EnterpriseEntitlementService.java

@@ -88,4 +88,21 @@ public interface EnterpriseEntitlementService {
      * @return 是否过期
      */
     void checkVipExpired(Long enterpriseId);
+
+
+    /**
+     * 验证当前登录用户是否有操作权限,没有则抛出异常
+     *
+     * @param type VipEntitlementCheck.type
+     */
+     void checkPermission(String type);
+
+    /**
+     * 验证当前登录用户是否有操作权限,没有则抛出异常
+     *
+     * @param type VipEntitlementCheck.type
+     * @return true 有权限 | false 无权限/无额度
+     */
+     boolean checkPermissionRetBol(String type);
+
 }

+ 89 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/vip/EnterpriseEntitlementServiceImpl.java

@@ -3,6 +3,7 @@ package com.citu.module.menduner.system.service.enterprise.vip;
 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.base.enterprise.vip.*;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseEntitlementDO;
@@ -19,7 +20,10 @@ import java.time.LocalDateTime;
 import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.aop.VipEntitlementCheck.*;
+import static com.citu.module.menduner.system.aop.VipEntitlementCheck.OPERATE_NEW_APPOINTMENT;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.ENTERPRISE_ENTITLEMENT_NOT_EXISTS;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.ENTERPRISE_ENTITLEMENT_PERMISSION_DENIED;
 
 /**
  * 企业权益记录 Service 实现类
@@ -248,4 +252,89 @@ public class EnterpriseEntitlementServiceImpl implements EnterpriseEntitlementSe
     public void checkVipExpired(Long enterpriseId) {
         enterpriseService.checkVipExpired(enterpriseId);
     }
+
+    @Override
+    public void checkPermission(String type) {
+        // 获取权益
+        EnterpriseEntitlementRespVO entitlementRespVO =
+                getByEnterpriseIdAndUserId(LoginUserContext.getEnterpriseId(), LoginUserContext.getUserId());
+        // 企业是会员,但是过期了会抛出异常,不是会员不会抛出异常
+        checkVipExpired(LoginUserContext.getEnterpriseId());
+        switch (type) {
+            case OPERATE_PUBLISH_JOB:
+                if (entitlementRespVO.getPublishJobCount() <= 0) {
+                    throw exception(ENTERPRISE_ENTITLEMENT_PERMISSION_DENIED);
+                }
+                break;
+            case OPERATE_SEARCH:
+                if (entitlementRespVO.getSearchCount() <= 0) {
+                    throw exception(ENTERPRISE_ENTITLEMENT_PERMISSION_DENIED);
+                }
+                break;
+            case OPERATE_LOOK_CV:
+                if (entitlementRespVO.getLookCvCount() <= 0) {
+                    throw exception(ENTERPRISE_ENTITLEMENT_PERMISSION_DENIED);
+                }
+                break;
+            case OPERATE_PERSON_MAP:
+                if (!entitlementRespVO.getPersonMap()) {
+                    throw exception(ENTERPRISE_ENTITLEMENT_PERMISSION_DENIED);
+                }
+                break;
+            case OPERATE_HIRE_JOB:
+                if (!entitlementRespVO.getHireJob()) {
+                    throw exception(ENTERPRISE_ENTITLEMENT_PERMISSION_DENIED);
+                }
+                break;
+            case OPERATE_NEW_APPOINTMENT:
+                if (!entitlementRespVO.getNewAppointment()) {
+                    throw exception(ENTERPRISE_ENTITLEMENT_PERMISSION_DENIED);
+                }
+                break;
+            default:
+        }
+    }
+
+    @Override
+    public boolean checkPermissionRetBol(String type) {
+        // 获取权益
+        EnterpriseEntitlementRespVO entitlementRespVO =
+                getByEnterpriseIdAndUserId(LoginUserContext.getEnterpriseId(), LoginUserContext.getUserId());
+        // 企业是会员,但是过期了会抛出异常,不是会员不会抛出异常
+        checkVipExpired(LoginUserContext.getEnterpriseId());
+        switch (type) {
+            case OPERATE_PUBLISH_JOB:
+                if (entitlementRespVO.getPublishJobCount() > 0) {
+                    return true;
+                }
+                break;
+            case OPERATE_SEARCH:
+                if (entitlementRespVO.getSearchCount() > 0) {
+                    return true;
+                }
+                break;
+            case OPERATE_LOOK_CV:
+                if (entitlementRespVO.getLookCvCount() > 0) {
+                    return true;
+                }
+                break;
+            case OPERATE_PERSON_MAP:
+                if (entitlementRespVO.getPersonMap()) {
+                    return true;
+                }
+                break;
+            case OPERATE_HIRE_JOB:
+                if (entitlementRespVO.getHireJob()) {
+                    return true;
+                }
+                break;
+            case OPERATE_NEW_APPOINTMENT:
+                if (entitlementRespVO.getNewAppointment()) {
+                    return true;
+                }
+                break;
+            default:
+        }
+        return false;
+    }
 }

+ 5 - 11
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/EnterpriseEmailNoticeTask.java

@@ -6,21 +6,20 @@ import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseEntitlementDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
-import com.citu.module.menduner.common.CommonConstants;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
 import com.citu.module.menduner.system.service.enterprise.vip.EnterpriseEntitlementService;
 import com.citu.module.system.api.mail.MailSendApi;
-import com.citu.module.system.api.mail.dto.MailSendSingleToUserReqDTO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StopWatch;
 
 import javax.annotation.Resource;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import static com.citu.module.menduner.common.CommonConstants.packEmailEnterprisePublishJobQuota;
+
 /**
  * 企业邮箱通知任务
  * 该业务用于春节前,免费赠送3个
@@ -82,14 +81,9 @@ public class EnterpriseEmailNoticeTask {
             }
             log.info("id({}),企业:({})-用户:({})发送邮件", enterprise.getId(), enterprise.getName(), userBindDO.getName());
 
-            MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
-            reqDTO.setMail(userBindDO.getEmail());
-            reqDTO.setTemplateCode(CommonConstants.EMAIL_ENTERPRISE_PUBLISH_JOB_QUOTA);
-            Map<String, Object> templateParamMap = new HashMap<>();
-            templateParamMap.put("enterpriseName", enterprise.getName());
-            templateParamMap.put("jobNum", JOB_NUM);
-            reqDTO.setTemplateParams(templateParamMap);
-            mailSendApi.sendSingleMailToMember(reqDTO).getCheckedData();
+            mailSendApi.sendSingleMailToMember(
+                    packEmailEnterprisePublishJobQuota(userBindDO.getEmail(),enterprise.getName(),JOB_NUM)
+            ).getCheckedData();
 
             // 增加额度
             EnterpriseEntitlementRespVO entitlement =

+ 13 - 10
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/MessageUtils.java

@@ -24,8 +24,7 @@ import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
 
-import static com.citu.module.menduner.common.CommonConstants.WX_SUBSCRIBE_TEMPLATE_PAGE;
-import static com.citu.module.menduner.common.CommonConstants.notifySysStrMap;
+import static com.citu.module.menduner.common.CommonConstants.*;
 
 /**
  * 消息通知
@@ -92,13 +91,10 @@ public class MessageUtils {
                             .build());
                     smsSendApi.sendSingleSmsToAdmin(smsReqDTO);
                     // 发送邮件
-                    MailSendSingleToUserReqDTO emailReqDTO = new MailSendSingleToUserReqDTO();
-                    emailReqDTO.setMail(data.getEmail());
-                    emailReqDTO.setTemplateCode(CommonConstants.EMAIL_SYS_NOTIFY_TEMPLATE);
-                    emailReqDTO.setTemplateParams(MapUtil.<String, Object>builder()
-                            .put("content", notifySysStrMap.get(reqDTO.getTemplateCode()))
-                            .build());
-                    mailSendApi.sendSingleMailToAdmin(emailReqDTO);
+
+                    mailSendApi.sendSingleMailToAdmin(
+                            packSysNotifyTemplate(data.getEmail(),notifySysStrMap.get(reqDTO.getTemplateCode()))
+                    );
                 }
             }
             // 发送系统消息通知
@@ -220,5 +216,12 @@ public class MessageUtils {
         return reqDTO;
     }
 
-
+    /**
+     * 发送邮件
+     *
+     * @param reqDTO 请求参数
+     */
+    public void sendMail(MailSendSingleToUserReqDTO reqDTO) {
+        mailSendApi.sendSingleMailToMember(reqDTO).getCheckedData();
+    }
 }

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

@@ -408,6 +408,7 @@
 # ========== 企业权益记录 1_100_054_000 ==========
 1_100_054_001=Enterprise equity record does not exist
 1_100_054_002=Enterprise credit limit has exceeded
+1_100_054_003=You do not have permission to view this information. Please contact the staff to grant permission
 # ========== 早报资讯 1_100_055_000 ==========
 1_100_055_001=Morning News does not exist
 # ========== 招聘会 1_100_056_000 ==========

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

@@ -409,6 +409,7 @@
 # ========== 企业权益记录 1_100_054_000 ==========
 1_100_054_001=企业权益记录不存在
 1_100_054_002=企业额度已超过
+1_100_054_003=您没有权限查看该信息,请您联系工作人员开通权限
 # ========== 早报资讯 1_100_055_000 ==========
 1_100_055_001=早报资讯不存在
 # ========== 招聘会 1_100_056_000 ==========