Эх сурвалжийг харах

训练营分组接口新增

mac 2 жил өмнө
parent
commit
e41cbc7fcd

+ 17 - 4
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/KxsCampGroup.java

@@ -5,12 +5,11 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -57,6 +56,7 @@ public class KxsCampGroup extends Model<KxsCampGroup> implements Serializable {
      * 删除标记,0未删除,1已删除
      */
     @Schema(description = "删除标记,0未删除,1已删除")
+    @TableLogic
     private String delFlag;
 
 
@@ -71,6 +71,7 @@ public class KxsCampGroup extends Model<KxsCampGroup> implements Serializable {
      * 小组名称
      */
     @Schema(description = "小组名称")
+    @NotBlank(message = "小组名称不能为空")
     private String groupName;
 
 
@@ -78,6 +79,7 @@ public class KxsCampGroup extends Model<KxsCampGroup> implements Serializable {
      * 分组ID
      */
     @Schema(description = "分组ID")
+    @NotBlank(message = "分组ID不能为空")
     private String groupId;
 
 
@@ -85,6 +87,7 @@ public class KxsCampGroup extends Model<KxsCampGroup> implements Serializable {
      * 训练营ID
      */
     @Schema(description = "训练营ID")
+    @NotNull(message = "训练营ID不能为空")
     private Integer campId;
 
 
@@ -108,6 +111,16 @@ public class KxsCampGroup extends Model<KxsCampGroup> implements Serializable {
     @Schema(description = "组长创客编号")
     private String groupUserCode;
 
+    /**
+     * 组开机数
+     */
+    private Integer groupOpenNum;
+
+    /**
+     * 组下单数
+     */
+    private Integer groupOrderNum;
+
 
 
 

+ 2 - 6
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/KxsCampUser.java

@@ -5,10 +5,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -150,10 +147,9 @@ public class KxsCampUser extends Model<KxsCampUser> implements Serializable {
     /**
      * 分组ID
      */
+    @Schema(description = "分组ID")
     private String groupId;
 
 
-
-
 }
 

+ 25 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/admin/camp/SysCampUserPageVO.java

@@ -0,0 +1,25 @@
+package com.kxs.system.api.vo.admin.camp;
+
+import com.kxs.system.api.model.KxsCampUser;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+ * 训练营导入用户 对应的实体
+ *
+ * @author 没秃顶的码农
+ * @date 2024-04-09
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SysCampUserPageVO extends KxsCampUser {
+
+
+	/**
+	 * 组名称
+	 */
+	private String groupName;
+
+
+}

+ 105 - 8
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/admin/SysCampController.java

@@ -1,7 +1,6 @@
 package com.kxs.system.biz.controller.admin;
 
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kxs.common.core.util.R;
 import com.kxs.common.log.annotation.SysLog;
@@ -12,6 +11,7 @@ import com.kxs.system.api.model.*;
 import com.kxs.system.api.vo.admin.camp.CampBonusLogVO;
 import com.kxs.system.api.vo.admin.camp.CampUserExcelVO;
 import com.kxs.system.api.vo.admin.camp.ReportCampPageVO;
+import com.kxs.system.api.vo.admin.camp.SysCampUserPageVO;
 import com.kxs.system.biz.constant.enums.CampStatusEnum;
 import com.kxs.system.biz.service.*;
 import com.pig4cloud.plugin.excel.annotation.RequestExcel;
@@ -44,6 +44,7 @@ public class SysCampController {
     private final KxsCampBonusLogService kxsCampBonusLogService;
     private final KxsBcqtTeamService kxsBcqtTeamService;
     private final KxsCampReportService kxsCampReportService;
+    private final KxsCampGroupService kxsCampGroupService;
 
 
     /**
@@ -60,7 +61,7 @@ public class SysCampController {
     }
 
     /**
-     * 训练营-活动统计明细
+     * 训练营-分组参与创客列表
      *
      * @param page 分页对象
      * @param param 查询实体
@@ -68,11 +69,36 @@ public class SysCampController {
      */
     @GetMapping("/campUserPage")
 //    @PreAuthorize("@pms.hasPermission('sys_camp_user_page')")
-    public R campUserPage(Page<KxsCampUser> page, @ParameterObject KxsCampUser param) {
+    public R campUserPage(Page<SysCampUserPageVO> page, @ParameterObject KxsCampUser param) {
 
-        return R.ok(kxsCampUserService.page(page, Wrappers.<KxsCampUser>lambdaQuery()
-                .eq(KxsCampUser::getCampId, param.getCampId())
-                .eq(StrUtil.isNotEmpty(param.getUserCode()), KxsCampUser::getUserCode, param.getUserCode())));
+        return R.ok(kxsCampUserService.getSysByPage(page, param));
+    }
+
+    /**
+     * 训练营-导出分组参与创客
+     *
+     * @param param 查询实体
+     * @return 训练营-列表
+     */
+    @ResponseExcel
+    @GetMapping("/exportGroupUser")
+//    @PreAuthorize("@pms.hasPermission('sys_camp_user_export')")
+    public List<SysCampUserPageVO> exportGroupUser(@ParameterObject KxsCampUser param) {
+
+        return kxsCampUserService.exportGroupUser(param);
+    }
+
+    /**
+     * 组删除用户
+     *
+     * @param ids 参数
+     * @return {@link R}
+     */
+    @PostMapping("/groupRemoveUsers")
+//    @PreAuthorize("@pms.hasPermission('sys_camp_user_remove')")
+    public R groupRemoveUsers(@RequestBody List<Integer> ids) {
+
+        return R.ok(kxsCampUserService.removeByIds(ids));
     }
 
 
@@ -138,6 +164,77 @@ public class SysCampController {
     }
 
 
+    /**
+     * 训练营-分组-列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 训练营-分组-列表
+     */
+    @GetMapping("/list")
+//    @PreAuthorize("@pms.hasPermission('sys_camp_group_list')")
+    public R list(Page<KxsCampGroup> page, @ParameterObject KxsCampGroup param) {
+
+        return R.ok(kxsCampGroupService.page(page, new QueryWrapper<>(param)));
+    }
+
+
+    /**
+     * 训练营-分组-详情
+     *
+     * @param id 主键ID
+     * @return 训练营-分组-详情
+     */
+    @GetMapping("/getById")
+    //    @PreAuthorize("@pms.hasPermission('sys_camp_group_list')")
+    public R getById(@RequestParam("id") Integer id) {
+
+        return R.ok(kxsCampGroupService.getById(id));
+    }
+
+
+    /**
+     * 训练营-分组-添加
+     *
+     * @param param 实体对象
+     * @return 训练营-分组-添加
+     */
+    @PostMapping("/groupAdd")
+    //    @PreAuthorize("@pms.hasPermission('sys_camp_group_add')")
+    public R groupAdd(@Valid @RequestBody KxsCampGroup param) {
+
+        return R.ok(kxsCampGroupService.addData(param));
+    }
+
+
+    /**
+     * 训练营-分组-修改
+     *
+     * @param param 实体对象
+     * @return 训练营-分组-修改
+     */
+    @PutMapping("/groupUpdate")
+    //    @PreAuthorize("@pms.hasPermission('sys_camp_group_edit')")
+    public R groupUpdate(@Valid @RequestBody KxsCampGroup param) {
+
+        return R.ok(kxsCampGroupService.updateById(param));
+    }
+
+
+    /**
+     * 训练营-分组-删除
+     *
+     * @param id 主键ID结合
+     * @return 训练营-分组-删除
+     */
+    @DeleteMapping("/groupDelete/{id}")
+    //    @PreAuthorize("@pms.hasPermission('sys_camp_group_remove')")
+    public R groupDelete(@PathVariable("id") Integer id) {
+
+        return R.ok(kxsCampGroupService.removeByData(id));
+    }
+
+
     /**
      * 训练营-添加创客
      *
@@ -167,7 +264,7 @@ public class SysCampController {
     }
 
     /**
-     * 训练营-日志列表
+     * 训练营-导出日志列表
      *
      * @param param 查询实体
      * @return 训练营-扣除记录

+ 21 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/mapper/KxsCampUserMapper.java

@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kxs.system.api.model.KxsCampUser;
+import com.kxs.system.api.vo.admin.camp.SysCampUserPageVO;
 import com.kxs.system.api.vo.kxsapp.camp.CampUserPageVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 训练营参与创客(KxsCampUser)表数据库访问层
  *
@@ -25,5 +28,23 @@ public interface KxsCampUserMapper extends BaseMapper<KxsCampUser> {
      * @return {@link IPage}<{@link CampUserPageVO}>
      */
     IPage<CampUserPageVO> getByPage(Page<CampUserPageVO> page, @Param("campId") Integer campId);
+
+    /**
+     * 后台分页
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link SysCampUserPageVO}>
+     */
+    IPage<SysCampUserPageVO> getSysByPage(Page<SysCampUserPageVO> page, @Param("param") KxsCampUser param);
+
+    /**
+     * 导出组用户
+     *
+     * @param param 参数
+     * @return {@link List}<{@link SysCampUserPageVO}>
+     */
+    List<SysCampUserPageVO> getSysByPage(@Param("param") KxsCampUser param);
+
 }
 

+ 15 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsCampGroupService.java

@@ -11,5 +11,20 @@ import com.kxs.system.api.model.KxsCampGroup;
  */
 public interface KxsCampGroupService extends IService<KxsCampGroup> {
 
+    /**
+     * 添加数据
+     *
+     * @param param 参数
+     * @return {@link Boolean}
+     */
+    Boolean addData(KxsCampGroup param);
+
+    /**
+     * 按数据删除
+     *
+     * @param id 同上
+     * @return {@link Boolean}
+     */
+    Boolean removeByData(Integer id);
 }
 

+ 20 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsCampUserService.java

@@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.kxs.system.api.model.KxsCampUser;
+import com.kxs.system.api.vo.admin.camp.SysCampUserPageVO;
 import com.kxs.system.api.vo.kxsapp.camp.CampUserPageVO;
 
+import java.util.List;
+
 /**
  * 训练营参与创客(KxsCampUser)表服务接口
  *
@@ -31,5 +34,22 @@ public interface KxsCampUserService extends IService<KxsCampUser> {
     Object getByCampInfo();
 
 
+    /**
+     * 后台分页
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link SysCampUserPageVO}>
+     */
+    IPage<SysCampUserPageVO> getSysByPage(Page<SysCampUserPageVO> page, KxsCampUser param);
+
+    /**
+     * 导出组用户
+     *
+     * @param param 参数
+     * @return {@link List}<{@link SysCampUserPageVO}>
+     */
+    List<SysCampUserPageVO> exportGroupUser(KxsCampUser param);
+
 }
 

+ 38 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsCampGroupServiceImpl.java

@@ -1,11 +1,23 @@
 package com.kxs.system.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.exception.GlobalCustomerException;
+import com.kxs.common.core.util.R;
+import com.kxs.system.api.model.KxsCamp;
+import com.kxs.system.api.model.KxsCampUser;
+import com.kxs.system.biz.constant.enums.CampStatusEnum;
 import com.kxs.system.biz.mapper.KxsCampGroupMapper;
 import com.kxs.system.api.model.KxsCampGroup;
+import com.kxs.system.biz.mapper.KxsCampMapper;
+import com.kxs.system.biz.mapper.KxsCampUserMapper;
 import com.kxs.system.biz.service.KxsCampGroupService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.Objects;
+import java.util.Optional;
+
 /**
  * 训练营分组(KxsCampGroup)表服务实现类
  *
@@ -13,7 +25,33 @@ import org.springframework.stereotype.Service;
  * @since 2024-07-02 15:10:28
  */
 @Service("kxsCampGroupService")
+@RequiredArgsConstructor
 public class KxsCampGroupServiceImpl extends ServiceImpl<KxsCampGroupMapper, KxsCampGroup> implements KxsCampGroupService {
 
+    private final KxsCampMapper kxsCampMapper;
+
+    private final KxsCampUserMapper kxsCampUserMapper;
+    @Override
+    public Boolean addData(KxsCampGroup param) {
+
+        KxsCamp camp = kxsCampMapper.selectById(param.getCampId());
+        Optional.ofNullable(camp).orElseThrow(()-> new RuntimeException("训练营不存在"));
+        if(Objects.equals(camp.getStatus(), CampStatusEnum.STATUS_END.getType())){
+            throw new RuntimeException("训练营已结束");
+        }
+
+        return save(param);
+    }
+
+    @Override
+    public Boolean removeByData(Integer id) {
+
+        KxsCampGroup group = getById(id);
+        long count = kxsCampUserMapper.selectCount(Wrappers.<KxsCampUser>lambdaQuery().eq(KxsCampUser::getGroupId, group.getGroupId()));
+        if(count > 0){
+            throw new GlobalCustomerException("该分组下存在成员,无法删除");
+        }
+        return removeById(id);
+    }
 }
 

+ 15 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsCampUserServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.system.api.model.KxsCamp;
+import com.kxs.system.api.vo.admin.camp.SysCampUserPageVO;
 import com.kxs.system.api.vo.kxsapp.camp.CampUserPageVO;
 import com.kxs.system.biz.mapper.KxsCampMapper;
 import com.kxs.system.biz.mapper.KxsCampUserMapper;
@@ -13,6 +14,8 @@ import com.kxs.system.biz.service.KxsCampUserService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 训练营参与创客(KxsCampUser)表服务实现类
  *
@@ -36,5 +39,17 @@ public class KxsCampUserServiceImpl extends ServiceImpl<KxsCampUserMapper, KxsCa
 
         return kxsCampMapper.selectUserCamp(SecurityUtils.getUser().getId().intValue());
     }
+
+    @Override
+    public IPage<SysCampUserPageVO> getSysByPage(Page<SysCampUserPageVO> page, KxsCampUser param) {
+
+        return baseMapper.getSysByPage(page, param);
+    }
+
+    @Override
+    public List<SysCampUserPageVO> exportGroupUser(KxsCampUser param) {
+
+        return baseMapper.getSysByPage(param);
+    }
 }
 

+ 2 - 0
kxs-system/kxs-system-biz/src/main/resources/mapper/KxsCampGroupMapper.xml

@@ -14,6 +14,8 @@
         <result column="group_leader_id" property="groupLeaderId" />
         <result column="group_username" property="groupUsername" />
         <result column="group_user_code" property="groupUserCode" />
+        <result column="group_open_num" property="groupOpenNum" />
+        <result column="group_order_num" property="groupOrderNum" />
 
     </resultMap>
 

+ 14 - 0
kxs-system/kxs-system-biz/src/main/resources/mapper/KxsCampUserMapper.xml

@@ -30,5 +30,19 @@
                 and camp_id = #{campId}
             </where>
     </select>
+    <select id="getSysByPage" resultType="com.kxs.system.api.vo.admin.camp.SysCampUserPageVO">
+        select a.*, cg.group_name from kxs_camp_user a
+        left join kxs_camp_group cg on cg.group_id = a.group_id
+        <where>
+            a.del_flag = 0
+            and a.camp_id = #{param.campId}
+            <if test="param.userCode != null and param.userCode != ''">
+                and a.user_code = #{param.userCode}
+            </if>
+            <if test="param.groupId != null and param.groupId != ''">
+                and a.group_id = #{param.groupId}
+            </if>
+        </where>
+    </select>
 
 </mapper>