From 41e016f222583c2403fec1ae5889f627f17f748c Mon Sep 17 00:00:00 2001
From: tangxiaobao <303826152@qq.com>
Date: 星期一, 06 九月 2021 09:45:26 +0800
Subject: [PATCH] 活动报名
---
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java | 400 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 335 insertions(+), 65 deletions(-)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
index 64ba0ec..92cf8c7 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
@@ -1,15 +1,30 @@
package com.panzhihua.service_community.api;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource;
+import cn.hutool.core.date.DateUtil;
+import com.panzhihua.service_community.model.dos.*;
+import com.panzhihua.service_community.service.*;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -17,12 +32,46 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.exceptions.ServiceException;
-import com.panzhihua.common.model.dtos.community.*;
+import com.panzhihua.common.model.dtos.community.ComActEasyPhotoCommentDTO;
+import com.panzhihua.common.model.dtos.community.ComActEasyPhotoCommentUserDTO;
+import com.panzhihua.common.model.dtos.community.EldersAuthAddByFamilyDTO;
+import com.panzhihua.common.model.dtos.community.EldersAuthAddDTO;
+import com.panzhihua.common.model.dtos.community.EldersAuthDeleteDTO;
+import com.panzhihua.common.model.dtos.community.EldersAuthEditDTO;
+import com.panzhihua.common.model.dtos.community.EldersAuthFeedbackAddDTO;
+import com.panzhihua.common.model.dtos.community.GrantRewardDTO;
+import com.panzhihua.common.model.dtos.community.PageComActDTO;
+import com.panzhihua.common.model.dtos.community.PageComActEasyPhotoCommentDTO;
+import com.panzhihua.common.model.dtos.community.PageEldersAuthDTO;
+import com.panzhihua.common.model.dtos.community.PageQuestnaireAnswerDTO;
+import com.panzhihua.common.model.dtos.community.PageQuestnaireDTO;
+import com.panzhihua.common.model.dtos.community.PageQuestnaireSubDetailsDTO;
import com.panzhihua.common.model.dtos.community.easyPhoto.ExportEasyPhotoDTO;
import com.panzhihua.common.model.dtos.community.questnaire.StatisticsSummaryDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.SystemmanagementConfigVO;
-import com.panzhihua.common.model.vos.community.*;
+import com.panzhihua.common.model.vos.community.ComActActRegistVO;
+import com.panzhihua.common.model.vos.community.ActivitySignVO;
+import com.panzhihua.common.model.vos.community.BatchhouseVO;
+import com.panzhihua.common.model.vos.community.ComActActEvaluateVO;
+import com.panzhihua.common.model.vos.community.ComActActPrizeVO;
+import com.panzhihua.common.model.vos.community.ComActActivityVO;
+import com.panzhihua.common.model.vos.community.ComActDynVO;
+import com.panzhihua.common.model.vos.community.ComActEasyPhotoVO;
+import com.panzhihua.common.model.vos.community.ComActMessageBackVO;
+import com.panzhihua.common.model.vos.community.ComActMessageVO;
+import com.panzhihua.common.model.vos.community.ComActMicroWishVO;
+import com.panzhihua.common.model.vos.community.ComActVO;
+import com.panzhihua.common.model.vos.community.ComMngStructAreaVO;
+import com.panzhihua.common.model.vos.community.ComMngStructHouseVO;
+import com.panzhihua.common.model.vos.community.ComMngStructOtherBuildVO;
+import com.panzhihua.common.model.vos.community.ComMngVolunteerMngAppletsVO;
+import com.panzhihua.common.model.vos.community.ComMngVolunteerMngVO;
+import com.panzhihua.common.model.vos.community.EldersAuthDetailsVO;
+import com.panzhihua.common.model.vos.community.EldersAuthVO;
+import com.panzhihua.common.model.vos.community.ResetComActMessageVO;
+import com.panzhihua.common.model.vos.community.SignactivityVO;
+import com.panzhihua.common.model.vos.community.TodoEventsVO;
import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo;
import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
import com.panzhihua.common.model.vos.community.questnaire.UsersAnswerQuestnaireVO;
@@ -30,12 +79,15 @@
import com.panzhihua.common.model.vos.user.SysUserNoticeVO;
import com.panzhihua.common.model.vos.user.UserPhoneVO;
import com.panzhihua.common.service.user.UserService;
-import com.panzhihua.common.utlis.*;
+import com.panzhihua.common.utlis.AgeUtils;
+import com.panzhihua.common.utlis.ClazzUtils;
+import com.panzhihua.common.utlis.DateUtils;
+import com.panzhihua.common.utlis.IdCard;
+import com.panzhihua.common.utlis.WxUtil;
+import com.panzhihua.common.utlis.WxXCXTempSend;
import com.panzhihua.service_community.dao.ComActActSignDAO;
import com.panzhihua.service_community.dao.ComEldersAuthHistoryRecordMapper;
import com.panzhihua.service_community.dao.ComMngPopulationDAO;
-import com.panzhihua.service_community.model.dos.*;
-import com.panzhihua.service_community.service.*;
import cn.hutool.core.util.IdcardUtil;
import lombok.extern.slf4j.Slf4j;
@@ -90,6 +142,10 @@
private ComEldersAuthHistoryRecordMapper comEldersAuthHistoryRecordMapper;
@Resource
private ComActEasyPhotoActivityService comActEasyPhotoActivityService;
+ @Resource
+ private ComActActEvaluateService comActActEvaluateService;
+ @Resource
+ private ComEldersAuthElderlyService comEldersAuthElderlyService;
/**
* 新增社区活动
@@ -279,6 +335,7 @@
if (ObjectUtils.isEmpty(comActActivityVO)) {
return R.fail("活动不存在");
}
+ //活动奖品
List<ComActActPrizeDO> comActActPrizeDOS = comActActPrizeService
.list(new QueryWrapper<ComActActPrizeDO>().lambda().eq(ComActActPrizeDO::getActivityId, id));
if (!ObjectUtils.isEmpty(comActActPrizeDOS)) {
@@ -290,6 +347,41 @@
});
comActActivityVO.setComActActPrizeVOList(comActActPrizeVOS);
}
+ //活动评价
+ List<ComActActEvaluateDO> comActActEvaluateDOList = comActActEvaluateService
+ .list(new QueryWrapper<ComActActEvaluateDO>().lambda().eq(ComActActEvaluateDO::getActivityId, id));
+ if (!ObjectUtils.isEmpty(comActActEvaluateDOList)) {
+ List<ComActActEvaluateVO> comActActEvaluateVOList = new ArrayList<>();
+ comActActEvaluateDOList.forEach(comActActEvaluateDO -> {
+ ComActActEvaluateVO comActActEvaluateVO = new ComActActEvaluateVO();
+ BeanUtils.copyProperties(comActActEvaluateDO, comActActEvaluateVO);
+ comActActEvaluateVOList.add(comActActEvaluateVO);
+ });
+ comActActivityVO.setComActActEvaluateVOList(comActActEvaluateVOList);
+ //活动评价总数
+ comActActivityVO.setEvaluateAmount(comActActEvaluateDOList.size());
+ //当前用户对活动的评分
+ Optional.ofNullable(userId).ifPresent(currentUserId -> {
+ Optional<ComActActEvaluateDO> optional = comActActEvaluateDOList.stream()
+ .filter(comActActEvaluateDO -> comActActEvaluateDO.getUserId().equals(currentUserId)).findFirst();
+ if (optional.isPresent()) {
+ comActActivityVO.setMyRating(optional.get().getStarLevel());
+ }
+ });
+ }
+ //签到时间
+ Optional.ofNullable(userId).ifPresent(currentUserId -> {
+ R listSignInResult = comActActivityService.listSignInActivity(currentUserId);
+ if (R.isOk(listSignInResult) && !ObjectUtils.isEmpty(listSignInResult.getData())) {
+ Optional<ComActActRegistVO> optional = JSONArray.parseArray(JSONArray.toJSONString(listSignInResult.getData()), ComActActRegistVO.class).stream()
+ .filter(activitySignInVO -> activitySignInVO.getActivityId().equals(id))
+ .sorted(Comparator.comparing(ComActActRegistVO::getCreateAt).reversed()).findFirst();
+ if (optional.isPresent()) {
+ comActActivityVO.setActivitySignInDate(optional.get().getCreateAt());
+ }
+ }
+ });
+ //活动报名名单
ActivitySignVO activitySignVO = new ActivitySignVO();
activitySignVO.setActivityId(id);
R r = comActActivityService.listActivitySigns(activitySignVO);
@@ -330,6 +422,50 @@
}
/**
+ * 活动签到
+ *
+ * @param comActActRegistVO 请求参数
+ * @return 签到结果
+ */
+ @PostMapping("activity/sign-in")
+ public R activitySignIn(@RequestBody ComActActRegistVO comActActRegistVO) {
+ return comActActivityService.activitySignIn(comActActRegistVO);
+ }
+
+ /**
+ * 用户签到列表
+ *
+ * @param userId 用户id
+ * @return 用户签到记录列表
+ */
+ @GetMapping("/sign-in/user/list")
+ public R listSignInActivity(@RequestParam("userId") Long userId) {
+ return comActActivityService.listSignInActivity(userId);
+ }
+
+ /**
+ * 社区活动评价
+ *
+ * @param comActActEvaluateVO 社区评价VO
+ * @return 评价结果
+ */
+ @PostMapping("activity/evaluate")
+ public R activityEvaluate(@RequestBody ComActActEvaluateVO comActActEvaluateVO) {
+ return comActActEvaluateService.activityEvaluate(comActActEvaluateVO);
+ }
+
+ /**
+ * 用户评价列表
+ *
+ * @param userId 用户id
+ * @return 当前用户对所有活动的评价列表
+ */
+ @GetMapping("/evaluate/user/list")
+ public R listEvaluate(@RequestParam("userId") Long userId) {
+ return comActActEvaluateService.listEvaluate(userId);
+ }
+
+ /**
* 分页活动报名名单
*
* @param activitySignVO
@@ -351,6 +487,114 @@
@PostMapping("listactivitysigns")
public R listActivitySigns(@RequestBody ActivitySignVO activitySignVO) {
return comActActivityService.listActivitySigns(activitySignVO);
+ }
+
+ /**
+ * description getSignLists 查询活动报名名单
+ * @param activitySignVO 查询参数
+ * @return R 查询结果
+ * @author txb
+ * @date 2021/8/24 14:03
+ */
+ @PostMapping("activity/sign/getList")
+ public R getSignLists(@RequestBody ActivitySignVO activitySignVO){
+ return comActActivityService.getSignLists(activitySignVO);
+ }
+
+ /**
+ * description listActivityRegists 分页查询活动评价
+ * @param comActActEvaluateVO 活动评价vo
+ * @return R 分页查询结果
+ * @author txb
+ * @date 2021/8/24 14:03
+ */
+ @PostMapping("activity/evaluate/page")
+ public R pageActivityEvaluates(@RequestBody ComActActEvaluateVO comActActEvaluateVO) {
+ return comActActivityService.pageActivityEvaluates(comActActEvaluateVO);
+ }
+
+ /**
+ * description getEvaluateLists 查询活动评价
+ * @param comActActEvaluateVO 查询参数
+ * @return R 查询结果
+ * @author txb
+ * @date 2021/8/24 14:03
+ */
+ @PostMapping("activity/evaluate/getList")
+ public R getEvaluateLists(@RequestBody ComActActEvaluateVO comActActEvaluateVO){
+ return comActActivityService.getEvaluateLists(comActActEvaluateVO);
+ }
+
+ /**
+ * description pageActivityRegists 分页查询活动签到
+ * @param comActActRegistVO 活动签到vo
+ * @return R 分页查询结果
+ * @author txb
+ * @date 2021/8/24 14:03
+ */
+ @PostMapping("activity/regist/page")
+ public R pageActivityRegists(@RequestBody ComActActRegistVO comActActRegistVO) {
+ return comActActivityService.pageActivityRegists(comActActRegistVO);
+ }
+
+ /**
+ * description getRegistLists 查询活动签到
+ * @param comActActRegistVO 查询参数
+ * @return R 查询结果
+ * @author txb
+ * @date 2021/8/25 9:33
+ */
+ @PostMapping("activity/regist/getList")
+ public R getRegistLists(@RequestBody ComActActRegistVO comActActRegistVO){
+ return comActActivityService.getRegistLists(comActActRegistVO);
+ }
+
+ /**
+ * description getRegistLists 查询活动未签到
+ * @param comActActRegistVO 查询参数
+ * @return R 查询结果
+ * @author txb
+ * @date 2021/8/25 9:33
+ */
+ @PostMapping("activity/noRegist/getList")
+ public R getNoRegistLists(@RequestBody ComActActRegistVO comActActRegistVO){
+ return comActActivityService.getNoRegistLists(comActActRegistVO);
+ }
+
+ /**
+ * description activityStagistics 活动数据统计
+ * @param activityId 活动id
+ * @return R 统计结果
+ * @author txb
+ * @date 2021/8/25 13:33
+ */
+ @GetMapping("activity/statistics")
+ public R activityStatistics(@RequestParam("activityId") Long activityId){
+ return comActActivityService.activityStatistics(activityId);
+ }
+
+ /**
+ * 获取活动历史封面 getPictureList
+ * @param userId 用户id
+ * @return R 统计结果
+ * @author txb
+ * @date 2021/8/27 13:33
+ */
+ @GetMapping("/activity/picture/getList")
+ public R getPictureList(@RequestParam("userId") Long userId){
+ return comActActivityService.getPictureList(userId);
+ }
+
+ /**
+ * 获取系统预置图库 getSysPictureList
+ * @param type 图库类型
+ * @return R 系统图库集
+ * @author txb
+ * @date 2021/8/27 13:33
+ */
+ @GetMapping("/activity/sysPicture/getList")
+ public R getSysPictureList(@RequestParam(value = "type") Integer type){
+ return comActActivityService.getSysPictureList(type);
}
/**
@@ -1868,67 +2112,71 @@
if (authUserDO == null) {
return R.fail("未查询到老人信息");
}
-
- Long elderId = authUserDO.getId();
- boolean canReAuthThisMonth = comEldersAuthUserService.checkReAuthAgain(elderId);
- if (!canReAuthThisMonth) {
- return R.fail("当月已认证,不能再次进行认证");
- }
-
+ //根据身份证获取出生日期并获取岁数
String idCard = authUserDO.getIdCard();
-
- Long loginUserId = eldersAuthAddByFamilyDTO.getUserId();
- EldersAuthDO eldersAuthDO = new EldersAuthDO();
- eldersAuthDO.setSumitUserId(loginUserId);
- eldersAuthDO.setCreateBy(loginUserId);
- eldersAuthDO.setCreateAt(new Date());
- eldersAuthDO.setIdCard(idCard);
- eldersAuthDO.setAuthUserName(authUserDO.getName());
- eldersAuthDO.setVideoUrl(eldersAuthAddByFamilyDTO.getVideoUrl());
- eldersAuthDO.setFamilyUserId(authUserDO.getId());
- eldersAuthDO.setAge(IdcardUtil.getAgeByIdCard(idCard));
- // 根据身份证查询出籍贯 出生日期
- // String domicile = IdCard.domicile(eldersAuthDO.getIdCard());
- String domicile = eldersAuthService.queryDomicile(eldersAuthDO.getIdCard());
- if (StringUtils.isEmpty(domicile)) {
- domicile = "暂无";
- }
-
Date birthDay = IdCard.birthDay(idCard);
- eldersAuthDO.setDomicile(domicile);
- eldersAuthDO.setBirthDay(birthDay);
- int add = eldersAuthService.getBaseMapper().insert(eldersAuthDO);
- if (add == 1) {
- // 设置认证成功
- Long familyUserId = eldersAuthDO.getFamilyUserId();
- ComEldersAuthUserDO comEldersAuthUserDO = new ComEldersAuthUserDO();
- comEldersAuthUserDO.setId(familyUserId);
- comEldersAuthUserDO.setIsAuth(1);
- boolean updated = comEldersAuthUserService.updateById(comEldersAuthUserDO);
- if (!updated) {
- throw new ServiceException("添加认证失败,更新认证状态");
- }
- // 认证成功 添加认证记录
- List<ComEldersAuthHistoryRecordDO> authHistoryRecordDOList =
- comEldersAuthHistoryRecordMapper.selectList(new QueryWrapper<ComEldersAuthHistoryRecordDO>().lambda()
- .eq(ComEldersAuthHistoryRecordDO::getIdCard, idCard)
- .ge(ComEldersAuthHistoryRecordDO::getCreateAt, DateUtils.getFirstDayOfMonth()));
- if (authHistoryRecordDOList.isEmpty()) {
- ComEldersAuthHistoryRecordDO authHistoryRecordDO = new ComEldersAuthHistoryRecordDO();
- authHistoryRecordDO.setUserId(eldersAuthAddByFamilyDTO.getFamilyUserId());
- authHistoryRecordDO.setAuthId(eldersAuthDO.getId());
- BeanUtils.copyProperties(eldersAuthDO, authHistoryRecordDO);
- authHistoryRecordDO.setId(null);
- authHistoryRecordDO.setBrithday(AgeUtils.getAgeFormatBirthday(IdcardUtil.getBirthByIdCard(idCard)));
- authHistoryRecordDO.setAge(IdcardUtil.getAgeByIdCard(idCard));
- authHistoryRecordDO.setIsAuth(1);
- authHistoryRecordDO.setDomicile(domicile);
- comEldersAuthHistoryRecordMapper.insert(authHistoryRecordDO);
- }
- return R.ok(eldersAuthDO.getId());
- }
+ long year=DateUtil.betweenYear(birthDay,DateUtil.date(),true);
+ if(authUserDO.getBigAgeId()!=null){
+ ComEldersAuthElderlyDO comEldersAuthElderlyDO=comEldersAuthElderlyService.getById(authUserDO.getBigAgeId());
+ if(comEldersAuthElderlyDO!=null&&comEldersAuthElderlyDO.getIsExist()==ComEldersAuthElderlyDO.isExist.yes&&comEldersAuthElderlyDO.getIsBigAge()==ComEldersAuthElderlyDO.isBigAge.yes&&year>=80){
+ Long elderId = authUserDO.getId();
+ boolean canReAuthThisMonth = comEldersAuthUserService.checkReAuthAgain(elderId);
+ if (!canReAuthThisMonth) {
+ return R.fail("当月已认证,不能再次进行认证");
+ }
+ Long loginUserId = eldersAuthAddByFamilyDTO.getUserId();
+ EldersAuthDO eldersAuthDO = new EldersAuthDO();
+ eldersAuthDO.setSumitUserId(loginUserId);
+ eldersAuthDO.setCreateBy(loginUserId);
+ eldersAuthDO.setCreateAt(new Date());
+ eldersAuthDO.setIdCard(idCard);
+ eldersAuthDO.setAuthUserName(authUserDO.getName());
+ eldersAuthDO.setVideoUrl(eldersAuthAddByFamilyDTO.getVideoUrl());
+ eldersAuthDO.setFamilyUserId(authUserDO.getId());
+ eldersAuthDO.setAge(IdcardUtil.getAgeByIdCard(idCard));
+ // 根据身份证查询出籍贯 出生日期
+ // String domicile = IdCard.domicile(eldersAuthDO.getIdCard());
+ String domicile = eldersAuthService.queryDomicile(eldersAuthDO.getIdCard());
+ if (StringUtils.isEmpty(domicile)) {
+ domicile = "暂无";
+ }
+ eldersAuthDO.setDomicile(domicile);
+ eldersAuthDO.setBirthDay(birthDay);
+ int add = eldersAuthService.getBaseMapper().insert(eldersAuthDO);
+ if (add == 1) {
+ // 设置认证成功
+ Long familyUserId = eldersAuthDO.getFamilyUserId();
+ ComEldersAuthUserDO comEldersAuthUserDO = new ComEldersAuthUserDO();
+ comEldersAuthUserDO.setId(familyUserId);
+ comEldersAuthUserDO.setIsAuth(1);
+ boolean updated = comEldersAuthUserService.updateById(comEldersAuthUserDO);
+ if (!updated) {
+ throw new ServiceException("添加认证失败,更新认证状态");
+ }
+ // 认证成功 添加认证记录
+ List<ComEldersAuthHistoryRecordDO> authHistoryRecordDOList =
+ comEldersAuthHistoryRecordMapper.selectList(new QueryWrapper<ComEldersAuthHistoryRecordDO>().lambda()
+ .eq(ComEldersAuthHistoryRecordDO::getIdCard, idCard)
+ .ge(ComEldersAuthHistoryRecordDO::getCreateAt, DateUtils.getFirstDayOfMonth()));
+ if (authHistoryRecordDOList.isEmpty()) {
+ ComEldersAuthHistoryRecordDO authHistoryRecordDO = new ComEldersAuthHistoryRecordDO();
+ authHistoryRecordDO.setUserId(eldersAuthAddByFamilyDTO.getFamilyUserId());
+ authHistoryRecordDO.setAuthId(eldersAuthDO.getId());
+ BeanUtils.copyProperties(eldersAuthDO, authHistoryRecordDO);
+ authHistoryRecordDO.setId(null);
+ authHistoryRecordDO.setBrithday(AgeUtils.getAgeFormatBirthday(IdcardUtil.getBirthByIdCard(idCard)));
+ authHistoryRecordDO.setAge(IdcardUtil.getAgeByIdCard(idCard));
+ authHistoryRecordDO.setIsAuth(1);
+ authHistoryRecordDO.setDomicile(domicile);
+ comEldersAuthHistoryRecordMapper.insert(authHistoryRecordDO);
+ }
+ return R.ok(eldersAuthDO.getId());
+ }
- return R.fail();
+ }
+ return R.fail("不满足认证条件");
+ }
+ return R.fail("未查询到高龄老人库数据");
}
/**
@@ -2065,6 +2313,20 @@
}
/**
+ * 获取首页弹窗接口
+ *
+ * @param userId
+ * 用户id
+ * @param communityId
+ * 社区id
+ * @return 首页弹窗接口
+ */
+ @PostMapping("easyphoto/getUserRewards")
+ public R getUserRewards(@RequestParam("userId") Long userId, @RequestParam("communityId") Long communityId) {
+ return comActEasyPhotoService.getUserReward(userId, communityId);
+ }
+
+ /**
* 读取用户随手拍奖励
*
* @param userId
@@ -2130,6 +2392,14 @@
}
/**
+ * 定时任务针对活动结束后7天还未评价的用户默认好评
+ */
+ @PostMapping("activity/default-praise")
+ public R timedTaskActivityDefaultPraise() {
+ return comActActEvaluateService.timedTaskActivityDefaultPraise();
+ }
+
+ /**
* 小程序-新增问卷调查浏览数量
*
* @param questId
--
Gitblit v1.7.1