فهرست منبع

1、增加企业邮箱通知任务逻辑

rayson 7 ماه پیش
والد
کامیت
71a032e83f
12فایلهای تغییر یافته به همراه184 افزوده شده و 1 حذف شده
  1. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/aop/VipEntitlementCheckAspect.java
  2. 34 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/common/task/TaskController.java
  3. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/person/resume/AppPersonInfoSaveSimpleReqVO.java
  4. 2 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/enterprise/vo/AppRecruitEnterpriseRespVO.java
  5. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseDO.java
  6. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseMapper.java
  7. 7 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseUserBindMapper.java
  8. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseService.java
  9. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java
  10. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java
  11. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindServiceImpl.java
  12. 105 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/EnterpriseEmailNoticeTask.java

+ 0 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/aop/VipEntitlementCheckAspect.java

@@ -142,7 +142,6 @@ public class VipEntitlementCheckAspect {
         if (newCount > maxCount) {
             // 用户持有的额度大于套餐的额度
             // TODO 1、管理员给用户加的额度 ,要不要扣额度?
-            // TODO 2、如果旧职位是开启状态的,现在操作关闭会计算累加
             // return;
         }
 

+ 34 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/common/task/TaskController.java

@@ -0,0 +1,34 @@
+package com.citu.module.menduner.system.controller.app.common.task;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.system.task.EnterpriseEmailNoticeTask;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+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 javax.annotation.Resource;
+
+@Tag(name = "公共 - 触发任务")
+@RestController
+@RequestMapping("/menduner/system/task")
+@Validated
+@Slf4j
+public class TaskController {
+
+    @Resource
+    private EnterpriseEmailNoticeTask enterpriseEmailNoticeTask;
+
+
+    @Operation(summary = "企业邮箱通知任务(并修改非vip企业的职位发布数量为3)")
+    @GetMapping("/notice/enterprise/email")
+    public CommonResult<Boolean> hello() {
+        enterpriseEmailNoticeTask.sendEmailNotice();
+        return CommonResult.success(true);
+    }
+
+
+}

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/person/resume/AppPersonInfoSaveSimpleReqVO.java

@@ -13,6 +13,9 @@ import java.util.List;
 @Schema(description = "menduner 人才简历-简易基本信息 Request VO")
 public class AppPersonInfoSaveSimpleReqVO {
 
+    @Schema(description = "头像地址")
+    private String avatar;
+
     @NotBlank(message = "{1_100_001_003}")
     @Schema(description = "真实姓名", example = "王五")
     private String name;

+ 2 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/enterprise/vo/AppRecruitEnterpriseRespVO.java

@@ -70,5 +70,7 @@ public class AppRecruitEnterpriseRespVO {
     @Schema(description = "是否首次")
     private Boolean first;
 
+    @Schema(description = "业务标识,预留字段表示某个业务是否完成")
+    private Boolean bizFlag;
 
 }

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

@@ -143,6 +143,10 @@ public class EnterpriseDO extends TenantBaseDO {
      * 是否首次
      */
     private Boolean first;
+    /**
+     * 业务标识,预留字段表示某个业务是否完成
+     */
+    private Boolean bizFlag;
     /**
      * 帐号状态(0正常 1停用)
      **/

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

@@ -201,4 +201,12 @@ public interface EnterpriseMapper extends BaseMapperX<EnterpriseDO> {
     }
 
 
+    default List<EnterpriseDO> getNoVipEnterpriseList(){
+        return selectList(new LambdaQueryWrapperX<EnterpriseDO>()
+                .isNull(EnterpriseDO::getVipFlag)
+                .eq(EnterpriseDO::getStatus, MendunerStatusEnum.ENABLE.getStatus())
+        );
+    }
+
+
 }

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

@@ -54,6 +54,13 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
                 .eq(EnterpriseUserBindDO::getEmail, email));
     }
 
+   default List<EnterpriseUserBindDO> getByEnterpriseIdList(List<Long> enterpriseIdList){
+        return selectList(new LambdaQueryWrapperX<EnterpriseUserBindDO>()
+                .in(EnterpriseUserBindDO::getEnterpriseId, enterpriseIdList)
+                .eq(EnterpriseUserBindDO::getStatus, MendunerStatusEnum.ENABLE.getStatus())
+        );
+    }
+
     /** 根据查询条件查询企业用户列表 **/
     default List<EnterpriseUserBindDO> list(EnterpriseUserBindReqVO reqVO) {
         return selectList(new LambdaQueryWrapperX<EnterpriseUserBindDO>()

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

@@ -144,6 +144,10 @@ public interface EnterpriseService {
      * @param reqVO
      **/
     Map<String, Object[]> getEnterpriseCount(TimeRangeBaseReqVO reqVO);
+
+    /** 获取没有开通vip的企业列表 **/
+    List<EnterpriseDO> getNoVipEnterpriseList();
+
     // ========== 求职端 ==========
 
     /**
@@ -245,4 +249,5 @@ public interface EnterpriseService {
     AppRecruitEnterpriseTreeRespVO getTree(Long id);
 
     List<AppEnterpriseDetailRespVO> getEnterpriseDetails(String ids);
+
 }

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

@@ -254,6 +254,11 @@ public class EnterpriseServiceImpl implements EnterpriseService {
         );
     }
 
+    @Override
+    public List<EnterpriseDO> getNoVipEnterpriseList() {
+        return enterpriseMapper.getNoVipEnterpriseList();
+    }
+
     @Override
     public void click(AppEnterpriseClickReqVO reqVO) {
         producer.send(MdeVisitsEnum.ENTERPRISE_CLICK, reqVO.getId());

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

@@ -168,6 +168,12 @@ public interface EnterpriseUserBindService {
      **/
     Map<String, Object[]> getEnterpriseUserCount(TimeRangeBaseReqVO reqVO);
 
+    /**
+     * 根据企业id列表查询用户
+     *
+     * @param enterpriseIdList 企业id列表
+     **/
+    List<EnterpriseUserBindDO> getByEnterpriseIdList(List<Long> enterpriseIdList);
     // ========== 求职端 ==========
 
     /**

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

@@ -267,6 +267,11 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
         );
     }
 
+    @Override
+    public List<EnterpriseUserBindDO> getByEnterpriseIdList(List<Long> enterpriseIdList) {
+        return mapper.getByEnterpriseIdList(enterpriseIdList);
+    }
+
     @Override
     public EnterpriseUserContactRespVO getContact(Long enterpriseId, Long userId) {
         EnterpriseUserBindDO userBindDO = mapper.selectByEnterpriseIdAndUserId(enterpriseId, userId);

+ 105 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/EnterpriseEmailNoticeTask.java

@@ -0,0 +1,105 @@
+package com.citu.module.menduner.system.task;
+
+import cn.hutool.core.map.MapUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.citu.framework.common.util.validation.ValidationUtils;
+import com.citu.module.menduner.system.controller.base.enterprise.vip.EnterpriseEntitlementRespVO;
+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.system.enums.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 org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 企业邮箱通知任务
+ * 该业务用于春节前,免费赠送3个
+ **/
+@Component
+public class EnterpriseEmailNoticeTask {
+
+    @Resource
+    private EnterpriseMapper enterpriseMapper;
+
+    @Resource
+    private EnterpriseUserBindService enterpriseUserBindService;
+
+    @Resource
+    private EnterpriseEntitlementService enterpriseEntitlementService;
+
+    @Resource
+    private MailSendApi mailSendApi;
+
+    @DSTransactional
+    public void sendEmailNotice() {
+        // 获取企业邮箱通知开关状态
+        List<EnterpriseDO> enterpriseList = enterpriseMapper.getNoVipEnterpriseList();
+        List<Long> entId = enterpriseList.stream().map(EnterpriseDO::getId).collect(Collectors.toList());
+        // 企业用户绑定列表
+        List<EnterpriseUserBindDO> userBindList = enterpriseUserBindService.getByEnterpriseIdList(entId);
+//        EnterpriseUserBindReqVO EnterpriseUserBindReqVO = new EnterpriseUserBindReqVO();
+//        EnterpriseUserBindReqVO.setEnterpriseId(1L);
+//        EnterpriseUserBindReqVO.setUserId(1L);
+//        List<EnterpriseUserBindDO> userBindList = enterpriseUserBindService.list(EnterpriseUserBindReqVO);
+        Map<Long, List<EnterpriseUserBindDO>> userBindMap = userBindList.stream()
+                .collect(Collectors.groupingBy(EnterpriseUserBindDO::getId));
+
+        for (EnterpriseDO enterprise : enterpriseList) {
+            List<EnterpriseUserBindDO> mapList = userBindMap.getOrDefault(enterprise.getId(), null);
+            if (null == mapList) {
+                continue;
+            }
+            if (null == enterprise.getBizFlag() || !enterprise.getBizFlag()) {
+                // 没有发送过就发送邮件
+                sendEmail(mapList);
+                enterprise.setBizFlag(true);
+                enterpriseMapper.updateById(enterprise);
+
+            }
+        }
+    }
+
+    private void sendEmail(List<EnterpriseUserBindDO> mapList) {
+        for (EnterpriseUserBindDO userBindDO : mapList) {
+            // 发送邮件
+            if (null == userBindDO.getEmail()) {
+                return;
+            }
+            if (!ValidationUtils.isEmail(userBindDO.getEmail())) {
+                return;
+            }
+
+            MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
+            reqDTO.setMail(userBindDO.getEmail());
+            reqDTO.setTemplateCode(CommonConstants.EMAIL_ENTERPRISE_INIT_PASSWORD);
+            reqDTO.setTemplateParams(MapUtil.builder("password", (Object) userBindDO.getEmail()).build());
+            mailSendApi.sendSingleMailToMember(reqDTO).getCheckedData();
+
+            // 增加额度
+            EnterpriseEntitlementRespVO entitlement =
+                    enterpriseEntitlementService.getByEnterpriseIdAndUserId(userBindDO.getEnterpriseId(), userBindDO.getUserId());
+
+            if (entitlement.getPublishJobCount() <= 3) {
+                // 小于等于3不做处理,同时规避已经加过发布数量的情况
+                return;
+            }
+            // 设置为三个发布职位额度
+            enterpriseEntitlementService.update(EnterpriseEntitlementDO.builder()
+                    .id(entitlement.getId())
+                    .publishJobCount(3)
+                    .build());
+
+        }
+
+    }
+
+}