From 8c1c003c60d2f27b3c55e248451caeec7f2b5631 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 28 一月 2021 19:06:28 +0800 Subject: [PATCH] 活动管理界面完善 --- service-daylucky/src/main/java/com/ks/daylucky/controller/api/client/ActivityController.java | 230 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 190 insertions(+), 40 deletions(-) diff --git a/service-daylucky/src/main/java/com/ks/daylucky/controller/api/client/ActivityController.java b/service-daylucky/src/main/java/com/ks/daylucky/controller/api/client/ActivityController.java index db54b72..59f0ff3 100644 --- a/service-daylucky/src/main/java/com/ks/daylucky/controller/api/client/ActivityController.java +++ b/service-daylucky/src/main/java/com/ks/daylucky/controller/api/client/ActivityController.java @@ -1,87 +1,237 @@ package com.ks.daylucky.controller.api.client; -import com.ks.daylucky.pojo.DO.ActivityTag; -import com.ks.daylucky.pojo.DO.UserInfo; +import com.google.gson.Gson; +import com.ks.daylucky.pojo.DO.ActivityScanRecord; +import com.ks.daylucky.pojo.DO.AppConfig; +import com.ks.daylucky.pojo.DTO.SimpleShareInfo; +import com.ks.daylucky.pojo.VO.AlipayXCXShareInfoVO; +import com.ks.daylucky.pojo.DTO.ConfigKeyEnum; import com.ks.daylucky.pojo.VO.AcceptData; -import com.ks.daylucky.pojo.VO.ActivityDetailInfoVO; +import com.ks.daylucky.pojo.DTO.ActivityDetailInfoDTO; +import com.ks.daylucky.pojo.VO.ActivityDetailVO; import com.ks.daylucky.pojo.VO.SimpleUser; -import com.ks.daylucky.service.ActivityTagService; -import com.ks.daylucky.service.UserInfoService; +import com.ks.daylucky.service.*; import com.ks.daylucky.util.Constant; -import com.ks.daylucky.util.UserInfoUtil; +import com.ks.daylucky.util.activity.ActivityUtil; +import com.ks.daylucky.util.factory.vo.ActivityDetailVOFactory; +import com.ks.daylucky.util.factory.vo.ActivityListItemInfoVOFactory; import com.ks.lucky.pojo.DO.LuckyActivity; -import com.ks.lucky.pojo.DO.LuckyActivityJoinRecord; -import com.ks.lucky.pojo.DTO.ActivitySimpleUser; -import com.ks.lucky.remote.service.LuckyActivityJoinService; +import com.ks.lucky.remote.service.LuckyActivityJoinAssistService; import com.ks.lucky.remote.service.LuckyActivityService; +import net.sf.json.JSONObject; +import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.yeshi.utils.JsonUtil; import javax.annotation.Resource; +import java.net.URLEncoder; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -import java.util.Map; @Controller @RequestMapping("api/client/activity") public class ActivityController { - @Resource + @Reference(version = "1.0.0", check = false) private LuckyActivityService luckyActivityService; - @Resource - private ActivityTagService activityTagService; + @Reference(version = "1.0.0", check = false) + private LuckyActivityJoinAssistService luckyActivityJoinAssistService; @Resource - private LuckyActivityJoinService luckyActivityJoinService; + private ActivityScanRecordService activityScanRecordService; + + @Resource + private ActivityService activityService; + + @Resource + private AppConfigService appConfigService; + + @Resource + private ActivityExtraInfoService activityExtraInfoService; + + @Resource + private UserActivityExtraInfoService userActivityExtraInfoService; @Resource private UserInfoService userInfoService; + /** + * 鑾峰彇娲诲姩璇︽儏 + * + * @param acceptData + * @param activityId + * @return + */ @ResponseBody @RequestMapping("getActivityDetail") public String getActivityDetail(AcceptData acceptData, Long activityId) { + ActivityDetailInfoDTO dto = activityService.getActivityDetail(activityId, acceptData.getApp().getId(), acceptData.getUid(), true, 8, false); + if (dto == null) { + return JsonUtil.loadFalseResult("娲诲姩涓嶅瓨鍦�"); + } - ActivityDetailInfoVO vo = new ActivityDetailInfoVO(); + AppConfig help = appConfigService.getConfigCache(acceptData.getApp().getId(), ConfigKeyEnum.activityDetailHelp, acceptData.getVersion()); - LuckyActivity actiivty = luckyActivityService.getActivityDetail(activityId); - //鑾峰彇tag - List<ActivityTag> tagList = activityTagService.getTagList(activityId); + Integer assistCount = null; + if (dto.getJoin()) { + long count = luckyActivityJoinAssistService.countAssistRecord(activityId, acceptData.getApp().getId(), acceptData.getUid() + ""); + assistCount = (int) count; + } - //鑾峰彇鍙備笌鑰呮暟閲� - long count = luckyActivityJoinService.countWeightRank(activityId); + //鏌ヨ璧炲姪鍟嗗凡缁忓紑濮嬬殑娲诲姩鏁伴噺 - //鑾峰彇鏈�杩戠殑鍙備笌鑰呭垪琛� - List<SimpleUser> userList = new ArrayList<>(); - luckyActivityJoinService.getJoinerList(activityId, 1, 20); - List<ActivitySimpleUser> list = luckyActivityJoinService.getJoinerList(activityId, 1, Constant.PAGE_SIZE); - if (list != null && list.size() > 0) { - Map<Long, UserInfo> userInfoMap = userInfoService.listUserInfoAsMap(UserInfoUtil.getBaseUserList(list)); - for (ActivitySimpleUser info : list) { - UserInfo user = userInfoMap.get(info.getUid()); - if (user != null) { - userList.add(new SimpleUser(user.getId(), user.getNickName(), user.getPortrait())); + long count = luckyActivityService.countActivity(acceptData.getApp().getId(), dto.getActivity().getSponsorId(), ActivityUtil.getCanShowAcivityStateList(), null); + + ActivityDetailVO vo = ActivityDetailVOFactory.create(dto, help != null ? help.getValue() : null, assistCount, (int) count); + + //鍒嗕韩淇℃伅 + + String activityShareImage = null; + try { + activityShareImage = activityExtraInfoService.getShareImageLink(activityId, vo.getActivity().getAwardList(), acceptData.getApp().getId()); + } catch (Exception e) { + e.printStackTrace(); + } + + AppConfig appConfig = appConfigService.getConfigCache(acceptData.getApp().getId(), ConfigKeyEnum.activityShareInfo, acceptData.getVersion()); + SimpleShareInfo info = new Gson().fromJson(appConfig.getValue(), SimpleShareInfo.class); + + AlipayXCXShareInfoVO shareInfoDTO = new AlipayXCXShareInfoVO(); + shareInfoDTO.setPath(String.format("/pages/activity-detail/activity-detail?id=%s&joinInfo=%s", activityId, ActivityUtil.getShareJoinInfo(acceptData.getUid(), activityId))); + shareInfoDTO.setTitle(info.getTitle()); + shareInfoDTO.setDesc(info.getDesc()); + shareInfoDTO.setBgImgUrl(activityShareImage); + vo.setShareInfo(shareInfoDTO); + + //宸茬粡鍔犲叆娲诲姩灏遍渶瑕佽繑鍥炲姪鍔涘垎浜浘 + if (vo.isJoined()) { + SimpleUser user = userInfoService.getSimpleUser(acceptData.getUid()); + if (user != null) { + String assistShareImage = null; + try { + assistShareImage = userActivityExtraInfoService.getShareImageLink(activityId, user, acceptData.getApp().getId()); + } catch (Exception e) { + e.printStackTrace(); } + shareInfoDTO = new AlipayXCXShareInfoVO(); + shareInfoDTO.setPath(String.format("/pages/activity-detail/activity-detail?id=%s&joinInfo=%s", activityId, URLEncoder.encode(ActivityUtil.getShareJoinInfo(acceptData.getUid(), activityId)))); + shareInfoDTO.setTitle(info.getTitle()); + shareInfoDTO.setDesc(info.getDesc()); + shareInfoDTO.setBgImgUrl(assistShareImage); + vo.setAssistShareInfo(shareInfoDTO); } } - //鑾峰彇鏄惁鍙傚姞 - LuckyActivityJoinRecord record = luckyActivityJoinService.getJoinInfo(activityId, acceptData.getApp().getId(), acceptData.getUid() + ""); - boolean join = false; - if (record != null) { - join = true; + //鍔犲叆娴忚璁板綍 + ActivityScanRecord record = new ActivityScanRecord(); + record.setActivityId(activityId); + record.setUid(acceptData.getUid()); + activityScanRecordService.addRecord(record); + + AppConfig config = appConfigService.getConfigCache(acceptData.getApp().getId(), ConfigKeyEnum.disclaimers, acceptData.getVersion()); + if (config != null) { + vo.setDisclaimers(config.getValue()); } + return JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(vo)); + } - vo.setActivity(actiivty); - vo.setJoin(join); - vo.setJoinerList(userList); - vo.setTagList(tagList); - return JsonUtil.loadTrueResult(vo); + /** + * 鑾峰彇鎺ㄨ崘娲诲姩鍒楄〃 + * + * @param acceptData + * @param page + * @return + */ + @ResponseBody + @RequestMapping("getRecommendActivity") + public String getRecommendActivity(AcceptData acceptData, int page) { + List<LuckyActivity> list = luckyActivityService.getRecommendActivity(acceptData.getApp().getId(), acceptData.getUid() + "", page, Constant.PAGE_SIZE); + long count = luckyActivityService.getRecommendActivityCount(acceptData.getApp().getId(), acceptData.getUid() + ""); + + List<Long> activityIds = new ArrayList<>(); + if (list != null && list.size() > 0) { + for (LuckyActivity activity : list) { + activityIds.add(activity.getId()); + } + } + List<ActivityDetailInfoDTO> dtoList = activityService.getActivityDetail(activityIds, acceptData.getApp().getId(), acceptData.getUid(), false); + + JSONObject data = new JSONObject(); + data.put("data", JsonUtil.getSimpleGson().toJson(ActivityListItemInfoVOFactory.create(dtoList))); + data.put("count", count); + return JsonUtil.loadTrueResult(data); + } + + + /** + * 鑾峰彇璧炲姪鍟嗙殑娲诲姩 + * + * @param acceptData + * @param page + * @return + */ + @ResponseBody + @RequestMapping("getSponsorActivity") + public String getSponsorActivity(AcceptData acceptData, Long sponsorId, Long activityId, int page) { + + List<LuckyActivity> list = luckyActivityService.getActivityList(acceptData.getApp().getId(), sponsorId, getCanShowStateList(), Arrays.asList(new Long[]{activityId}), + null, page, Constant.CLIENT_ACTIVITY_LIST_PAGE_SIZE); + long count = luckyActivityService.countActivity(acceptData.getApp().getId(), sponsorId, getCanShowStateList(), null, Arrays.asList(new Long[]{activityId})); + + List<Long> activityIds = new ArrayList<>(); + if (list != null && list.size() > 0) { + for (LuckyActivity activity : list) { + activityIds.add(activity.getId()); + } + } + List<ActivityDetailInfoDTO> dtoList = activityService.getActivityDetail(activityIds, acceptData.getApp().getId(), acceptData.getUid(), false); + JSONObject data = new JSONObject(); + data.put("data", JsonUtil.getSimpleGson().toJson(ActivityListItemInfoVOFactory.create(dtoList))); + data.put("count", count); + return JsonUtil.loadTrueResult(data); + } + + /** + * 鑾峰彇娴忚瓒宠抗 + * + * @param acceptData + * @param page + * @return + */ + @ResponseBody + @RequestMapping("getScanActivityRecord") + public String getScanActivityRecord(AcceptData acceptData, int page) { + + List<ActivityScanRecord> list = activityScanRecordService.getRecordList(acceptData.getUid(), page, Constant.CLIENT_ACTIVITY_LIST_PAGE_SIZE); + long count = activityScanRecordService.countRecord(acceptData.getUid()); + + List<Long> activityIds = new ArrayList<>(); + if (list != null && list.size() > 0) { + for (ActivityScanRecord record : list) { + activityIds.add(record.getActivityId()); + } + } + List<ActivityDetailInfoDTO> dtoList = activityService.getActivityDetail(activityIds, acceptData.getApp().getId(), acceptData.getUid(), false); + JSONObject data = new JSONObject(); + data.put("data", JsonUtil.getSimpleGson().toJson(ActivityListItemInfoVOFactory.create(dtoList))); + data.put("count", count); + return JsonUtil.loadTrueResult(data); + } + + + private List<Integer> getCanShowStateList() { + List<Integer> list = new ArrayList<>(); + list.add(LuckyActivity.STATE_OPENED); + list.add(LuckyActivity.STATE_STARTED); + list.add(LuckyActivity.STATE_FINISH); + return list; } -- Gitblit v1.8.0