package com.zhinang.iborrow.action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.zhinang.iborrow.constant.Constant;
import com.zhinang.iborrow.entity.Order;
import com.zhinang.iborrow.entity.PageBean;
import com.zhinang.iborrow.entity.Payment;
import com.zhinang.iborrow.entity.Product;
import com.zhinang.iborrow.entity.User;
import com.zhinang.iborrow.service.PaymentService;
import com.zhinang.iborrow.service.UserService;
import com.zhinang.iborrow.util.AuthUtil;
import com.zhinang.iborrow.util.MD5Util;
import com.zhinang.iborrow.util.PageUtil;
import com.zhinang.iborrow.util.PropertyUtil;
import com.zhinang.iborrow.util.ResponseUtil;
import com.zhinang.iborrow.util.StringUtil;
import com.zhinang.iborrow.util.UserUtil;
import net.sf.json.JSONObject;
import org.apache.http.client.ClientProtocolException;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.springframework.stereotype.Controller;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@Controller
public class UserAction extends ActionSupport implements ModelDriven<User>, ServletRequestAware, ServletResponseAware {
private static final long serialVersionUID = 1L;
private User user = new User();
@Resource
private UserService userService;
@Resource
private PaymentService paymentService;
private HttpServletRequest request;
private HttpServletResponse response;
private String fromUrl;
private String mainPage;
private int depositNum;
private String tradeNum;
private String refereeVipId;
interface ErrType {
int NO_PHONE = 1;
int NOT_VIP = 2;
int DEPOSIT_NOT_ENOUGH = 3;
}
private int userId;
private int newDeposit;
private String keyword;
private List<User> userList = new ArrayList<User>();
private List<Product> favoriteList = new ArrayList<>();
private List<Product> cartList = new ArrayList<>();
private List<Order> borrowedList = new ArrayList<>();
private List<User> recommendeds = new ArrayList<User>();
private int currentPage;
private int totalPage;
private String pageCode;
private String adminPhone;
private String adminPassword;
@Override
public User getModel() {
return user;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public void setPaymentService(PaymentService paymentService) {
this.paymentService = paymentService;
}
public String getFromUrl() {
return fromUrl;
}
public void setFromUrl(String fromUrl) {
this.fromUrl = fromUrl;
}
public String getMainPage() {
return mainPage;
}
public void setMainPage(String mainPage) {
this.mainPage = mainPage;
}
public int getDepositNum() {
return depositNum;
}
public void setDepositNum(int depositNum) {
this.depositNum = depositNum;
}
public String getTradeNum() {
return tradeNum;
}
public void setTradeNum(String tradeNum) {
this.tradeNum = tradeNum;
}
public String getRefereeVipId() {
return refereeVipId;
}
public void setRefereeVipId(String refereeVipId) {
this.refereeVipId = refereeVipId;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public int getNewDeposit() {
return newDeposit;
}
public void setNewDeposit(int newDeposit) {
this.newDeposit = newDeposit;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
public List<Product> getFavoriteList() {
return favoriteList;
}
public void setFavoriteList(List<Product> favoriteList) {
this.favoriteList = favoriteList;
}
public List<Product> getCartList() {
return cartList;
}
public void setCartList(List<Product> cartList) {
this.cartList = cartList;
}
public List<Order> getBorrowedList() {
return borrowedList;
}
public void setBorrowedList(List<Order> borrowedList) {
this.borrowedList = borrowedList;
}
public List<User> getRecommendeds() {
return recommendeds;
}
public void setRecommendeds(List<User> recommendeds) {
this.recommendeds = recommendeds;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public String getPageCode() {
return pageCode;
}
public void setPageCode(String pageCode) {
this.pageCode = pageCode;
}
public String getAdminPhone() {
return adminPhone;
}
public void setAdminPhone(String adminPhone) {
this.adminPhone = adminPhone;
}
public String getAdminPassword() {
return adminPassword;
}
public void setAdminPassword(String adminPassword) {
this.adminPassword = adminPassword;
}
//获取用户信息
@SuppressWarnings("deprecation")
public void requestUserInfo() throws IOException {
String backUrl = Constant.weixin.WX_LOGIN_CALLBACK_URL + "/User_wxCallBack.action";
HttpSession session = request.getSession();
if (session.getAttribute(Constant.key_value.FROM_URL) != null) {
backUrl += "?fromUrl=" + session.getAttribute(Constant.key_value.FROM_URL);
}
String url = "https://open.weixin.qq.com/connect/oauth2/authorize?"
+ "appid=" + Constant.weixin.APPID
+ "&redirect_uri=" + URLEncoder.encode(backUrl)
+ "&response_type=code"
+ "&scope=snsapi_base"
+ "&state=STATE#wechat_redirect";
response.sendRedirect(url);
}
//获取用户全部信息
public void requestFullUserInfo() throws IOException {
String backUrl = Constant.weixin.WX_LOGIN_CALLBACK_URL + "/User_wxFullInfoCallBack.action";
HttpSession session = request.getSession();
if (session.getAttribute(Constant.key_value.FROM_URL) != null) {
backUrl += "?fromUrl=" + session.getAttribute(Constant.key_value.FROM_URL);
}
String url = "https://open.weixin.qq.com/connect/oauth2/authorize?"
+ "appid=" + Constant.weixin.APPID
+ "&redirect_uri=" + URLEncoder.encode(backUrl)
+ "&response_type=code"
+ "&scope=snsapi_userinfo"
+ "&state=STATE#wechat_redirect";
response.sendRedirect(url);
}
//微信登录回调
public String wxCallBack() throws ClientProtocolException, IOException, ServletException {
String code = request.getParameter("code");
if (StringUtil.isNotEmpty(code)) {
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?"
+ "appid=" + Const