package com.yeshi.fanli.controller.client.v2;
|
|
import java.io.PrintWriter;
|
import java.util.ArrayList;
|
import java.util.HashSet;
|
import java.util.List;
|
import java.util.Set;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.yeshi.utils.JsonUtil;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.yeshi.fanli.entity.accept.AcceptData;
|
import com.yeshi.fanli.entity.bus.user.UserInfo;
|
import com.yeshi.fanli.entity.bus.user.UserRank;
|
import com.yeshi.fanli.entity.integral.IntegralTaskClass;
|
import com.yeshi.fanli.entity.integral.IntegralTaskRecord;
|
import com.yeshi.fanli.entity.integral.IntegralTaskClass.UniqueKeyEnum;
|
import com.yeshi.fanli.exception.integral.IntegralTaskRecordException;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.service.inter.integral.IntegralTaskClassService;
|
import com.yeshi.fanli.service.inter.integral.IntegralTaskRecordService;
|
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
import com.yeshi.fanli.service.inter.user.UserInfoService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.vo.integral.DailySignVO;
|
import com.yeshi.fanli.vo.integral.IntegralTaskClassVO;
|
import com.yeshi.fanli.vo.user.UserInfoExtraVO;
|
|
import net.sf.json.JSONObject;
|
|
@Controller
|
@RequestMapping("api/v2/integral")
|
public class IntegralControllerV2 {
|
|
@Resource
|
private UserInfoService userInfoService;
|
|
@Resource
|
private UserInfoExtraService userInfoExtraService;
|
|
@Resource
|
private IntegralTaskClassService integralTaskClassService;
|
|
@Resource
|
private IntegralTaskRecordService integralTaskRecordService;
|
|
|
/**
|
* 获取任务列表
|
* @param acceptData
|
* @param uid
|
* @param page
|
* @param out
|
*/
|
@RequestMapping(value = "getTaskList", method = RequestMethod.POST)
|
public void getTaskList(AcceptData acceptData, Long uid, Integer page, PrintWriter out) {
|
if (uid == null || uid <= 0) {
|
out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
|
return;
|
}
|
|
if (page == null || page < 1) {
|
out.print(JsonUtil.loadFalseResult(1, "页码不正确"));
|
return;
|
}
|
|
GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
|
Gson gson = gsonBuilder.create();
|
try {
|
JSONObject data = new JSONObject();
|
List<IntegralTaskClassVO> list = integralTaskClassService.getIntegralTaskClassVO(uid, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE);
|
if (list == null) {
|
list = new ArrayList<IntegralTaskClassVO>();
|
}
|
long count = integralTaskClassService.countTaskClass();
|
|
if (page == 1) {
|
UserInfoExtraVO extraVO = userInfoExtraService.getInfoExtraVOByUid(uid);
|
if (extraVO == null) {
|
out.print(JsonUtil.loadFalseResult(1, "用户相关信息不存在"));
|
return;
|
}
|
|
UserInfo userInfo = extraVO.getUserInfo();
|
if (userInfo == null) {
|
out.print(JsonUtil.loadFalseResult(1, "查询用户信息不全"));
|
return;
|
}
|
|
UserRank userRank = extraVO.getUserRank();
|
if (userRank == null) {
|
out.print(JsonUtil.loadFalseResult(1, "用户等级不存在"));
|
return;
|
}
|
|
boolean signState = false;
|
IntegralTaskClass taskClass = integralTaskClassService.getByUniqueKey(UniqueKeyEnum.dailySign.name());
|
if (taskClass != null)
|
signState = integralTaskRecordService.isToDaySign(uid, taskClass.getId());
|
|
// 签到日期
|
DailySignVO dailySignVO = integralTaskClassService.getDailySignList(uid, userRank.getId());
|
data.put("signState", signState);
|
data.put("goldCoin", extraVO.getGoldCoin());
|
data.put("portrait", userInfo.getPortrait());
|
data.put("userRank", gson.toJson(userRank));
|
data.put("dailySign", dailySignVO);
|
}
|
|
data.put("count", count);
|
data.put("list", gson.toJson(list));
|
out.print(JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
LogHelper.errorDetailInfo(e);
|
}
|
}
|
|
|
/**
|
* 获取已完成任务 未领取金币
|
* @param acceptData
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "getNotReceived", method = RequestMethod.POST)
|
public void getNotReceived(AcceptData acceptData, Long uid, PrintWriter out) {
|
if (uid == null || uid <= 0) {
|
out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
|
return;
|
}
|
|
List<IntegralTaskRecord> list = integralTaskRecordService.listNotReceived(5, uid);
|
if (list == null) {
|
list = new ArrayList<IntegralTaskRecord>();
|
}
|
|
GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
|
Gson gson = gsonBuilder.create();
|
|
JSONObject data = new JSONObject();
|
data.put("list", gson.toJson(list));
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
|
/**
|
* 领取金币
|
* @param acceptData
|
* @param uid
|
* @param ids
|
* @param out
|
*/
|
@RequestMapping(value = "receiveGoldCoin", method = RequestMethod.POST)
|
public void receiveGoldCoin(AcceptData acceptData, Long uid, String ids, PrintWriter out) {
|
if (uid == null || uid <= 0) {
|
out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
|
return;
|
}
|
|
Gson gson = new Gson();
|
Set<Long> idList = gson.fromJson(ids, new TypeToken<HashSet<Long>>() {}.getType());
|
if (idList == null || idList.size() == 0) {
|
out.print(JsonUtil.loadFalseResult("领取id不能为空"));
|
return;
|
}
|
|
try {
|
Integer goldCoin = integralTaskRecordService.receiveGoldCoin(uid, idList);
|
JSONObject data = new JSONObject();
|
data.put("goldCoin", goldCoin);
|
out.print(JsonUtil.loadTrueResult(data));
|
} catch (IntegralTaskRecordException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
}
|
}
|
|
}
|