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.*;
|
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.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.LuckyActivityAwardResult;
|
import com.ks.lucky.pojo.DO.LuckyActivityAwards;
|
import com.ks.lucky.remote.service.LuckyActivityAwardResultService;
|
import com.ks.lucky.remote.service.LuckyActivityAwardService;
|
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;
|
import org.yeshi.utils.JsonUtil;
|
import org.yeshi.utils.TimeUtil;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
@Controller
|
@RequestMapping("api/client/activity/awards")
|
public class ActivityAwardsController {
|
|
@Reference(version = "1.0.0",check = false)
|
private LuckyActivityAwardResultService luckyActivityAwardResultService;
|
|
@Reference(version = "1.0.0",check = false)
|
private LuckyActivityAwardService luckyActivityAwardService;
|
|
@Resource
|
private UserInfoService userInfoService;
|
|
@Resource
|
private ActivityDrawnRecieveNotifyInfoService activityDrawnRecieveNotifyInfoService;
|
|
|
/**
|
* 获取中奖信息
|
*
|
* @param acceptData
|
* @return
|
*/
|
@ResponseBody
|
@RequestMapping("getDrawnInfo")
|
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());
|
if (user != null) {
|
userList.add(new SimpleUser(user.getId(), user.getNickName(), user.getPortrait()));
|
}
|
}
|
item.put("userList", userList);
|
item.put("userCount", resultCount);
|
item.put("award", ActivityListItemInfoVOFactory.create(award, p++));
|
array.add(item);
|
}
|
|
JSONObject data = new JSONObject();
|
data.put("data", array);
|
Date updateTime = luckyActivityAwardResultService.getLatestUpdateTime(activityId);
|
if (updateTime != null) {
|
data.put("updateTime", TimeUtil.getGernalTime(updateTime.getTime(), "yyyy.MMM.dd HH:mm"));
|
}
|
return JsonUtil.loadTrueResult(data);
|
}
|
|
|
/**
|
* 获取活动的某个奖项的中奖列表
|
*
|
* @param acceptData
|
* @param activityId
|
* @param awardId
|
* @param page
|
* @return
|
*/
|
|
@ResponseBody
|
@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));
|
for (LuckyActivityAwardResult info : awardResults) {
|
UserInfo user = userMap.get(info.getUid());
|
if (user != null) {
|
userList.add(new SimpleUser(user.getId(), user.getNickName(), user.getPortrait()));
|
}
|
}
|
|
|
JSONObject data = new JSONObject();
|
data.put("data", userList);
|
data.put("count", count);
|
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 = info.getAwards();
|
|
vo.setTitle("活动期号:NO." + award.getActivityId());
|
vo.setActivityId(activityId);
|
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("未找到中奖记录");
|
}
|
try {
|
luckyActivityAwardResultService.recieveAward(acceptData.getApp().getId(), acceptData.getUid() + "", activityId);
|
return JsonUtil.loadTrueResult("领取成功");
|
} catch (LuckyActivityException e) {
|
e.printStackTrace();
|
} catch (LuckyActivityAwardException e) {
|
e.printStackTrace();
|
} catch (LuckyActivityAwardResultException e) {
|
e.printStackTrace();
|
}
|
return JsonUtil.loadFalseResult("领取失败");
|
}
|
|
|
}
|