Kaynağa Gözat

训练营后台排序
未实名创客不支持导入参与者
训练时间根据后台判定来显示状态

mac 2 yıl önce
ebeveyn
işleme
ec423d199e

+ 1 - 1
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/KxsCamp.java

@@ -71,7 +71,7 @@ public class KxsCamp extends Model<KxsCamp> implements Serializable {
     /**
      * 状态 0未开始 进行中 2已结束
      */
-    @Schema(description = "状态 0未开始 进行中 2已结束")
+    @Schema(description = "状态 0未开始 1进行中 2已结束")
     private Integer status;
 
 

+ 3 - 2
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/admin/SysCampController.java

@@ -1,5 +1,6 @@
 package com.kxs.system.biz.controller.admin;
 
+import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -21,6 +22,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -53,8 +55,7 @@ public class SysCampController {
     @GetMapping("/page")
     public R page(Page<KxsCamp> page, @ParameterObject KxsCamp param) {
 
-        return R.ok(kxsCampService.page(page, Wrappers.<KxsCamp>lambdaQuery()
-                .eq(StrUtil.isNotEmpty(param.getCreateCode()), KxsCamp::getCreateCode, param.getCreateCode()) ));
+        return R.ok(kxsCampService.getBySysPage(page, param));
     }
 
     /**

+ 11 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsCampService.java

@@ -61,7 +61,18 @@ public interface KxsCampService extends IService<KxsCamp> {
      */
     R getByData(Integer id);
 
+    /**
+     * 奖池已刷新
+     */
     void prizePoolIsRefreshed();
 
+    /**
+     * 后台分页 页面
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link KxsCamp}>
+     */
+    IPage<KxsCamp> getBySysPage(Page<KxsCamp> page, KxsCamp param);
 }
 

+ 35 - 7
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsCampServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -49,6 +50,7 @@ import org.springframework.validation.BindingResult;
 
 import javax.json.Json;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.*;
 
 /**
@@ -132,18 +134,24 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
             if(kxsCamp == null){
                 return R.failed(excel.getCampId() + "训练营编号不存在,请重新上传!");
             }
-            if (user == null) {
+
+            if (Objects.isNull(user)) {
                 errorMsg.add(excel.getUserCode() + "创客未找到!");
+            }else{
+                //判断创客是否已在其他训练营
+                KxsCampUser kxsCampUser = baseMapper.selectByUserId(user.getId());
+                if(kxsCampUser != null){
+                    errorMsg.add(excel.getUserCode() + "已在训练营!");
+                }
+                if(user.getRealStatus() != 1){
+                    errorMsg.add(excel.getUserCode() + "创客未实名!");
+                }
             }
+
             //判断创客是否加入
 //            KxsCampUser kxsCampUser = kxsCampUserService.getOne(Wrappers.<KxsCampUser>lambdaQuery()
 //                    .eq(KxsCampUser::getCampId, excel.getCampId())
 //                    .eq(KxsCampUser::getUserId, user.getId()));
-            //判断创客是否已在其他训练营
-            KxsCampUser kxsCampUser = baseMapper.selectByUserId(user.getId());
-            if(kxsCampUser != null){
-                errorMsg.add(excel.getUserCode() + "已在训练营!");
-            }
 
             // 数据合法情况
             if (CollUtil.isEmpty(errorMsg)) {
@@ -194,7 +202,8 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
     @Async("getAsyncExecutor")
     public void prizePoolIsRefreshed() {
         //查询正在进行中的活动
-        List<KxsCamp> list = baseMapper.selectList(Wrappers.<KxsCamp>lambdaQuery().eq(KxsCamp::getStatus, CampStatusEnum.STATUS_NORMAL.getType()));
+        LocalDateTime now = LocalDateTime.now();
+        List<KxsCamp> list = baseMapper.selectList(Wrappers.<KxsCamp>lambdaQuery().ge(KxsCamp::getStartTime, now).le(KxsCamp::getEndTime, now));
         //查询活动参与的创客
         for (KxsCamp kxsCamp : list) {
             //初始化奖金池
@@ -337,5 +346,24 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
         }
 
     }
+
+    @Override
+    public IPage<KxsCamp> getBySysPage(Page<KxsCamp> page, KxsCamp param) {
+        LocalDateTime now = LocalDateTime.now();
+        Page<KxsCamp> pageData = this.page(page, Wrappers.<KxsCamp>lambdaQuery()
+                .eq(StrUtil.isNotEmpty(param.getCreateCode()), KxsCamp::getCreateCode, param.getCreateCode())
+                .orderByDesc(KxsCamp::getId));
+
+        pageData.getRecords().forEach(item -> {
+            if(item.getEndTime().isBefore(now)){
+                item.setStatus(CampStatusEnum.STATUS_END.getType());
+            } else if (LocalDateTimeUtil.isIn(now, item.getStartTime(), item.getEndTime(), false, false)) {
+                item.setStatus(CampStatusEnum.STATUS_NORMAL.getType());
+            }else {
+                item.setStatus(CampStatusEnum.STATUS_CLOSE.getType());
+            }
+        });
+        return pageData;
+    }
 }