package com.yeshi.fanli.controller.client; import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Type; import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; 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.stream.JsonReader; import com.google.gson.stream.JsonWriter; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.money.UserMoneyDetail; import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum; import com.yeshi.fanli.service.inter.user.UserMoneyDetailService; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.vo.money.UserMoneyDetailHistoryVO; import com.yeshi.fanli.vo.money.UserMoneyStatisticVO; import net.sf.json.JSONObject; /** * 账户系统 * * @author Administrator * */ @Controller @RequestMapping("api/v1/usermoney") public class UserMoneyController { @Resource private UserMoneyDetailService userMoneyDetailService; /** * 新版资金详情(1.4.9) * * @param acceptData * @param uid * @param index * List最末的主键ID * @param year * 年份 * @param month * 月份 * @param out */ @RequestMapping(value = "getUserMoneyDetailList") public void getUserMoneyDetailList(AcceptData acceptData, Long uid, Long index, Integer year, Integer month, 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 list = userMoneyDetailService.listUserMoneyDetailForClient(uid, index, date); long count = userMoneyDetailService.countUserMoneyDetailForClient(uid, index, date); GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); gsonBuilder.registerTypeAdapter(UserMoneyDetailTypeEnum.class, new TypeAdapter() { @Override public UserMoneyDetailTypeEnum read(JsonReader arg0) throws IOException { return null; } @Override public void write(JsonWriter out, UserMoneyDetailTypeEnum arg1) throws IOException { out.beginObject(); out.name("portrait").value(arg1.getPicture()); if (!StringUtil.isNullOrEmpty(arg1.getHelpUrl())) out.name("helpUrl").value(arg1.getHelpUrl()); out.endObject(); } }).registerTypeAdapter(Date.class, new JsonSerializer() { @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")); } } }).registerTypeAdapter(BigDecimal.class, new JsonSerializer() { @Override public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { if (value == null) { return new JsonPrimitive(""); } else { return new JsonPrimitive(MoneyBigDecimalUtil.getWithNoZera(value).toString()); } } }); Gson gson = gsonBuilder.create(); JSONObject data = new JSONObject(); data.put("data", gson.toJson(list)); data.put("count", count); out.print(JsonUtil.loadTrueResult(data)); } @RequestMapping(value = "getUserMoneyStatistic") public void getUserMoneyStatistic(AcceptData acceptData, Long uid, PrintWriter out) { if (uid == null || uid == 0) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); return; } UserMoneyStatisticVO vo = new UserMoneyStatisticVO(); vo.setBalanceMoney(new BigDecimal("0.02")); vo.setLastMonthExtractMoney(new BigDecimal("0.03")); vo.setLastMonthRecievedMoney(new BigDecimal("0.04")); vo.setLatestThreeMonthRecievedMoney(new BigDecimal("0.05")); vo.setMonthExtractMoney(new BigDecimal("0.06")); vo.setMonthRecievedMoney(new BigDecimal("0.07")); vo.setTotalInviteMoney(new BigDecimal("0.08")); vo.setTotalRecievedMoney(new BigDecimal("0.09")); vo.setTotalShareMoney(new BigDecimal("0.10")); Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create(); out.print(JsonUtil.loadTrueResult(gson.toJson(vo))); } }