From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/IntegralControllerV2.java | 1441 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 786 insertions(+), 655 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/IntegralControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/IntegralControllerV2.java index d5b294f..bd9019e 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/IntegralControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/IntegralControllerV2.java @@ -1,655 +1,786 @@ -package com.yeshi.fanli.controller.client.v2; - -import java.io.IOException; -import java.io.PrintWriter; -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -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.JsonElement; -import com.google.gson.JsonPrimitive; -import com.google.gson.JsonSerializationContext; -import com.google.gson.JsonSerializer; -import com.google.gson.TypeAdapter; -import com.google.gson.reflect.TypeToken; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import com.yeshi.fanli.entity.accept.AcceptData; -import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum; -import com.yeshi.fanli.entity.bus.user.UserInfo; -import com.yeshi.fanli.entity.bus.user.UserRank; -import com.yeshi.fanli.entity.integral.CodePublishRecord; -import com.yeshi.fanli.entity.integral.IntegralExchange; -import com.yeshi.fanli.entity.integral.IntegralTaskClass.UniqueKeyEnum; -import com.yeshi.fanli.entity.integral.IntegralTaskRecord; -import com.yeshi.fanli.exception.integral.IntegralExchangeException; -import com.yeshi.fanli.exception.integral.IntegralTaskRecordException; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.config.ConfigService; -import com.yeshi.fanli.service.inter.integral.CodePublishRecordService; -import com.yeshi.fanli.service.inter.integral.IntegralDetailService; -import com.yeshi.fanli.service.inter.integral.IntegralExchangeRecordService; -import com.yeshi.fanli.service.inter.integral.IntegralExchangeService; -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.util.StringUtil; -import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.vo.integral.DailySignVO; -import com.yeshi.fanli.vo.integral.ExchangeTipVO; -import com.yeshi.fanli.vo.integral.IntegralDetailVO; -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 ConfigService configService; - - @Resource - private UserInfoService userInfoService; - - @Resource - private UserInfoExtraService userInfoExtraService; - - @Resource - private IntegralTaskClassService integralTaskClassService; - - @Resource - private IntegralTaskRecordService integralTaskRecordService; - - @Resource - private IntegralExchangeService integralExchangeService; - - @Resource - private IntegralExchangeRecordService integralExchangeRecordService; - - @Resource - private IntegralDetailService integralDetailService; - - @Resource - private CodePublishRecordService codePublishRecordService; - - /** - * 鑾峰彇浠诲姟鍒楄〃 - * - * @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(); - - // 鐢ㄦ埛绛惧埌 - Integer signState = 0; - if (page == 1) { - - // 绛惧埌 - try { - signState = integralTaskClassService.finishedDailySign(uid); - } catch (Exception e) { - e.printStackTrace(); - } - - 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; - } - - // 绛惧埌鏃ユ湡淇℃伅 - DailySignVO dailySignVO = integralTaskClassService.getDailySignList(uid, userRank.getId()); - - boolean ejectSign = false; - if (signState == 1) - ejectSign = true; - - data.put("signState", ejectSign); - data.put("goldCoin", extraVO.getGoldCoin()); - data.put("portrait", userInfo.getPortrait()); - data.put("userRank", gson.toJson(userRank)); - data.put("dailySign", dailySignVO); - } - - - for (IntegralTaskClassVO taskClassVO : list) { - String progress = taskClassVO.getProgress(); - if (StringUtil.isNullOrEmpty(progress)) - continue; - - Integer taskNum = taskClassVO.getTaskNum(); - if (taskNum == null) - continue; - - UniqueKeyEnum uniqueKey = taskClassVO.getUniqueKey(); - if (uniqueKey == UniqueKeyEnum.dailySign) { - if (signState == 0) { - taskClassVO.setLightUp(true); // 绛惧埌澶辫触 - } else if (signState == 1) { - taskClassVO.setLightUp(false); - } else if (signState == 2) { - taskClassVO.setLightUp(false); - } - } else { - taskClassVO.setLightUp(true); - } - - Integer dateType = 1; // 鏌ヨ褰撴棩 - if (uniqueKey == UniqueKeyEnum.orderReward) - dateType = null; // 鏌ヨ鍘嗗彶 - - Long id = taskClassVO.getId(); - int countFinished = 0; - Integer totalGoldCoin = integralTaskRecordService.getTotalGoldCoin(uid, id, dateType); - if (totalGoldCoin != null && totalGoldCoin > 0) { - taskClassVO.setFinishedCoin("+" + totalGoldCoin); - if (uniqueKey != UniqueKeyEnum.dailySign) - countFinished = integralTaskRecordService.countFinished(uid, id, dateType); - } - progress = progress.replace("{宸插畬鎴恾", countFinished + "").replace("{鎬讳换鍔", taskNum + ""); - - if (signState == 0 && uniqueKey == UniqueKeyEnum.dailySign) { - progress = "鏈鍒�"; - taskClassVO.setBtnName("绛惧埌"); - } - taskClassVO.setProgress(progress); - } - - 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; - } - - int count = 5; - if ("android".equalsIgnoreCase(acceptData.getPlatform())) { - count = Integer.MAX_VALUE; - } - - List<IntegralTaskRecord> list = integralTaskRecordService.listNotReceived(count, 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 // 棰嗗彇id - * @param gids // 鏈鍙杋d - * @param out - */ - @RequestMapping(value = "receiveGoldCoin", method = RequestMethod.POST) - public void receiveGoldCoin(AcceptData acceptData, Long uid, Integer type, String ids, String gids, PrintWriter out) { - if (uid == null || uid <= 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - try { - // 鍏ㄩ儴棰嗗彇 - if (type != null && type == 1) { - Integer goldCoin = integralTaskRecordService.receiveGoldCoinALL(uid); - JSONObject data = new JSONObject(); - data.put("goldCoin", goldCoin); - out.print(JsonUtil.loadTrueResult(data)); - 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; - } - Integer goldCoin = integralTaskRecordService.receiveGoldCoin(uid, idList); - Set<Long> gidList = gson.fromJson(gids, new TypeToken<HashSet<Long>>() {}.getType()); - List<IntegralTaskRecord> list = null; - if (gidList != null && gidList.size() > 0) { - list = integralTaskRecordService.listNotReceivedExcludeId(5 - gidList.size(), uid, gidList); - } else { - list = integralTaskRecordService.listNotReceivedExcludeId(5, uid, null); - } - - if (list == null) { - list = new ArrayList<IntegralTaskRecord>(); - } - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - Gson gson2 = gsonBuilder.create(); - - JSONObject data = new JSONObject(); - data.put("goldCoin", goldCoin); - data.put("list", gson2.toJson(list)); - out.print(JsonUtil.loadTrueResult(data)); - } catch (IntegralTaskRecordException e) { - out.print(JsonUtil.loadFalseResult(e.getMsg())); - } - } - - /** - * 閲戝竵鍏戞崲鍒楄〃 - * - * @param acceptData - * @param uid - * @param ids - * @param out - */ - @RequestMapping(value = "getExchangeList", method = RequestMethod.POST) - public void getExchangeList(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; - } - - UserInfoExtraVO extraVO = userInfoExtraService.getInfoExtraVOByUid(uid); - if (extraVO == null) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鐩稿叧淇℃伅涓嶅瓨鍦�")); - return; - } - - List<IntegralExchange> list = integralExchangeRecordService.listExchange((page - 1) * Constant.PAGE_SIZE, - Constant.PAGE_SIZE, uid); - if (list == null) - list = new ArrayList<IntegralExchange>(); - - //Long count = integralExchangeService.countValid(); - - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - Gson gson = gsonBuilder.create(); - - JSONObject data = new JSONObject(); - data.put("goldCoin", extraVO.getGoldCoin() + "鏋�"); - data.put("count", list.size()); - data.put("list", gson.toJson(list)); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鍏戞崲閲戝竵妫�楠� - * - * @param acceptData - * @param uid - * @param id - * @param out - */ - @RequestMapping(value = "verifyExchange", method = RequestMethod.POST) - public void verifyExchange(AcceptData acceptData, Long uid, Long id, PrintWriter out) { - try { - ExchangeTipVO exchange = integralExchangeService.verifyExchange(uid, id); - - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - Gson gson = gsonBuilder.create(); - - JSONObject data = new JSONObject(); - data.put("result", gson.toJson(exchange)); - out.print(JsonUtil.loadTrueResult(data)); - } catch (IntegralExchangeException e) { - out.print(JsonUtil.loadFalseResult(1, e.getMsg())); - } - } - - /** - * 鍏戞崲閲戝竵 - * - * @param acceptData - * @param uid - * @param id - * @param out - */ - @RequestMapping(value = "exchange", method = RequestMethod.POST) - public void exchange(AcceptData acceptData, Long uid, Long id, PrintWriter out) { - try { - IntegralExchange exchange = integralExchangeService.exchange(uid, id); - - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - Gson gson = gsonBuilder.create(); - - JSONObject data = new JSONObject(); - data.put("result", gson.toJson(exchange)); - out.print(JsonUtil.loadTrueResult(data)); - } catch (IntegralExchangeException e) { - out.print(JsonUtil.loadFalseResult(1, e.getMsg())); - } - } - - /** - * 鍏戞崲閲戝竵妫�楠�-閭�璇风爜 - * - * @param acceptData - * @param uid - * @param id - * @param out - */ - @RequestMapping(value = "verifyInviteCode", method = RequestMethod.POST) - public void verifyInviteCode(AcceptData acceptData, Long uid, Long id, PrintWriter out) { - try { - ExchangeTipVO exchange = integralExchangeService.verifyInviteCode(uid, id); - - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - Gson gson = gsonBuilder.create(); - - JSONObject data = new JSONObject(); - data.put("result", gson.toJson(exchange)); - out.print(JsonUtil.loadTrueResult(data)); - } catch (IntegralExchangeException e) { - out.print(JsonUtil.loadFalseResult(1, e.getMsg())); - } - } - - /** - * 鍏戞崲閲戝竵-閭�璇风爜 - * - * @param acceptData - * @param uid - * @param id - * @param out - */ - @RequestMapping(value = "exchangeInviteCode", method = RequestMethod.POST) - public void exchangeInviteCode(AcceptData acceptData, Long uid, Long id, PrintWriter out) { - try { - integralExchangeService.exchangeInviteCode(uid, id); - out.print(JsonUtil.loadTrueResult("閭�璇风爜婵�娲绘垚鍔�")); - } catch (IntegralExchangeException e) { - out.print(JsonUtil.loadFalseResult(1, e.getMsg())); - } - } - - /** - * 閭�璇风爜鍙戝竷鍒楄〃 - * - * @param acceptData - * @param page - * @param out - */ - @RequestMapping(value = "getPublishList", method = RequestMethod.POST) - public void getPublishList(AcceptData acceptData, Integer page, PrintWriter out) { - if (page == null || page < 1) { - out.print(JsonUtil.loadFalseResult(1, "椤电爜涓嶆纭�")); - return; - } - - List<CodePublishRecord> list = codePublishRecordService.listValid((page - 1) * Constant.PAGE_SIZE, - Constant.PAGE_SIZE); - if (list == null) { - list = new ArrayList<CodePublishRecord>(); - } - - long count = codePublishRecordService.countValid(); - - JSONObject data = new JSONObject(); - data.put("count", count); - data.put("list", getGson().toJson(list)); - data.put("helpLink", configService.get("publish_list_help_link")); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 浜嬩欢鎺ㄩ�� - * - * @param acceptData - * @param event - * @param uid - * @param out - */ - @RequestMapping(value = "pushEvent", method = RequestMethod.POST) - public void pushEvent(AcceptData acceptData, String event, Long uid, PrintWriter out) { - if (uid == null || uid == 0) { - out.print(JsonUtil.loadFalseResult("鐢ㄦ埛灏氭湭鐧诲綍")); - return; - } - - if (StringUtil.isNullOrEmpty(event)) { - out.print(JsonUtil.loadFalseResult("浜嬩欢涓虹┖")); - return; - } - - JSONObject data = new JSONObject(); - if ("recommendSearch".equalsIgnoreCase(event) || "scanGoods".equalsIgnoreCase(event) - || "scanTBCart".equalsIgnoreCase(event)) { - JSONObject notify = new JSONObject(); - switch (event) { - - case "recommendSearch": - notify.put("name", "瀹屾垚涓�娆℃櫤鑳芥悳绱�"); - notify.put("score", "+20閲戝竵"); - break; - case "scanGoods": - notify.put("name", "瀹屾垚涓�娆″晢鍝佹祻瑙�"); - notify.put("score", "+100閲戝竵"); - break; - case "scanTBCart": - notify.put("name", "瀹屾垚涓�娆¤喘鐗╄溅娴忚"); - notify.put("score", "+300閲戝竵"); - break; - } - - data.put("notify", notify); - } - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鏃堕棿澶勭悊 - * - * @return - */ - private Gson getGson() { - GsonBuilder gb = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()); - gb.excludeFieldsWithoutExposeAnnotation(); - gb.registerTypeAdapter(Date.class, new JsonSerializer<Date>() { - @Override - public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { - String desc = ""; - if (value != null) { - // 鍒ゆ柇鏄惁鏄悓涓�澶� - - Calendar calendar = Calendar.getInstance(); - calendar.setTime(value); - int y1 = calendar.get(Calendar.YEAR);// 鑾峰彇骞翠唤 - int d1 = calendar.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶� - - Date nowDate = new Date(); - Calendar calendar2 = Calendar.getInstance(); - calendar2.setTime(nowDate); - int y2 = calendar2.get(Calendar.YEAR);// 鑾峰彇骞翠唤 - int d2 = calendar2.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶� - - long old = value.getTime(); - long now = nowDate.getTime(); - if (y1 == y2) { - if (d1 == d2) { - long cha = now - old; - if (cha < 1000 * 60 * 2L) { - desc = "鍒氬垰"; - } else if (cha < 1000 * 60 * 60L) { - desc = (cha / (1000 * 60)) + "鍒嗛挓鍓�"; - } else { - desc = (cha / (1000 * 60 * 60)) + "灏忔椂鍓�"; - } - } else if (d2 - d1 == 1) { - desc = "鏄ㄥぉ"; - } else { - desc = (d2 - d1) + "澶╁墠"; - } - } else { - int timeDistance = 0; - for (int i = y1; i < y2; i++) { - if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { - timeDistance += 366; // 闂板勾 - } else { - timeDistance += 365; // 涓嶆槸闂板勾 - } - } - desc = timeDistance + (d2 - d1) + "澶╁墠"; - } - - return new JsonPrimitive(desc); - } - - return new JsonPrimitive(""); - } - }); - - Gson gson = gb.create(); - return gson; - } - - - /** - * 鏄庣粏璇︽儏 - * - * @param acceptData - * @param uid - * @param index - * List鏈�鏈殑涓婚敭ID - * @param year - * 骞翠唤 - * @param month - * 鏈堜唤 - * @param type 缁熻绫诲瀷 0鍏ㄩ儴 1 - * @param out - */ - @RequestMapping(value = "getDetails") - public void getDetails(AcceptData acceptData, Long uid, Long index, Integer year, Integer month, Integer type, - PrintWriter out) { - if (uid == null || uid == 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - if ((year == null && month != null) || (year != null && month == null)) { - out.print(JsonUtil.loadFalseResult(1, "鏃ユ湡涓嶅畬鏁�")); - return; - } - - Date date = null; - - if (year != null && month != null) { - date = new Date(TimeUtil.convertToTimeTemp(year + "-" + month, "yyyy-M")); - Calendar ca = Calendar.getInstance(); - ca.setTime(date); - ca.add(Calendar.MONTH, 1); - date = new Date(ca.getTimeInMillis() - 1); - } - - // 鏌ヨ鍒楄〃 - List<IntegralDetailVO> list = integralDetailService.listDetailForClient(uid, index, date, type); - // 缁熻鎬绘潯鏁� - long count = integralDetailService.countDetailForClient(uid, index, date, type); - - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - gsonBuilder.registerTypeAdapter(TaoLiJinDetailTypeEnum.class, new TypeAdapter<TaoLiJinDetailTypeEnum>() { - @Override - public TaoLiJinDetailTypeEnum read(JsonReader arg0) throws IOException { - return null; - } - - @Override - public void write(JsonWriter out, TaoLiJinDetailTypeEnum arg1) throws IOException { - out.beginObject(); - out.name("portrait").value(arg1.getPicture()); - out.endObject(); - } - }).registerTypeAdapter(Date.class, new JsonSerializer<Date>() { - @Override - public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { - if (value == null) { - return new JsonPrimitive(""); - } else { - return new JsonPrimitive(TimeUtil.getGernalTime(value.getTime(), "yyyy.MM.dd HH:mm")); - } - } - }); - - Gson gson = gsonBuilder.create(); - - JSONObject data = new JSONObject(); - data.put("count", count); - data.put("data", gson.toJson(list)); - out.print(JsonUtil.loadTrueResult(data)); - } -} +package com.yeshi.fanli.controller.client.v2; + +import java.io.IOException; +import java.io.PrintWriter; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.annotation.Resource; + +import com.yeshi.fanli.util.*; +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.JsonElement; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.google.gson.TypeAdapter; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.yeshi.fanli.entity.accept.AcceptData; +import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum; +import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.bus.user.UserInfoExtra; +import com.yeshi.fanli.entity.bus.user.UserRank; +import com.yeshi.fanli.entity.common.JumpDetailV2; +import com.yeshi.fanli.entity.integral.CodePublishRecord; +import com.yeshi.fanli.entity.integral.IntegralExchange; +import com.yeshi.fanli.entity.integral.IntegralExchange.ExchangeTypeEnum; +import com.yeshi.fanli.entity.integral.IntegralTask; +import com.yeshi.fanli.entity.integral.IntegralTask.TaskUniqueKeyEnum; +import com.yeshi.fanli.entity.integral.IntegralTaskClass.UniqueKeyEnum; +import com.yeshi.fanli.entity.integral.IntegralTaskRecord; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; +import com.yeshi.fanli.exception.integral.IntegralExchangeException; +import com.yeshi.fanli.exception.integral.IntegralTaskRecordException; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; +import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.user.UserInfoExtraService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.integral.CodePublishRecordService; +import com.yeshi.fanli.service.inter.user.integral.IntegralDetailService; +import com.yeshi.fanli.service.inter.user.integral.IntegralExchangeRecordService; +import com.yeshi.fanli.service.inter.user.integral.IntegralExchangeService; +import com.yeshi.fanli.service.inter.user.integral.IntegralGetService; +import com.yeshi.fanli.service.inter.user.integral.IntegralTaskClassService; +import com.yeshi.fanli.service.inter.user.integral.IntegralTaskRankService; +import com.yeshi.fanli.service.inter.user.integral.IntegralTaskRecordService; +import com.yeshi.fanli.service.inter.user.integral.IntegralTaskService; +import com.yeshi.fanli.util.annotation.RequestSerializableByKey; +import com.yeshi.fanli.vo.integral.DailySignVO; +import com.yeshi.fanli.vo.integral.ExchangeTipVO; +import com.yeshi.fanli.vo.integral.IntegralDetailVO; +import com.yeshi.fanli.vo.integral.IntegralTaskClassVO; +import com.yeshi.fanli.vo.user.UserInfoExtraVO; + +import net.sf.json.JSONObject; +import org.yeshi.utils.TimeUtil; + +@Controller +@RequestMapping("api/v2/integral") +public class IntegralControllerV2 { + + @Resource + private ConfigService configService; + + @Resource + private UserInfoService userInfoService; + + @Resource + private UserInfoExtraService userInfoExtraService; + + @Resource + private IntegralTaskClassService integralTaskClassService; + + @Resource + private IntegralTaskRecordService integralTaskRecordService; + + @Resource + private IntegralExchangeService integralExchangeService; + + @Resource + private IntegralExchangeRecordService integralExchangeRecordService; + + @Resource + private IntegralDetailService integralDetailService; + + @Resource + private IntegralTaskRankService integralTaskRankService; + + @Resource + private CodePublishRecordService codePublishRecordService; + + @Resource + private IntegralTaskService integralTaskService; + + @Resource + private IntegralGetService integralGetService; + + @Resource + private JumpDetailV2Service jumpDetailV2Service; + + /** + * 鑾峰彇浠诲姟鍒楄〃 + * + * @param acceptData + * @param uid + * @param page + * @param out + */ + // @RequestSerializableByKey(key="#acceptData.device") + @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(); + + // 鐢ㄦ埛绛惧埌 + Integer signState = 0; + if (page == 1) { + + // 绛惧埌 + try { + signState = integralTaskClassService.finishedDailySign(uid); + } catch (Exception e) { + e.printStackTrace(); + } + + 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; + } + + // 绛惧埌鏃ユ湡淇℃伅 + DailySignVO dailySignVO = integralTaskClassService.getDailySignList(uid, userRank.getId()); + + boolean ejectSign = false; + if (signState == 1) + ejectSign = true; + + data.put("signState", ejectSign); + data.put("goldCoin", extraVO.getGoldCoin()); + data.put("portrait", userInfo.getPortrait()); + data.put("userRank", gson.toJson(userRank)); + data.put("dailySign", dailySignVO); + } + for (int i = 0; i < list.size(); i++) { + IntegralTaskClassVO taskClassVO = list.get(i); + + UniqueKeyEnum uniqueKey = taskClassVO.getUniqueKey(); + + // 閭�璇峰ソ鍙嬶細鏄惁婵�娲婚個璇风爜 + if (uniqueKey == UniqueKeyEnum.inviteTeam) { + UserInfoExtraVO extraVO = userInfoExtraService.getInfoExtraVOByUid(uid); + if (extraVO == null || StringUtil.isNullOrEmpty(extraVO.getInviteCode())) { + JumpDetailV2 jumpDetailV2 = jumpDetailV2Service.getByTypeCache("invite_activate", + Constant.getPlatformCode(acceptData.getPlatform()), + Integer.parseInt(acceptData.getVersion()),acceptData.getSystem()); + taskClassVO.setJumpDetail(jumpDetailV2); + } + } + + String progress = taskClassVO.getProgress(); + if (StringUtil.isNullOrEmpty(progress)) + continue; + + Integer taskNum = taskClassVO.getTaskNum(); + if (taskNum == null) + continue; + + if (uniqueKey == UniqueKeyEnum.dailySign) { + if (signState == 0) { + taskClassVO.setLightUp(true); // 绛惧埌澶辫触 + } else if (signState == 1) { + taskClassVO.setLightUp(false); + } else if (signState == 2) { + taskClassVO.setLightUp(false); + } + + // 鏍规嵁澶╂暟鍙樺寲鏇存敼绛惧埌閲戦 + Integer num = integralTaskRecordService.getNowdaySignNum(uid, taskClassVO.getId()); + + String uniqueKeyTask = UniqueKeyEnum.dailySign.name() + num; + IntegralTask integralTask = integralTaskService.getByCidAndUniqueKey(taskClassVO.getId(), + uniqueKeyTask); + Integer goldCoin = 0; + if (integralTask != null) { + goldCoin = integralTask.getGoldCoin(); + Integer baseDoubleNum = integralTask.getDoubleNum(); + if (baseDoubleNum != null && baseDoubleNum > 0) + goldCoin = goldCoin * baseDoubleNum; + } + taskClassVO.setTotalCoin(goldCoin); + } else { + taskClassVO.setLightUp(true); + } + + int countFinished = 0; + Long id = taskClassVO.getId(); + // 鏌ヨ褰撴棩 + Integer totalGoldCoin = integralTaskRecordService.getTotalGoldCoin(uid, id, 1); + if (totalGoldCoin != null && totalGoldCoin > 0) { + taskClassVO.setFinishedCoin("+" + totalGoldCoin); + if (uniqueKey != UniqueKeyEnum.dailySign && uniqueKey != UniqueKeyEnum.accountMaintain) { + countFinished = integralTaskRecordService.countFinished(uid, id, 1); + } + } + + if (uniqueKey == UniqueKeyEnum.accountMaintain) { + countFinished = integralTaskRecordService.countFinished(uid, id, null); // 鏌ヨ鍘嗗彶 + } + + /* + * // 瀹屽杽淇℃伅瀹屾垚鍚庯紝鍒楄〃涓秷澶� if (uniqueKey == + * UniqueKeyEnum.accountMaintain && taskNum == countFinished) { + * list.remove(i); i --; continue; } + */ + + progress = progress.replace("{宸插畬鎴恾", countFinished + "").replace("{鎬讳换鍔", taskNum + ""); + + if (signState == 0 && uniqueKey == UniqueKeyEnum.dailySign) { + progress = "鏈鍒�"; + taskClassVO.setBtnName("绛惧埌"); + } + taskClassVO.setProgress(progress); + } + + 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; + } + + int count = Integer.MAX_VALUE; + + List<IntegralTaskRecord> list = integralTaskRecordService.listNotReceived(count, 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 + * // 棰嗗彇id + * @param gids + * // 鏈鍙杋d + * @param out + */ + @RequestSerializableByKey(key = "'receiveGoldCoin-'+#uid") + @RequestMapping(value = "receiveGoldCoin", method = RequestMethod.POST) + public void receiveGoldCoin(AcceptData acceptData, Long uid, Integer type, String ids, String gids, + PrintWriter out) { + if (uid == null || uid <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + try { + // 鍏ㄩ儴棰嗗彇 + if (type != null && type == 1) { + Integer goldCoin = integralTaskRecordService.receiveGoldCoinALL(uid); + JSONObject data = new JSONObject(); + data.put("goldCoin", goldCoin); + out.print(JsonUtil.loadTrueResult(data)); + 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; + } + 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())); + } + } + + /** + * 閲戝竵鍏戞崲鍒楄〃 + * + * @param acceptData + * @param uid + * @param ids + * @param out + */ + @RequestMapping(value = "getExchangeList", method = RequestMethod.POST) + public void getExchangeList(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; + } + + UserInfoExtraVO extraVO = userInfoExtraService.getInfoExtraVOByUid(uid); + if (extraVO == null) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鐩稿叧淇℃伅涓嶅瓨鍦�")); + return; + } + + List<IntegralExchange> list = integralExchangeRecordService.listExchange((page - 1) * Constant.PAGE_SIZE, + Constant.PAGE_SIZE, uid); + + List<IntegralExchange> listNew = new ArrayList<>(); + if (list != null) + listNew.addAll(list); + + if (VersionUtil.greaterThan_2_0_7(acceptData.getPlatform(), acceptData.getVersion())) { + for (int i=0; i < listNew.size(); i ++) { + IntegralExchange integralExchange = listNew.get(i); + ExchangeTypeEnum type = integralExchange.getType(); + if (type != null && + (type == ExchangeTypeEnum.inviteCodeActivate || type == ExchangeTypeEnum.inviteCodePublish)) { + listNew.remove(i); + i--; + } + } + } + + // Long count = integralExchangeService.countValid(); + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + Gson gson = gsonBuilder.create(); + + JSONObject data = new JSONObject(); + data.put("goldCoin", extraVO.getGoldCoin() + "鏋�"); + data.put("count", listNew.size()); + data.put("list", gson.toJson(listNew)); + out.print(JsonUtil.loadTrueResult(data)); + } + + @RequestMapping(value = "getExchangeDetail") + public void getExchangeDetail(AcceptData acceptData, Long id, String callback, PrintWriter out) { + if (id == null || id <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鍏戞崲ID鏈夎")); + return; + } + IntegralExchange exchange = integralExchangeService.selectByPrimaryKey(id); + if (exchange != null) { + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + Gson gson = gsonBuilder.create(); + if (StringUtil.isNullOrEmpty(callback)) + out.print(JsonUtil.loadTrueResult(gson.toJson(exchange))); + else + out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(gson.toJson(exchange)))); + } else { + if (StringUtil.isNullOrEmpty(callback)) + out.print(JsonUtil.loadFalseResult("鏈壘鍒�")); + else + out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("鏈壘鍒�"))); + } + } + + /** + * 鍏戞崲閲戝竵妫�楠� + * + * @param acceptData + * @param uid + * @param id + * @param out + */ + @RequestMapping(value = "verifyExchange") + public void verifyExchange(AcceptData acceptData, Long uid, Long id, String callback, PrintWriter out) { + try { + ExchangeTipVO exchange = integralExchangeService.verifyExchange(uid, id); + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + Gson gson = gsonBuilder.create(); + JSONObject data = new JSONObject(); + data.put("result", gson.toJson(exchange)); + if (StringUtil.isNullOrEmpty(callback)) { + out.print(JsonUtil.loadTrueResult(data)); + } else { + out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); + } + } catch (IntegralExchangeException e) { + if (StringUtil.isNullOrEmpty(callback)) { + out.print(JsonUtil.loadFalseResult(1, e.getMsg())); + } else { + out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult(1, e.getMsg()))); + } + } + } + + /** + * 鍏戞崲閲戝竵 + * + * @param acceptData + * @param uid + * @param id + * @param out + */ + @RequestSerializableByKey(key = "'integralexchange-'+#uid") + @RequestMapping(value = "exchange") + public void exchange(AcceptData acceptData, Long uid, Long id, String callback, PrintWriter out) { + try { + IntegralExchange exchange = integralExchangeService.exchange(uid, id); + + UserInfoExtra extraVO = userInfoExtraService.getUserInfoExtra(uid); + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + Gson gson = gsonBuilder.create(); + + JSONObject data = new JSONObject(); + data.put("result", gson.toJson(exchange)); + data.put("goldCoin", extraVO.getGoldCoin() + "鏋�"); + if (StringUtil.isNullOrEmpty(callback)) + out.print(JsonUtil.loadTrueResult(data)); + else + out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); + } catch (IntegralExchangeException e) { + if (StringUtil.isNullOrEmpty(callback)) + out.print(JsonUtil.loadFalseResult(1, e.getMsg())); + else + out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult(1, e.getMsg()))); + } + } + + /** + * 鍏戞崲閲戝竵妫�楠�-閭�璇风爜 + * + * @param acceptData + * @param uid + * @param id + * @param out + */ + @RequestMapping(value = "verifyInviteCode", method = RequestMethod.POST) + public void verifyInviteCode(AcceptData acceptData, Long uid, Long id, PrintWriter out) { + try { + ExchangeTipVO exchange = integralExchangeService.verifyInviteCode(uid, id); + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + Gson gson = gsonBuilder.create(); + + JSONObject data = new JSONObject(); + data.put("result", gson.toJson(exchange)); + out.print(JsonUtil.loadTrueResult(data)); + } catch (IntegralExchangeException e) { + out.print(JsonUtil.loadFalseResult(1, e.getMsg())); + } + } + + /** + * 鍏戞崲閲戝竵-閭�璇风爜 + * + * @param acceptData + * @param uid + * @param id + * @param out + */ + @RequestSerializableByKey(key = "'exchangeInviteCode-'+#uid") + @RequestMapping(value = "exchangeInviteCode", method = RequestMethod.POST) + public void exchangeInviteCode(AcceptData acceptData, Long uid, Long id, PrintWriter out) { + try { + String inviteCode = integralExchangeService.exchangeInviteCode(uid, id); + JSONObject data = new JSONObject(); + data.put("msg", "鍏戞崲鎴愬姛锛岄噾甯佸凡娑堣�� "); + data.put("inviteCode", inviteCode); + out.print(JsonUtil.loadTrueResult(data)); + } catch (IntegralExchangeException e) { + out.print(JsonUtil.loadFalseResult(1, e.getMsg())); + } + } + + /** + * 閭�璇风爜鍙戝竷鍒楄〃 + * + * @param acceptData + * @param page + * @param out + */ + @RequestMapping(value = "getPublishList", method = RequestMethod.POST) + public void getPublishList(AcceptData acceptData, Integer page, PrintWriter out) { + if (page == null || page < 1) { + out.print(JsonUtil.loadFalseResult(1, "椤电爜涓嶆纭�")); + return; + } + + try { + List<CodePublishRecord> list = codePublishRecordService.listValid(null, (page - 1) * Constant.PAGE_SIZE, + Constant.PAGE_SIZE); + if (list == null) { + list = new ArrayList<CodePublishRecord>(); + } + + long count = codePublishRecordService.countValid(); + + JSONObject data = new JSONObject(); + data.put("count", count); + data.put("list", getGson().toJson(list)); + data.put("helpLink", configService.getValue(ConfigKeyEnum.publishListHelpLink.getKey(), SystemInfoUtil.getSystem(acceptData))); + out.print(JsonUtil.loadTrueResult(data)); + } catch (Exception e) { + out.print(JsonUtil.loadFalseResult(1, "鑾峰彇澶辫触")); + return; + } + } + + /** + * 浜嬩欢鎺ㄩ�� + * + * @param acceptData + * @param event + * @param uid + * @param out + */ + @RequestMapping(value = "pushEvent", method = RequestMethod.POST) + public void pushEvent(AcceptData acceptData, String event, Long uid, String data, PrintWriter out) { + if (uid == null || uid == 0) { + out.print(JsonUtil.loadFalseResult("鐢ㄦ埛灏氭湭鐧诲綍")); + return; + } + + if (StringUtil.isNullOrEmpty(event)) { + out.print(JsonUtil.loadFalseResult("浜嬩欢涓虹┖")); + return; + } + IntegralTaskRecord record = null; + + try { + if (TaskUniqueKeyEnum.recommendSearch.name().equalsIgnoreCase(event)) { + record = integralGetService.addRecommendSearch(uid); + } else if (TaskUniqueKeyEnum.shareInvite.name().equalsIgnoreCase(event)) { + record = integralGetService.addShareInvite(uid); + } else if (TaskUniqueKeyEnum.inShop.name().equalsIgnoreCase(event)) { + JSONObject json = JSONObject.fromObject(data); + record = integralGetService.addIntoShop(uid, StringUtil.Md5(json.optString("url"))); + } else if (TaskUniqueKeyEnum.scanPush.name().equalsIgnoreCase(event)) { + record = integralGetService.addScanPushHistory(uid); + } else if (TaskUniqueKeyEnum.scanGoods.name().equalsIgnoreCase(event)) { + JSONObject json = JSONObject.fromObject(data); + record = integralGetService.addScanGoodsDetail(uid, json.optInt("goodsType"), json.optString("goodsId")); + } else if (TaskUniqueKeyEnum.scanHomeBanner.name().equalsIgnoreCase(event)) { + JSONObject json = JSONObject.fromObject(data); + record = integralGetService.addScanRecommendBanner(uid, json.optString("id")); + } else if (TaskUniqueKeyEnum.scanSpecial.name().equalsIgnoreCase(event)) { + JSONObject json = JSONObject.fromObject(data); + record = integralGetService.addScanRecommendSpecial(uid, json.optString("id")); + } else if (TaskUniqueKeyEnum.scanTBCart.name().equalsIgnoreCase(event)) { + record = integralGetService.addScanTaoBaoCart(uid); + } + + if (record != null) { + JSONObject notifyData = new JSONObject(); + if (TaskUniqueKeyEnum.recommendSearch.name().equalsIgnoreCase(event) + || TaskUniqueKeyEnum.scanGoods.name().equalsIgnoreCase(event) + || TaskUniqueKeyEnum.scanTBCart.name().equalsIgnoreCase(event)) { + JSONObject notify = new JSONObject(); + if (TaskUniqueKeyEnum.recommendSearch.name().equalsIgnoreCase(event)) + notify.put("name", "瀹屾垚涓�娆℃櫤鑳芥悳绱�"); + else if (TaskUniqueKeyEnum.scanGoods.name().equalsIgnoreCase(event)) + notify.put("name", "瀹屾垚涓�娆″晢鍝佹祻瑙�"); + else if (TaskUniqueKeyEnum.scanTBCart.name().equalsIgnoreCase(event)) + notify.put("name", "瀹屾垚涓�娆¤喘鐗╄溅娴忚"); + + notify.put("score", String.format("+%s閲戝竵", record.getGoldCoin())); + notifyData.put("notify", notify); + } + out.print(JsonUtil.loadTrueResult(notifyData)); + } else { + out.print(JsonUtil.loadFalseResult("")); + } + } catch (Exception e) { + out.print(JsonUtil.loadFalseResult("")); + } + } + + /** + * 鏃堕棿澶勭悊 + * + * @return + */ + private Gson getGson() { + GsonBuilder gb = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()); + gb.excludeFieldsWithoutExposeAnnotation(); + gb.registerTypeAdapter(Date.class, new JsonSerializer<Date>() { + @Override + public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { + String desc = ""; + if (value != null) { + // 鍒ゆ柇鏄惁鏄悓涓�澶� + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(value); + int y1 = calendar.get(Calendar.YEAR);// 鑾峰彇骞翠唤 + int d1 = calendar.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶� + + Date nowDate = new Date(); + Calendar calendar2 = Calendar.getInstance(); + calendar2.setTime(nowDate); + int y2 = calendar2.get(Calendar.YEAR);// 鑾峰彇骞翠唤 + int d2 = calendar2.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶� + + long old = value.getTime(); + long now = nowDate.getTime(); + if (y1 == y2) { + if (d1 == d2) { + long cha = now - old; + if (cha < 1000 * 60 * 2L) { + desc = "鍒氬垰"; + } else if (cha < 1000 * 60 * 60L) { + desc = (cha / (1000 * 60)) + "鍒嗛挓鍓�"; + } else { + desc = (cha / (1000 * 60 * 60)) + "灏忔椂鍓�"; + } + } else if (d2 - d1 == 1) { + desc = "鏄ㄥぉ"; + } else { + desc = (d2 - d1) + "澶╁墠"; + } + } else { + int timeDistance = 0; + for (int i = y1; i < y2; i++) { + if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { + timeDistance += 366; // 闂板勾 + } else { + timeDistance += 365; // 涓嶆槸闂板勾 + } + } + desc = timeDistance + (d2 - d1) + "澶╁墠"; + } + + return new JsonPrimitive(desc); + } + + return new JsonPrimitive(""); + } + }); + + Gson gson = gb.create(); + return gson; + } + + /** + * 鏄庣粏璇︽儏 + * + * @param acceptData + * @param uid + * @param index + * List鏈�鏈殑涓婚敭ID + * @param year + * 骞翠唤 + * @param month + * 鏈堜唤 + * @param type + * 缁熻绫诲瀷 0鍏ㄩ儴 1 + * @param out + */ + @RequestMapping(value = "getDetails") + public void getDetails(AcceptData acceptData, Long uid, Long index, Integer year, Integer month, Integer type, + PrintWriter out) { + if (uid == null || uid == 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if ((year == null && month != null) || (year != null && month == null)) { + out.print(JsonUtil.loadFalseResult(1, "鏃ユ湡涓嶅畬鏁�")); + return; + } + + Date date = null; + + if (year != null && month != null) { + date = new Date(TimeUtil.convertToTimeTemp(year + "-" + month, "yyyy-M")); + Calendar ca = Calendar.getInstance(); + ca.setTime(date); + ca.add(Calendar.MONTH, 1); + date = new Date(ca.getTimeInMillis() - 1); + } + + // 鏌ヨ鍒楄〃 + List<IntegralDetailVO> list = integralDetailService.listDetailForClient(uid, index, date, type); + // 缁熻鎬绘潯鏁� + long count = integralDetailService.countDetailForClient(uid, index, date, type); + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + gsonBuilder.registerTypeAdapter(TaoLiJinDetailTypeEnum.class, new TypeAdapter<TaoLiJinDetailTypeEnum>() { + @Override + public TaoLiJinDetailTypeEnum read(JsonReader arg0) throws IOException { + return null; + } + + @Override + public void write(JsonWriter out, TaoLiJinDetailTypeEnum arg1) throws IOException { + out.beginObject(); + out.name("portrait").value(arg1.getPicture()); + out.endObject(); + } + }).registerTypeAdapter(Date.class, new JsonSerializer<Date>() { + @Override + public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { + if (value == null) { + return new JsonPrimitive(""); + } else { + return new JsonPrimitive(TimeUtil.getGernalTime(value.getTime(), "yyyy.MM.dd HH:mm")); + } + } + }); + + Gson gson = gsonBuilder.create(); + + JSONObject data = new JSONObject(); + data.put("count", count); + data.put("data", gson.toJson(list)); + out.print(JsonUtil.loadTrueResult(data)); + } +} -- Gitblit v1.8.0