Browse Source

活动报名

dzx 1 year ago
parent
commit
9d1528a699

+ 22 - 1
src/main/java/com/xjrsoft/module/activity/controller/ActivityEnrollController.java

@@ -1,9 +1,11 @@
 package com.xjrsoft.module.activity.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.RT;
@@ -13,6 +15,7 @@ import com.xjrsoft.module.activity.dto.ActivityEnrollPageDto;
 import com.xjrsoft.module.activity.dto.AddActivityEnrollDto;
 import com.xjrsoft.module.activity.dto.ChangeStatusDto;
 import com.xjrsoft.module.activity.dto.UpdateActivityInfoDto;
+import com.xjrsoft.module.activity.dto.UserEnrollDto;
 import com.xjrsoft.module.activity.entity.ActivityEnroll;
 import com.xjrsoft.module.activity.service.IActivityEnrollService;
 import com.xjrsoft.module.activity.vo.ActivityEnrollExcelVo;
@@ -140,6 +143,24 @@ public class ActivityEnrollController {
         return RT.fileStream(bot.toByteArray(), "banding" + ExcelTypeEnum.XLSX.getValue());
     }
 
-
+    @GetMapping(value = "/enroll")
+    @ApiOperation(value="报名")
+    @SaCheckPermission("activityinfo:detail")
+    public RT<Boolean> enroll(@Valid UserEnrollDto dto){
+        List<ActivityEnroll> enrollList = activityEnrollService.list(
+                new QueryWrapper<ActivityEnroll>().lambda()
+                        .eq(ActivityEnroll::getUserId, StpUtil.getLoginIdAsLong())
+                        .eq(ActivityEnroll::getActivityInfoId, dto.getActivityInfoId())
+        );
+        if(!enrollList.isEmpty()){
+            return RT.error("已报名,无需重复报名");
+        }
+        ActivityEnroll activityEnroll = new ActivityEnroll() {{
+            setUserId(StpUtil.getLoginIdAsLong());
+            setActivityInfoId(dto.getActivityInfoId());
+        }};
+        boolean save = activityEnrollService.save(activityEnroll);
+        return RT.ok(save);
+    }
 
 }

+ 34 - 11
src/main/java/com/xjrsoft/module/activity/controller/ActivityInfoController.java

@@ -3,9 +3,12 @@ package com.xjrsoft.module.activity.controller;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.db.Entity;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.module.activity.dto.ActivityEnrollPageDto;
@@ -13,6 +16,7 @@ import com.xjrsoft.module.activity.dto.ActivityInfoPageDto;
 import com.xjrsoft.module.activity.dto.AddActivityInfoDto;
 import com.xjrsoft.module.activity.dto.ChangeStatusDto;
 import com.xjrsoft.module.activity.dto.UpdateActivityInfoDto;
+import com.xjrsoft.module.activity.dto.UserEnrollDto;
 import com.xjrsoft.module.activity.entity.ActivityEnroll;
 import com.xjrsoft.module.activity.entity.ActivityInfo;
 import com.xjrsoft.module.activity.service.IActivityEnrollService;
@@ -42,6 +46,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -85,6 +90,23 @@ public class ActivityInfoController {
            return RT.error("找不到此数据!");
         }
         ActivityInfoVo infoVo = BeanUtil.toBean(activityInfo, ActivityInfoVo.class);
+        if(infoVo.getOrgId() != null){
+            Department department = departmentService.getById(infoVo.getOrgId());
+            if(department != null){
+                infoVo.setOrgName(department.getName());
+            }
+        }
+        if(infoVo.getEnterpriseId() != null){
+            String tableName = "company_coop";
+            Entity where = Entity.create(tableName);
+            where.set("id", infoVo.getEnterpriseId());
+            Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, where);
+
+            if(objectMap != null && objectMap.containsKey("company_name")){
+                infoVo.setEnterpriseName(objectMap.get("company_name").toString());
+            }
+        }
+
         List<ActivityEnrollRangeVo> userRelationList = new ArrayList<>();
         for (ActivityEnroll jsonElement : activityInfo.getActivityEnrollList()) {
             ActivityEnrollRangeVo relationDto = BeanUtil.toBean(jsonElement, ActivityEnrollRangeVo.class);
@@ -176,14 +198,15 @@ public class ActivityInfoController {
         dto.setIsEffective(1);
         Page<ActivityInfoPageVo> page = activityInfoService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
 
-        ActivityEnrollPageDto enrollDto = new ActivityEnrollPageDto();
-        enrollDto.setLoginUserId(StpUtil.getLoginIdAsLong());
-        List<ActivityEnrollPageVo> enrolList = enrollService.getList(enrollDto);
-        Set<String> collect = enrolList.stream().map(ActivityEnrollPageVo::getActivityInfoId).collect(Collectors.toSet());
+        List<ActivityEnroll> enrollList = enrollService.list(
+                new QueryWrapper<ActivityEnroll>().lambda()
+                        .eq(ActivityEnroll::getUserId, StpUtil.getLoginIdAsLong())
+        );
+        Set<Long> collect = enrollList.stream().map(ActivityEnroll::getActivityInfoId).collect(Collectors.toSet());
 
         for (ActivityInfoPageVo record : page.getRecords()) {
             record.setIsEnroll(0);
-            if(collect.contains(record.getId())){
+            if(collect.contains(Long.parseLong(record.getId()))){
                 record.setIsEnroll(1);
             }
         }
@@ -192,14 +215,14 @@ public class ActivityInfoController {
         return RT.ok(pageOutput);
     }
 
-    @GetMapping(value = "/enroll")
-    @ApiOperation(value="报名")
+    @GetMapping(value = "/my-enroll-list")
+    @ApiOperation(value="我的报名记录(分页)")
     @SaCheckPermission("activityinfo:detail")
-    public RT<PageOutput<ActivityInfoPageVo>> enroll(@Valid ActivityInfoPageDto dto){
-        dto.setIsEffective(1);
-        Page<ActivityInfoPageVo> page = activityInfoService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+    public RT<PageOutput<ActivityInfoPageVo>> myEnrollList(@Valid ActivityInfoPageDto dto){
+        dto.setLoginUserId(StpUtil.getLoginIdAsLong());
+        Page<ActivityInfoPageVo> page = activityInfoService.getMyPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+
         PageOutput<ActivityInfoPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityInfoPageVo.class);
         return RT.ok(pageOutput);
     }
-
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/activity/dto/ActivityInfoPageDto.java

@@ -22,4 +22,7 @@ public class ActivityInfoPageDto extends PageInput {
 
     @ApiModelProperty("是否有效活动(1:是 0:否)")
     private Integer isEffective;
+
+    @ApiModelProperty("登录者id")
+    private Long loginUserId;
 }

+ 26 - 0
src/main/java/com/xjrsoft/module/activity/dto/UserEnrollDto.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.activity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 活动信息
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+public class UserEnrollDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("活动id")
+    private Long activityInfoId;
+    /**
+    */
+    @ApiModelProperty("手机号")
+    private String mobile;
+}

+ 2 - 0
src/main/java/com/xjrsoft/module/activity/mapper/ActivityInfoMapper.java

@@ -18,4 +18,6 @@ import org.apache.ibatis.annotations.Param;
 public interface ActivityInfoMapper extends MPJBaseMapper<ActivityInfo> {
 
     Page<ActivityInfoPageVo> getPage(Page<ActivityInfoPageVo> page, @Param("dto") ActivityInfoPageDto dto);
+
+    Page<ActivityInfoPageVo> getMyPage(Page<ActivityInfoPageVo> page, @Param("dto") ActivityInfoPageDto dto);
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/activity/service/IActivityInfoService.java

@@ -42,4 +42,6 @@ public interface IActivityInfoService extends MPJBaseService<ActivityInfo> {
 
 
     Page<ActivityInfoPageVo> getPage(Page<ActivityInfoPageVo> page, ActivityInfoPageDto dto);
+
+    Page<ActivityInfoPageVo> getMyPage(Page<ActivityInfoPageVo> page, ActivityInfoPageDto dto);
 }

+ 5 - 0
src/main/java/com/xjrsoft/module/activity/service/impl/ActivityInfoServiceImpl.java

@@ -131,4 +131,9 @@ public class ActivityInfoServiceImpl extends MPJBaseServiceImpl<ActivityInfoMapp
     public Page<ActivityInfoPageVo> getPage(Page<ActivityInfoPageVo> page, ActivityInfoPageDto dto) {
         return this.baseMapper.getPage(page, dto);
     }
+
+    @Override
+    public Page<ActivityInfoPageVo> getMyPage(Page<ActivityInfoPageVo> page, ActivityInfoPageDto dto) {
+        return this.baseMapper.getMyPage(page, dto);
+    }
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/activity/vo/ActivityInfoVo.java

@@ -50,6 +50,9 @@ public class ActivityInfoVo {
     */
     @ApiModelProperty("组织部门(xjr_department)")
     private Long orgId;
+
+    @ApiModelProperty("组织部门名称")
+    private String orgName;
     /**
     * 报名结束时间
     */
@@ -90,6 +93,9 @@ public class ActivityInfoVo {
     */
     @ApiModelProperty("合作企业")
     private Long enterpriseId;
+
+    @ApiModelProperty("合作企业名称")
+    private String enterpriseName;
     /**
     * 1:校企合作活动 2:赛事活动
     */

+ 15 - 1
src/main/resources/mapper/activity/ActivityInfoMapper.xml

@@ -13,7 +13,21 @@
         LEFT JOIN xjr_department t4 ON t1.org_id = t4.id
         WHERE t1.delete_mark = 0 and t1.category = #{dto.category}
         <if test="dto.isEffective != null and dto.isEffective == 1">
-            and (t1.status = 1 or t1.status = 2) and now between t1.start_date and t1.end_date
+            and (t1.status = 1 or t1.status = 2) and now() between t1.start_date and t1.end_date
+        </if>
+    </select>
+    <select id="getMyPage" parameterType="com.xjrsoft.module.activity.dto.ActivityInfoPageDto" resultType="com.xjrsoft.module.activity.vo.ActivityInfoPageVo">
+        SELECT t1.id,t2.name AS type_cn,t3.company_name AS enterprise_name,t1.name,t1.place,t1.start_date,t1.end_date,
+        t1.type, t4.name AS org_name, t1.enroll_end_time, t1.duty_person,t1.duty_person_mobile, t1.cover_file_id,
+        t1.enroll_range, t1.status,t1.content,t1.category,
+        (SELECT COUNT(*) FROM activity_enroll WHERE delete_mark = 0 AND activity_info_id = t1.id) as enroll_count FROM activity_info t1
+        LEFT JOIN xjr_dictionary_detail t2 ON t1.type = t2.code
+        LEFT JOIN company_coop t3 ON t1.enterprise_id = t3.id
+        LEFT JOIN xjr_department t4 ON t1.org_id = t4.id
+        LEFT JOIN activity_enroll t5 ON t1.id = t5.activity_info_id
+        WHERE t1.delete_mark = 0 and t1.category = #{dto.category} and t5.user_id = #{dto.loginUserId}
+        <if test="dto.isEffective != null and dto.isEffective == 1">
+            and (t1.status = 1 or t1.status = 2) and now() between t1.start_date and t1.end_date
         </if>
     </select>
 </mapper>