瀏覽代碼

1、解决es数据同步慢问题
2、新任命增加性别字段
3、

rayson 6 月之前
父節點
當前提交
42d1e1bec4
共有 11 個文件被更改,包括 112 次插入27 次删除
  1. 10 2
      citu-module-mall/citu-module-promotion-biz/src/main/java/com/citu/module/promotion/controller/app/luck/AppLuckLotteryRecordController.java
  2. 8 0
      citu-module-mall/citu-module-promotion-biz/src/main/java/com/citu/module/promotion/service/luck/LuckLotteryRecordService.java
  3. 50 18
      citu-module-mall/citu-module-promotion-biz/src/main/java/com/citu/module/promotion/service/luck/LuckLotteryRecordServiceImpl.java
  4. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/appointment/NewAppointmentsRespVO.java
  5. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/appointment/NewAppointmentsSaveReqVO.java
  6. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/appointment/NewAppointmentsSimpleRespVO.java
  7. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/appointment/NewAppointmentsDO.java
  8. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseRegisterDO.java
  9. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java
  10. 13 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/ESConsumer.java
  11. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/register/EnterpriseRegisterServiceImpl.java

+ 10 - 2
citu-module-mall/citu-module-promotion-biz/src/main/java/com/citu/module/promotion/controller/app/luck/AppLuckLotteryRecordController.java

@@ -3,13 +3,12 @@ package com.citu.module.promotion.controller.app.luck;
 
 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.common.util.string.StrUtils;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.promotion.controller.admin.luck.vo.record.LuckLotteryRecordDetailRespVO;
 import com.citu.module.promotion.controller.admin.luck.vo.record.LuckLotteryRecordPageReqVO;
 import com.citu.module.promotion.controller.admin.luck.vo.record.LuckLotteryRecordRespVO;
 import com.citu.module.promotion.controller.app.luck.vo.AppLuckLotteryReceiveReqVO;
-import com.citu.module.promotion.dal.dataobject.luck.LuckLotteryRecordDO;
 import com.citu.module.promotion.service.luck.LuckLotteryRecordService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -19,6 +18,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@@ -71,4 +71,12 @@ public class AppLuckLotteryRecordController {
             (@RequestParam("orderId") Long orderId) {
         return success(luckLotteryRecordService.getByOrderId(orderId, getLoginUserId()));
     }
+
+    @GetMapping("/get/by-order-ids")
+    @PreAuthenticated
+    @Operation(summary = "根据订单id获取中奖记录")
+    public CommonResult<Map<Long, List<LuckLotteryRecordDetailRespVO>>> getByOrderId
+            (@RequestParam("orderIds") String orderIds) {
+        return success(luckLotteryRecordService.getByOrderId(StrUtils.splitToLong(orderIds), getLoginUserId()));
+    }
 }

+ 8 - 0
citu-module-mall/citu-module-promotion-biz/src/main/java/com/citu/module/promotion/service/luck/LuckLotteryRecordService.java

@@ -12,6 +12,7 @@ import com.citu.module.promotion.dal.dataobject.luck.LuckLotteryRecordDO;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 幸运抽奖-抽奖记录 Service 接口
@@ -110,4 +111,11 @@ public interface LuckLotteryRecordService {
      * @param userId 用户id
      */
     List<LuckLotteryRecordDetailRespVO> getByOrderId(Long orderId, Long userId);
+
+    /**
+     * 根据订单id获取抽奖记录
+     * @param orderIds 订单id
+     * @param userId 用户id
+     */
+    Map<Long,List<LuckLotteryRecordDetailRespVO>> getByOrderId(List<Long> orderIds, Long userId);
 }

+ 50 - 18
citu-module-mall/citu-module-promotion-biz/src/main/java/com/citu/module/promotion/service/luck/LuckLotteryRecordServiceImpl.java

@@ -3,6 +3,7 @@ package com.citu.module.promotion.service.luck;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.lock.annotation.Lock4j;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -25,9 +26,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.Collectors;
 
@@ -326,22 +325,55 @@ public class LuckLotteryRecordServiceImpl implements LuckLotteryRecordService {
 
     @Override
     public List<LuckLotteryRecordDetailRespVO> getByOrderId(Long orderId, Long userId) {
-        List<LuckLotteryRecordDO> list = luckLotteryRecordMapper
-                .selectList(LuckLotteryRecordDO::getOrderId, orderId);
-        if (CollUtil.isEmpty(list)) {
-            return null;
+        Map<Long, List<LuckLotteryRecordDetailRespVO>> resultMap = getByOrderId(Collections.singletonList(orderId), userId);
+        return resultMap.getOrDefault(orderId, Collections.emptyList());
+    }
+
+
+    @Override
+    public Map<Long, List<LuckLotteryRecordDetailRespVO>> getByOrderId(List<Long> orderIds, Long userId) {
+        if (CollUtil.isEmpty(orderIds)) {
+            return Map.of();
         }
-        // 同一个订单下单的绝对只有一个用户
-        UserInfoRespDTO user =
-                mendunerUserApi.getUser(userId).getCheckedData();
-        List<LuckLotteryRecordDetailRespVO> respList = new ArrayList<>();
-        for (LuckLotteryRecordDO record : list) {
-            respList.add(LuckLotteryRecordConvert.INSTANCE.convertDetail(
-                    LuckLotteryRecordConvert.INSTANCE.convert(record),
-                    luckLotteryService.detail(record.getLotteryId()),
-                    luckPrizeService.detail(record.getPrizeId()),
-                    user));
+
+        // 根据 orderIds 批量查询 LuckLotteryRecordDO
+        List<LuckLotteryRecordDO> recordList = luckLotteryRecordMapper.selectList(
+                new LambdaQueryWrapper<LuckLotteryRecordDO>()
+                        .in(LuckLotteryRecordDO::getOrderId, orderIds)
+        );
+
+        if (CollUtil.isEmpty(recordList)) {
+            return Map.of();
+        }
+
+        // 获取用户信息
+        UserInfoRespDTO user = mendunerUserApi.getUser(userId).getCheckedData();
+
+        // 构建结果 Map
+        Map<Long, List<LuckLotteryRecordDetailRespVO>> resultMap = new HashMap<>();
+
+        // 按 orderId 分组
+        Map<Long, List<LuckLotteryRecordDO>> recordMap = recordList.stream()
+                .collect(Collectors.groupingBy(LuckLotteryRecordDO::getOrderId));
+
+        // 遍历分组后的数据
+        for (Map.Entry<Long, List<LuckLotteryRecordDO>> entry : recordMap.entrySet()) {
+            Long orderId = entry.getKey();
+            List<LuckLotteryRecordDO> records = entry.getValue();
+
+            // 转换为 LuckLotteryRecordDetailRespVO 列表
+            List<LuckLotteryRecordDetailRespVO> respList = records.stream()
+                    .map(record -> LuckLotteryRecordConvert.INSTANCE.convertDetail(
+                            LuckLotteryRecordConvert.INSTANCE.convert(record),
+                            luckLotteryService.detail(record.getLotteryId()),
+                            luckPrizeService.detail(record.getPrizeId()),
+                            user
+                    ))
+                    .collect(Collectors.toList());
+
+            resultMap.put(orderId, respList);
         }
-        return respList;
+
+        return resultMap;
     }
 }

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/appointment/NewAppointmentsRespVO.java

@@ -29,6 +29,10 @@ public class NewAppointmentsRespVO {
     @ExcelProperty("英文姓名")
     private String nameEnglish;
 
+    @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("性别")
+    private String gender;
+
     @Schema(description = "职位", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("职位")
     private String position;

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/appointment/NewAppointmentsSaveReqVO.java

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.controller.base.appointment;
 
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -25,6 +26,9 @@ public class NewAppointmentsSaveReqVO {
     @NotEmpty(message = "英文姓名不能为空")
     private String nameEnglish;
 
+    @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
+    private String gender;
+
     @Schema(description = "职位", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotEmpty(message = "职位不能为空")
     private String position;

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/appointment/NewAppointmentsSimpleRespVO.java

@@ -29,6 +29,10 @@ public class NewAppointmentsSimpleRespVO {
     @ExcelProperty("英文姓名")
     private String nameEnglish;
 
+    @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("性别")
+    private String gender;
+
     @Schema(description = "职位", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("职位")
     private String position;

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

@@ -1,10 +1,12 @@
 package com.citu.module.menduner.system.dal.dataobject.appointment;
 
 
+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.*;
 
 /**
@@ -39,6 +41,10 @@ public class NewAppointmentsDO extends BaseDO {
      * 英文姓名
      */
     private String nameEnglish;
+    /**
+     * 性别
+     */
+    private String gender;
     /**
      * 职位
      */

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

@@ -80,7 +80,7 @@ public class EnterpriseRegisterDO extends TenantBaseDO {
     /**
      * 营业执照图片ocr识别的对象
      */
-    @TableField(typeHandler = JacksonTypeHandler.class)
+    @TableField(updateStrategy = FieldStrategy.ALWAYS, typeHandler = JacksonTypeHandler.class)
     private BusinessLicenseOcr ocr;
     /**
      * 帐号状态(0审核中 1审核通过 2审核不通过)

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java

@@ -35,6 +35,7 @@ import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.enums.job.JobStatusEnum;
 import com.citu.module.menduner.system.enums.visits.MdeVisitsEnum;
 import com.citu.module.menduner.system.util.RecruitAnalysisUtils;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 
@@ -93,6 +94,11 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
                 .orderByDesc(JobAdvertisedDO::getId));
     }
 
+    default List<Long> selectIdList() {
+        return selectJoinList(Long.class,new MPJLambdaWrapper<JobAdvertisedDO>()
+                .select(JobAdvertisedDO::getId) );
+    }
+
     /**
      * 根据企业id查询正常状态的职位数量
      **/

+ 13 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/ESConsumer.java

@@ -110,6 +110,7 @@ public class ESConsumer implements RocketMQListener<ESJobAdvertisedMergeSendMess
             log.info("消息处理完备[{}]", message);
         } catch (Exception ex) {
             ex.printStackTrace();
+            log.error("消息处理失败[{}]", ex);
         }
 
     }
@@ -162,7 +163,10 @@ public class ESConsumer implements RocketMQListener<ESJobAdvertisedMergeSendMess
             return;
         }
         EnterpriseDO enterpriseDO = enterpriseMapper.selectById(job.getEnterpriseId());
-        repository.save(build(job, enterpriseDO));
+
+        ESJobAdvertisedMergeDO merge = build(job, enterpriseDO);
+        repository.save(merge);
+        log.info("ES 保存数据成功 {}",merge);
     }
 
     /**
@@ -181,10 +185,10 @@ public class ESConsumer implements RocketMQListener<ESJobAdvertisedMergeSendMess
      * @return true 过期|不是开启 false 未过期
      **/
     private boolean checkJobExpireTimeAndEnable(JobAdvertisedDO job) {
-        if(null == job.getExpireTime()) {
+        if (null == job.getExpireTime()) {
             return false;
         }
-        if(!JobStatusEnum.ENABLE.getStatus().equals(job.getStatus())) {
+        if (!JobStatusEnum.ENABLE.getStatus().equals(job.getStatus())) {
             return true;
         }
         return job.getExpireTime().isBefore(LocalDateTime.now());
@@ -230,14 +234,17 @@ public class ESConsumer implements RocketMQListener<ESJobAdvertisedMergeSendMess
         // 新增索引
         recreateIndexes(documentClasses);
 
-        List<JobAdvertisedDO> jobAdvertisedList = jobAdvertisedMapper.selectList();
-        for (JobAdvertisedDO job : jobAdvertisedList) {
+        List<Long> idList = jobAdvertisedMapper.selectIdList();
+        for (Long id : idList) {
+            JobAdvertisedDO job = jobAdvertisedMapper.selectById(id);
             // 判断职位是否过期
             if (checkJobExpireTimeAndEnable(job)) {
                 continue;
             }
             EnterpriseDO enterpriseDO = enterpriseMapper.selectById(job.getEnterpriseId());
-            repository.save(build(job, enterpriseDO));
+            ESJobAdvertisedMergeDO merge = build(job, enterpriseDO);
+            repository.save(merge);
+            log.info("ES 保存数据成功 {}",merge);
         }
         stopWatch.stop();
         stopWatch.prettyPrint();

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

@@ -174,6 +174,12 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
                 );
             } else {
                 // 如果有有效的OCR识别结果,则基于OCR识别结果创建企业业务记录
+                if(StringUtils.hasText(businessLicenseOcr.getName())) {
+                    enterpriseRegister.setName(enterpriseRegister.getName());
+                }
+                if(StringUtils.hasText(businessLicenseOcr.getCode())) {
+                    businessLicenseOcr.setCode(enterpriseRegister.getCode());
+                }
                 businessService.createBussiness(enterpriseId, businessLicenseOcr);
             }
         }