com.gamewin.weixin.web.readurl.ReadUrlController.java Source code

Java tutorial

Introduction

Here is the source code for com.gamewin.weixin.web.readurl.ReadUrlController.java

Source

/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.gamewin.weixin.web.readurl;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.gamewin.weixin.entity.HistoryUrl;
import com.gamewin.weixin.entity.ManageQRcode;
import com.gamewin.weixin.service.account.AccountService;
import com.gamewin.weixin.service.task.ManageQRcodeService;
import com.gamewin.weixin.service.task.ManageTaskService;

@Controller
@RequestMapping(value = "/readurl")
public class ReadUrlController {

    @Autowired
    private AccountService accountService;
    @Autowired
    private ManageQRcodeService manageQRcodeService;
    @Autowired
    private ManageTaskService manageTaskService;

    @RequestMapping(value = "redirectUrl", method = { RequestMethod.GET, RequestMethod.POST })
    public String readUrl(HttpServletRequest request, HttpServletResponse response, Model model, String taskid,
            String qrcodeId) {
        String userIp = getIpAddr(request);
        if (!StringUtils.isEmpty(qrcodeId)) {
            HistoryUrl entity = new HistoryUrl();
            ManageQRcode manageQRcode = manageQRcodeService.getManageQRcode(Long.parseLong(qrcodeId));
            if (manageQRcode.getTask().getId().equals(Long.parseLong(taskid))) {
                Integer count = manageQRcodeService.selectHistoryUrlByuserIpAndqrcodeId(userIp,
                        manageQRcode.getId());
                if (count == 0) {
                    if ("Y".equals(manageQRcode.getQrState())) {
                        manageQRcode.setQrSubscribeCount(manageQRcode.getQrSubscribeCount() + 1);
                        manageQRcode.setQrSubscribeAdminCount(manageQRcode.getQrSubscribeAdminCount() + 1);
                        manageQRcodeService.saveManageQRcode(manageQRcode);
                        entity.setStatus("Y");
                    } else {
                        manageQRcode.setQrSubscribeAdminCount(manageQRcode.getQrSubscribeAdminCount() + 1);
                        manageQRcodeService.saveManageQRcode(manageQRcode);
                        entity.setStatus("N");
                    }

                }

                entity.setCreateDate(new Date());
                entity.setQrcodeId(manageQRcode.getId());
                entity.setTaskId(manageQRcode.getTask().getId());
                entity.setUserIp(userIp);
                manageQRcodeService.saveHistoryUrl(entity);

                model.addAttribute("redirectUrl", manageQRcode.getQrUrl());
                return "readUrl/redirectUrl";
            }

        }
        return null;
    }

    //IP?
    public String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }
}