admin
2021-01-28 8c1c003c60d2f27b3c55e248451caeec7f2b5631
service-daylucky/src/main/java/com/ks/daylucky/controller/api/client/ActivityAwardsController.java
@@ -1,17 +1,29 @@
package com.ks.daylucky.controller.api.client;
import com.ks.daylucky.pojo.DO.ActivityDrawnRecieveNotifyInfo;
import com.ks.daylucky.pojo.DO.UserInfo;
import com.ks.daylucky.pojo.VO.AcceptData;
import com.ks.daylucky.pojo.VO.SimpleUser;
import com.ks.daylucky.pojo.VO.*;
import com.ks.daylucky.service.ActivityDrawnRecieveNotifyInfoService;
import com.ks.daylucky.service.UserInfoService;
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.exception.LuckyActivityAwardException;
import com.ks.lucky.exception.LuckyActivityAwardResultException;
import com.ks.lucky.exception.LuckyActivityException;
import com.ks.lucky.pojo.DO.LuckyActivity;
import com.ks.lucky.pojo.DO.LuckyActivityAwardResult;
import com.ks.lucky.pojo.DO.LuckyActivityAwards;
import com.ks.lucky.pojo.DTO.ActivityAwardParams;
import com.ks.lucky.pojo.DTO.ActivityDrawnReceiveParams;
import com.ks.lucky.remote.service.LuckyActivityAwardResultService;
import com.ks.lucky.remote.service.LuckyActivityAwardService;
import com.ks.lucky.remote.service.LuckyActivityService;
import net.sf.json.JSONArray;
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;
@@ -28,14 +40,20 @@
@RequestMapping("api/client/activity/awards")
public class ActivityAwardsController {
    @Resource
    @Reference(version = "1.0.0", check = false)
    private LuckyActivityAwardResultService luckyActivityAwardResultService;
    @Resource
    @Reference(version = "1.0.0", check = false)
    private LuckyActivityAwardService luckyActivityAwardService;
    @Reference(version = "1.0.0", check = false)
    private LuckyActivityService luckyActivityService;
    @Resource
    private UserInfoService userInfoService;
    @Resource
    private ActivityDrawnRecieveNotifyInfoService activityDrawnRecieveNotifyInfoService;
    /**
@@ -49,19 +67,24 @@
    public String getDrawnInfo(AcceptData acceptData, Long activityId, int count) {
        List<LuckyActivityAwards> list = luckyActivityAwardService.getAwardList(activityId);
        JSONArray array = new JSONArray();
        int p = 0;
        for (LuckyActivityAwards award : list) {
            award = luckyActivityAwardService.getAwardDetail(award.getId());
            JSONObject item = new JSONObject();
            List<LuckyActivityAwardResult> awardResults = luckyActivityAwardResultService.getResultListWithAwardInfo(activityId, award.getId(), 1, count);
            long resultCount = luckyActivityAwardResultService.countResultWithAwardInfo(activityId, award.getId());
            List<SimpleUser> userList = new ArrayList<>();
            Map<Long, UserInfo> userMap = userInfoService.listUserInfoAsMap(UserInfoUtil.getBaseUserList(awardResults));
            for (LuckyActivityAwardResult info : awardResults) {
                UserInfo user = userMap.get(info.getUid());
                UserInfo user = userMap.get(Long.parseLong(info.getUid()));
                if (user != null) {
                    userList.add(new SimpleUser(user.getId(), user.getNickName(), user.getPortrait()));
                }
            }
            item.put("userList", userList);
            item.put("award", JsonUtil.getApiCommonGson().toJson(award));
            item.put("userCount", resultCount);
            item.put("award", ActivityListItemInfoVOFactory.create(award, p++));
            array.add(item);
        }
@@ -86,13 +109,13 @@
     */
    @ResponseBody
    @RequestMapping("getDrawnList")
    public String getDrawnList(AcceptData acceptData, Long activityId, Long awardId, int page) {
    @RequestMapping("getDrawnJoinerList")
    public String getDrawnJoinerList(AcceptData acceptData, Long activityId, Long awardId, int page) {
        List<LuckyActivityAwardResult> awardResults = luckyActivityAwardResultService.getResultListWithAwardInfo(activityId, awardId, page, Constant.PAGE_SIZE);
        long count = luckyActivityAwardResultService.countResultWithAwardInfo(activityId, awardId);
        List<SimpleUser> userList = new ArrayList<>();
        Map<Long, UserInfo> userMap =userInfoService.listUserInfoAsMap(UserInfoUtil.getBaseUserList(awardResults));
        Map<Long, UserInfo> userMap = userInfoService.listUserInfoAsMap(UserInfoUtil.getBaseUserList(awardResults));
        for (LuckyActivityAwardResult info : awardResults) {
            UserInfo user = userMap.get(info.getUid());
            if (user != null) {
@@ -107,5 +130,115 @@
        return JsonUtil.loadTrueResult(data);
    }
    /**
     * 获取领奖通知弹框
     *
     * @param acceptData
     * @return
     */
    @ResponseBody
    @RequestMapping("getRecieveAwardNotify")
    public String getRecieveAwardNotify(AcceptData acceptData, Long activityId) {
        ActivityDrawnRecieveNotifyInfo info = activityDrawnRecieveNotifyInfoService.getShowNotifyInfo(acceptData.getApp().getId(), acceptData.getUid(), activityId);
        if (info != null) {
            UserActivityUnRecievedAwardVO vo = new UserActivityUnRecievedAwardVO();
            LuckyActivityAwards award = luckyActivityAwardService.getAwardDetail(info.getAwards().getId());
            LuckyActivity activity = luckyActivityService.getActivity(award.getActivityId());
            vo.setTitle("活动期号:" + ActivityUtil.getActivityDateNumber(award.getActivityId(), activity.getCreateTime()));
            vo.setActivityId(info.getAwards().getActivityId());
            vo.setType(info.getType());
            vo.setId(info.getId());
            switch (info.getType()) {
                case ActivityDrawnRecieveNotifyInfo.TYPE_UNRECIEVE:
                    vo.setDesc("未领取,可在\"我的-全部抽奖\"中查看");
                    vo.setAward(ActivityListItemInfoVOFactory.create(award, null));
                    break;
                case ActivityDrawnRecieveNotifyInfo.TYPE_OUTDATE:
                    vo.setDesc("注:中奖日起7天内未领取奖品,将会把对应奖品原路退回赞助商,切记中奖后按时领取奖品。");
                    vo.setAward(ActivityListItemInfoVOFactory.create(award, award.getLevel()));
                    break;
            }
            return JsonUtil.loadTrueResult(vo);
        }
        return JsonUtil.loadFalseResult("");
    }
    /**
     * 设置中奖通知弹框已读
     *
     * @param acceptData
     * @param id
     * @return
     */
    @ResponseBody
    @RequestMapping("setDrawnNotifyRead")
    public String setDrawnNotifyRead(AcceptData acceptData, String id) {
        ActivityDrawnRecieveNotifyInfo info = activityDrawnRecieveNotifyInfoService.selectByPrimaryKey(id);
        String uid = null;
        Long appId = null;
        if (info.getAwardResult() != null) {
            uid = info.getAwardResult().getUid();
            appId = info.getAwardResult().getAppId();
        }
        if (uid == null || appId == null) {
            return JsonUtil.loadFalseResult("信息获取出错");
        }
        if (acceptData.getUid().longValue() != Long.parseLong(uid) || acceptData.getApp().getId().longValue() != appId) {
            return JsonUtil.loadFalseResult("不是自己的中奖");
        }
        activityDrawnRecieveNotifyInfoService.setNotifyShown(info.getId());
        return JsonUtil.loadTrueResult("");
    }
    /**
     * 领取奖品
     *
     * @param acceptData
     * @param activityId
     * @return
     */
    @ResponseBody
    @RequestMapping("recieveAward")
    public String recieveAward(AcceptData acceptData, Long activityId) {
        LuckyActivityAwardResult result = luckyActivityAwardResultService.getResult(acceptData.getApp().getId(), acceptData.getUid() + "", activityId);
        if (result == null) {
            return JsonUtil.loadFalseResult("未找到中奖记录");
        }
        /**
         * 填充必要的参数
         */
        ActivityDrawnReceiveParams params = new ActivityDrawnReceiveParams();
        LuckyActivityAwards luckyActivityAward = luckyActivityAwardService.getAwardDetail(result.getAwardId());
        //支付宝红包类型
        if (luckyActivityAward.getActivityAwardParams().getType() == ActivityAwardParams.ActivityAwardTypeEnum.alipayRedPackage) {
            //需要获取支付宝的ID
            UserInfo userInfo = userInfoService.getUserDetail(acceptData.getUid());
            params.setAlipayUid(userInfo.getAlipayUid());
        }
        try {
            luckyActivityAwardResultService.recieveAward(acceptData.getApp().getId(), acceptData.getUid() + "", activityId, params);
            return JsonUtil.loadTrueResult("领取成功");
        } catch (LuckyActivityException e) {
            e.printStackTrace();
        } catch (LuckyActivityAwardException e) {
            e.printStackTrace();
        } catch (LuckyActivityAwardResultException e) {
            e.printStackTrace();
        }
        return JsonUtil.loadFalseResult("领取失败");
    }
}