Explorar o código

1、优化积分触发
2、增加vip人才优先推荐的逻辑

rayson hai 9 meses
pai
achega
9e93c4235b

+ 2 - 4
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/event/EventTrackServiceImpl.java

@@ -133,7 +133,6 @@ public class EventTrackServiceImpl implements EventTrackService {
     @Override
     @DSTransactional
     public List<EventTrackPointRespVO> click(String url) {
-        List<EventTrackPointRespVO> respVOList = new ArrayList<>();
         // 获取当前登录用户信息
         LoginUser loginUser = LoginUserContext.get2();
 
@@ -144,8 +143,7 @@ public class EventTrackServiceImpl implements EventTrackService {
 
         Long userId = loginUser.getId();
 
-        trigger(userId, url, null,null);
-        return respVOList;
+        return trigger(userId, url, null,null);
 
     }
 
@@ -161,7 +159,7 @@ public class EventTrackServiceImpl implements EventTrackService {
             return Collections.singletonList(EventTrackPointRespVO.builder().build());
         }
         // 搜索出配置后,带入场景去判断处理
-        url = url + "?" + scene;
+        url = url + scene;
 
         // 遍历处理每个积分规则配置
         for (PointRuleConfigDO config : configList) {

+ 10 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonInfoMapper.java

@@ -17,6 +17,7 @@ import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.dal.dataobject.projectexp.ProjectExpDO;
 import com.citu.module.menduner.system.dal.dataobject.trainexp.TrainExpDO;
 import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
+import com.citu.module.menduner.system.util.MdeUserInnerUtils;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.time.LocalDate;
@@ -63,6 +64,9 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
                         .eq(EnterpriseTalentPoolDO::getUserId, PersonInfoDO::getUserId)
         );
 
+        // 连接用户表设置vip条件
+        MdeUserInnerUtils.joinAndFilterVipUser(query, PersonInfoDO::getUserId);
+
         query
                 .likeIfPresent(PersonInfoDO::getName, reqVO.getName())
                 .eqIfPresent(PersonInfoDO::getSex, reqVO.getSex())
@@ -102,7 +106,8 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
         query.selectAsClass(PersonInfoDO.class, PersonInfoRespVO.class);
         query.likeIfPresent(PersonInfoDO::getName, reqVO.getName());
         query.eqIfPresent(PersonInfoDO::getSex, reqVO.getSex());
-
+        // 连接用户表设置vip条件
+        MdeUserInnerUtils.joinAndFilterVipUser(query, PersonInfoDO::getUserId);
         if (null != reqVO.getAge()) {
             LocalDate now = LocalDate.now(ZoneId.systemDefault());
             if (reqVO.getAge().length >= 1) {
@@ -145,6 +150,8 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
         query.distinct();
         query.selectAsClass(PersonInfoDO.class, PersonInfoRespVO.class);
 
+        // 连接用户表设置vip条件
+        MdeUserInnerUtils.joinAndFilterVipUser(query, PersonInfoDO::getUserId);
         // 求职意向
         query.leftJoin(JobInterestedDO.class, JobInterestedDO::getUserId, PersonInfoDO::getUserId);
 
@@ -229,6 +236,8 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
         MPJLambdaWrapperX<PersonInfoDO> query = new MPJLambdaWrapperX<>();
         query.selectAsClass(PersonInfoDO.class, PersonInfoRespVO.class);
         query.inIfPresent(PersonInfoDO::getUserId, ids);
+        // 连接用户表设置vip条件
+        MdeUserInnerUtils.joinAndFilterVipUser(query, PersonInfoDO::getUserId);
         query.orderByDesc(PersonInfoDO::getUpdateTime);
         return selectJoinPage(pageParam, PersonInfoRespVO.class, query);
     }

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

@@ -72,7 +72,7 @@ public class UserMemberConsumer implements RocketMQListener<Long> {
                 user.setVipExpireDate(LocalDateTime.now().plusDays(day));
             } else {
                 // 没有过期
-                // TODO 累加时间,如果当前权益大于user.getVipFlag()则覆盖,并且累加时间
+                //  累加时间,如果当前权益大于user.getVipFlag()则覆盖,并且累加时间
                 // TODO 不允许小于当前权益
                 Long currentVipFlag = Long.parseLong(user.getVipFlag());
                 Long newVipFlag = Long.parseLong(vipFlagEnum.getFlag());

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java

@@ -235,7 +235,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
                     .url(EventAsyncUrlEnum.INVITE_USER.getUrl())
                     // 场景
                     .scene(EventAsyncUrlEnum.INVITE_USER.isScene() ?
-                            EventAsyncUrlEnum.INVITE_USER.getSceneStr() + user.getInviteCode() : null)
+                            (EventAsyncUrlEnum.INVITE_USER.getSceneStr() + user.getId()) : null)
                     // 什么类型
                     .bizType(PointBizTypeEnum.INVITE)
                     .build()

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/MdeUserInnerUtils.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.util;
+
+import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
+import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
+import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
+import com.github.yulichang.wrapper.JoinAbstractLambdaWrapper;
+import com.github.yulichang.wrapper.interfaces.MFunction;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * user 表连接
+ **/
+public class MdeUserInnerUtils {
+
+    /**
+     * 与 MdeUserDO 表进行内连接,并添加条件 vip_expire_date > NOW() 和 ORDER BY vip_flag DESC。
+     *
+     * @param column 要与 MdeUserDO 表的 userId 字段进行连接的字段
+     * @param <R>       连接字段所属的实体类型
+     * @return JoinAbstractLambdaWrapper 的函数
+     * 使用   query.xxJoin(PersonInfoDO.class, MdeUserInnerUtils.joinWithMdeUser(PersonInfoDO::getUserId));
+     */
+    public static  <R> void joinAndFilterVipUser(
+            MPJLambdaWrapperX<?> wrapperX,
+            SFunction<R, ?> column) {
+
+        // 添加连接条件
+        wrapperX.innerJoin(MdeUserDO.class,on -> on.eq(column, MdeUserDO::getId)
+        // .and(i -> i.gt(MdeUserDO::getVipExpireDate, LocalDateTime.now()))
+        );
+
+        wrapperX.orderByDesc(MdeUserDO::getVipFlag, MdeUserDO::getVipExpireDate);
+
+    }
+
+}