package com.yeshi.buwan.controller.admin.api; import com.google.gson.*; import com.yeshi.buwan.domain.user.LoginUser; import com.yeshi.buwan.domain.vip.UserVIPInfo; import com.yeshi.buwan.domain.vip.OrderRecord; import com.yeshi.buwan.service.inter.LoginUserService; import com.yeshi.buwan.service.inter.order.OrderService; import com.yeshi.buwan.service.inter.vip.VIPService; import com.yeshi.buwan.util.Constant; import com.yeshi.buwan.util.StringUtil; import com.yeshi.buwan.util.TimeUtil; import com.yeshi.buwan.vo.vip.UserVIPInfoVO; import com.yeshi.buwan.web.tag.PageEntity; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.yeshi.utils.JsonUtil; import javax.annotation.Resource; import java.io.PrintWriter; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Date; import java.util.List; @Controller @RequestMapping("admin/new/api/vip") public class VipAdminController { @Resource private VIPService vipService; @Resource private OrderService orderService; @Resource private LoginUserService loginUserService; private Gson getGson() { Gson gson = new GsonBuilder().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")); } } }).create(); return gson; } @ResponseBody @RequestMapping(value = "/vipUserList", method = RequestMethod.POST) public void vipUserList(Boolean vip, String uid, int page, PrintWriter out) { Date minDate = null; Date maxDate = null; if (vip != null) { if (vip) { minDate = new Date(System.currentTimeMillis() + 1000 * 60 * 5); } else { minDate = new Date(0L); maxDate = new Date(); } } List list = new ArrayList<>(); long count = 0; if (!StringUtil.isNullOrEmpty(uid)) { UserVIPInfo vipInfo = vipService.getVIPInfo(uid); if (vipInfo != null) { list.add(vipInfo); count = 1; } } else { list = vipService.listVIPUser(minDate, maxDate, page, Constant.pageCount); count = vipService.countVIPUser(minDate, maxDate); } List voList = new ArrayList<>(); for (UserVIPInfo vipInfo : list) { UserVIPInfoVO vo = new UserVIPInfoVO(); vo.setCreateTime(vipInfo.getCreateTime()); vo.setExpireDate(vipInfo.getExpireDate()); vo.setUpdateTime(vipInfo.getUpdateTime()); LoginUser loginUser = loginUserService.getLoginUser(vipInfo.getUid()); vo.setUser(loginUser); voList.add(vo); } JSONObject data = new JSONObject(); data.put("pageEntity", new PageEntity(page, Constant.pageCount, (int) count)); data.put("list", getGson().toJson(voList)); out.print(JsonUtil.loadTrueResult(data)); } @ResponseBody @RequestMapping(value = "/vipOrderList", method = RequestMethod.POST) public void vipOrderList(Boolean pay, String uid, int page, PrintWriter out) { if (StringUtil.isNullOrEmpty(uid)) { uid = null; } Integer state = null; if (pay != null) { if (pay) { state = OrderRecord.STATE_PAY; } else { state = OrderRecord.STATE_NOT_PAY; } } List list = orderService.listOrderRecord(uid,null, state, page, Constant.pageCount); long count = orderService.countOrderRecord(uid,null, state); JSONObject data = new JSONObject(); data.put("pageEntity", new PageEntity(page, Constant.pageCount, (int) count)); data.put("list", getGson().toJson(list)); out.print(JsonUtil.loadTrueResult(data)); } }