package com.yiji.hamster.web.customer;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import com.yiji.hamster.common.utils.DateUtil;
import com.yiji.hamster.common.utils.MiscUtil;
import com.yiji.hamster.common.utils.WebUtil;
import com.yiji.hamster.integration.customer.service.UserInfoQuery;
import com.yjf.common.lang.util.PageList;
import com.yjf.common.lang.util.Paginator;
import com.yjf.common.lang.util.StringUtil;
import com.yjf.common.service.enums.customer.RegisterFromEnum;
import com.yjf.customer.service.info.UserInfo;
import com.yjf.customer.service.order.UserQueryOrder;
import com.yjf.customer.service.result.UserQueryListResult;
import com.yjf.marmot.log.annotation.BossLogTracker;
@Controller
public class UserInfoQueryController {
@Autowired
UserInfoQuery userInfoQuery;
@BossLogTracker(description = "用户信息查询")
@RequestMapping(value= "/customer/toUserLogin.htm")
public String reUserIdQuery(ModelMap modelMap, HttpServletRequest request,
HttpServletResponse response) throws IOException{
UserQueryOrder order = new UserQueryOrder();
//将request中的参数,传递到order中去.注意(在页面中的name和orer类的属性名字相同,且枚举类型不能传递)
WebUtil.setPoPropertyByRequest(order, request);
//将页面中的枚举类型传递到order中去
if (StringUtil.isNotBlank(request.getParameter("registerFrom")))
{
order.setRegisterFrom(RegisterFromEnum.getByCode(request.getParameter("registerFrom")));
}
//由于时间格式的原因,需要转换一下在传入到order中去
order.setRawAddTimeStart(DateUtil.parseDayBegin(request.getParameter("rawAddTimeStart")));
order.setRawAddTimeEnd(DateUtil.parseDayEnd(request.getParameter("rawAddTimeEnd")));
//设置页面数,分页查询必须的步骤
int pagNum = new Integer(
StringUtil.isNotBlank(request.getParameter("pageNum")) ? request
.getParameter("pageNum") : "1");
order.setCurrPage(pagNum);
order.setPageSize(10);
//调用integration层的函数。在integration中调用外部接口。
UserQueryListResult userListResult = userInfoQuery.findUserInfoByUserId(order);
//通过返回类型的特有类,以及返回结果判断
if(userListResult.isSuccess() && userListResult.getUserInfoList()!=null)
{
long items = userListResult.getRecordCount();//返回类型是long, 开始一直以为是int。
Paginator paginator = new Paginator(10, (int)items);//构造一个分页类,分页查询中必不可少
paginator.setPage(userListResult.getCurrPage());//设置当前页,一直也为时设置页面。看代码不仔细啊
//泛型中的知识,可以修改前面的类型来匹配后面的东西,不用刻意去匹配前面的类型。为了这个加了好多无用的代码。
modelMap.addAttribute("pageList",
new PageList<UserInfo>(userListResult.getUserInfoList(), paginator));
}
//将order变成map类传递回去(日期和注册类型,避免了再一次的书写)。MiscUtil是一个工具类
modelMap.addAllAttributes(MiscUtil.covertPoToMap(order));
modelMap.addAttribute("listRegisterFromEnum", RegisterFromEnum.values());
return "/customer/userInfoQuery.vm";
}
}
}