From 74196bcc835d9b76cdd1bc3d85b0dfbe0191fc00 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 31 十二月 2020 19:23:43 +0800
Subject: [PATCH] 活动信息缓存

---
 service-daylucky/src/main/java/com/ks/daylucky/controller/api/client/ActivityController.java |  189 +++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 166 insertions(+), 23 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 f08268c..96904f7 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,21 +1,23 @@
 package com.ks.daylucky.controller.api.client;
 
-import com.ks.daylucky.pojo.DO.ActivityTag;
-import com.ks.daylucky.pojo.DO.UserInfo;
+import com.ks.daylucky.pojo.DO.ActivityScanRecord;
+import com.ks.daylucky.pojo.DO.AppConfig;
+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.ActivityService;
-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;
@@ -23,27 +25,36 @@
 
 import javax.annotation.Resource;
 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;
-
-    @Resource
-    private UserInfoService userInfoService;
+    private ActivityScanRecordService activityScanRecordService;
 
     @Resource
     private ActivityService activityService;
+
+    @Resource
+    private AppConfigService appConfigService;
+
+    @Resource
+    private ActivityExtraInfoService activityExtraInfoService;
+
+    @Resource
+    private UserActivityExtraInfoService userActivityExtraInfoService;
+
+    @Resource
+    private UserInfoService userInfoService;
 
 
     /**
@@ -56,12 +67,73 @@
     @ResponseBody
     @RequestMapping("getActivityDetail")
     public String getActivityDetail(AcceptData acceptData, Long activityId) {
-        ActivityDetailInfoVO vo = activityService.getActivityDetail(activityId, acceptData.getApp().getId(), acceptData.getUid(), true, 20, false);
-        if (vo == null) {
+        ActivityDetailInfoDTO dto = activityService.getActivityDetail(activityId, acceptData.getApp().getId(), acceptData.getUid(), true, 8, false);
+        if (dto == null) {
             return JsonUtil.loadFalseResult("娲诲姩涓嶅瓨鍦�");
         }
 
-        return JsonUtil.loadTrueResult(vo);
+        AppConfig help = appConfigService.getConfigCache(acceptData.getApp().getId(), ConfigKeyEnum.activityDetailHelp, acceptData.getVersion());
+
+        Integer assistCount = null;
+        if (dto.getJoin()) {
+            long count = luckyActivityJoinAssistService.countAssistRecord(activityId, acceptData.getApp().getId(), acceptData.getUid() + "");
+            assistCount = (int) count;
+        }
+
+        //鏌ヨ璧炲姪鍟嗗凡缁忓紑濮嬬殑娲诲姩鏁伴噺
+
+        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();
+        }
+
+        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("娴嬭瘯鏍囬");
+        shareInfoDTO.setDesc("娴嬭瘯绠�浠�");
+        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, ActivityUtil.getShareJoinInfo(acceptData.getUid(), activityId)));
+                shareInfoDTO.setTitle("娴嬭瘯鏍囬");
+                shareInfoDTO.setDesc("娴嬭瘯绠�浠�");
+                shareInfoDTO.setBgImgUrl(assistShareImage);
+                vo.setAssistShareInfo(shareInfoDTO);
+            }
+        }
+
+
+        //鍔犲叆娴忚璁板綍
+        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));
     }
 
 
@@ -84,12 +156,83 @@
                 activityIds.add(activity.getId());
             }
         }
-        List<ActivityDetailInfoVO> voList = activityService.getActivityDetail(activityIds, acceptData.getApp().getId(), acceptData.getUid(), false);
+        List<ActivityDetailInfoDTO> dtoList = activityService.getActivityDetail(activityIds, acceptData.getApp().getId(), acceptData.getUid(), false);
+
+//        //TODO 娴嬭瘯
+//        for (int i = 0; i < 20; i++) {
+//            dtoList.add(dtoList.get(0));
+//        }
+
         JSONObject data = new JSONObject();
-        data.put("data", voList);
+        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