一个封装好的BaseController
import java.io.File;import java.math.BigDecimal;import java.nio.charset.StandardCharsets;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.concurrent.locks.Lock;i
·
import java.io.File;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.locks.Lock;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.http.client.utils.URLEncodedUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.integration.redis.util.RedisLockRegistry;
import org.springframework.util.StringUtils;
import com.api.bean.DeviceToken;
import com.api.bean.ResponseHandler;
import com.api.bean.UserToken;
import com.api.constant.App;
import com.api.sequence.FileNameSequence;
import com.common.bean.JsonWebToken;
import com.common.bean.NameValuePair;
import com.common.constant.DataStatus;
import com.common.constant.PayChannel;
import com.common.util.DateUtil;
import com.common.util.EncryptUtil;
import com.common.util.FileUtil;
import com.common.util.IPUtil;
import com.common.util.NumberUtil;
import com.common.util.StringUtil;
import com.domain.SequenceOrder;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.service.SequenceOrderService;
public class BaseController {
protected final String TITLE = App.TITLE;
protected final String NOTIFY = App.NOTIFY;
protected final String OK = ResponseHandler.OK;
protected final String SUCCESS = ResponseHandler.SUCCESS;
protected final String ERROR = ResponseHandler.ERROR;
protected final String FAILURE = ResponseHandler.FAILURE;
protected final String FORBIDDEN = ResponseHandler.FORBIDDEN;
protected final int TAGS_LIST_MAX = 3;
protected final int TAGS_VIEW_MAX = 5;
protected final String DATE_FORMAT = "yyyy-MM-dd";
protected final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
protected final long LOCK_MAX_WAITTIME = 1L;
protected final String EMPTY_MESSAGE = App.EMPTY_MESSAGE;
protected final String EMPTY = "";
Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
HttpServletRequest httpServletRequest;
@Autowired
HttpServletResponse httpServletResponse;
@Autowired
HttpSession session;
@Autowired
private SequenceOrderService sequenceOrderService;
// @InitBinder
// protected void initBinder(WebDataBinder binder) {
// binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
// }
String getClientIP(){
return IPUtil.getClientIP(httpServletRequest);
}
/**
* 获取订单号
* @return
*/
String getOrderCode(PayChannel payChannel){
// return this.append(this.getDateTime(),App.ID,payChannel.getCode(),Integer.toString(CommonSequence.nextValue()));
Date datetime = this.getServerTime();
SequenceOrder sequenceOrder = new SequenceOrder();
sequenceOrder.setStatus(DataStatus.Y.getCode());
sequenceOrder.setModifyTime(datetime);
sequenceOrder.setCreateTime(datetime);;
this.sequenceOrderService.create(sequenceOrder);
return String.valueOf(sequenceOrder.getId());
}
DeviceToken getDeviceToken(){
DeviceToken deviceToken = null;
try{
String token = httpServletRequest.getHeader(App.HTTP_HEADER_APP_TOKEN);
if(!this.isEmpty(token)){
deviceToken = new DeviceToken();
JsonWebToken jsonWebToken = EncryptUtil.parseJwt(token);
deviceToken.setId(Integer.parseInt(jsonWebToken.getSubject()));
deviceToken.setCompanyId(Integer.parseInt(jsonWebToken.getIssuer()));
}else{
logger.info("{} not found",App.HTTP_HEADER_APP_TOKEN);
// throw new RuntimeException(this.append(App.HTTP_HEADER_APP_TOKEN," not found"));
}
}catch (Exception e) {
throw new RuntimeException(e);
}
return deviceToken;
}
String redirect(String url){
return new StringBuilder("redirect:").append(url).toString();
}
String redirect(String url, NameValuePair... pairs){
return new StringBuilder("redirect:").append(StringUtil.getRequestParameters(url, pairs)).toString();
}
String forward(String url){
return url;
}
String forward(String url,NameValuePair... pairs){
return StringUtil.getRequestParameters(url, pairs);
}
Boolean isEmpty(String str){
if(str != null){
str = str.trim();
if(!"".equals(str) && !"null".equalsIgnoreCase(str) && !"undefined".equalsIgnoreCase(str)){
return false;
}
}
return true;
}
Boolean isEmpty(Object obj){
if(obj != null){
if(!"".equals(obj) && !"null".equals(obj) && !"undefined".equals(obj)){
return false;
}
}
return true;
}
String getEmpty(String str){
if(this.isEmpty(str)){
return EMPTY;
}else{
return str;
}
}
String getDateTime(){
return DateUtil.getServerTime("yyyyMMddHHmmss");
}
String getDateTime(Date date,String format){
return DateUtil.format(date, format);
}
Date getServerTime(){
return DateUtil.getServerTime();
}
String getServerYear(){
return DateUtil.getServerTime("yyyy");
}
String getJSON(Object obj){
ObjectMapper objectMapper = new ObjectMapper();
try{
return objectMapper.writeValueAsString(obj);
}catch (Exception e) {
throw new RuntimeException(e);
}
}
Object getObject(String str,Class<?> clazz){
ObjectMapper objectMapper = new ObjectMapper();
try{
return objectMapper.readValue(str, clazz);
}catch (Exception e) {
throw new RuntimeException(e);
}
}
String[] getImageArray(String str){
if(!this.isEmpty(str)){
String[] array = str.split(App.COMMA);
if(array != null){
int length = array.length;
String[] images = new String[length];
for(int i = 0; i < length; i++){
//文件扩展名
String fileName = null;
String fileExtension = null;
if(array[i] != null){
int pos = array[i].lastIndexOf(".");
fileName = array[i].substring(0,pos);
fileExtension = array[i].substring(pos);
}
// images[i] = this.append(EncryptUtil.encodeWithAES(fileName),fileExtension);
images[i] = this.append(fileName,fileExtension);
}
return images;
}
}
return new String[0];
}
String format(String str){
return NumberUtil.format(str, "0.00");
}
String getImage(String str){
if(!this.isEmpty(str)){
return this.append(App.FILESYSTEM_URL,"/v1/file/image?url=",str);
}
return null;
}
String decodeFileUrl(String str){
if(!this.isEmpty(str)){
// return EncryptUtil.decodeWithAES(str);
return str;
}
return null;
}
String append(String... strs){
StringBuilder builder = new StringBuilder();
if(strs != null){
for(String str : strs){
if(!this.isEmpty(str)){
builder.append(str);
}
}
}
return builder.toString();
}
String getFormatDate(Date date){
return DateUtil.format(date, "yyyy-MM-dd");
}
String[] getNoEmptyStrArray(String[] strs){
List<String> list = new ArrayList<String>();
if(strs != null){
for(String str : strs){
if(!this.isEmpty(str)){
list.add(str);
}
}
}
return list.toArray(new String[list.size()]);
}
BigDecimal getBigDecimal(String str){
if(isEmpty(str)){
return null;
}
return new BigDecimal(str);
}
Integer getInteger(String str){
if(isEmpty(str)){
return null;
}
return Integer.valueOf(str);
}
String getString(BigDecimal bigDecimal){
if(bigDecimal != null){
return bigDecimal.toString();
}
return null;
}
String getString(Long l){
if(l != null){
return l.toString();
}
return null;
}
String getString(Integer integer){
if(integer != null){
return integer.toString();
}
return null;
}
Date getDatetime(String datetime){
return this.getDatetime(datetime, "yyyyMMddHHmmss");
}
Date getDatetime(String datetime,String format){
if( datetime != null){
return DateUtil.parse(datetime, format);
}
return null;
}
String getString(String[] strs){
if(strs != null){
return StringUtils.arrayToDelimitedString(strs, App.COMMA);
}
return null;
}
Lock getLock(RedisTemplate<String, String> redisTemplate,String lockKeyPrefix, Object lockKey){
return new RedisLockRegistry(redisTemplate.getConnectionFactory(), lockKeyPrefix).obtain(lockKey);
}
/**
* 24小时内显示今天
* @param date
* @return
*/
String getDatetimeDisplay(Date date){
Date datetime = getServerTime();
if(DateUtil.getFutureDay(date, 1).after(datetime)){
return "今天";
}else if(DateUtil.getFutureDay(date, 2).after(datetime)){
return "一天前";
}else if(DateUtil.getFutureDay(date, 3).after(datetime)){
return "二天前";
}else if(DateUtil.getFutureDay(date, 4).after(datetime)){
return "三天前";
}else if(DateUtil.getFutureDay(date, 5).after(datetime)){
return "四天前";
}else if(DateUtil.getFutureDay(date, 6).after(datetime)){
return "五天前";
}else if(DateUtil.getFutureDay(date, 7).after(datetime)){
return getDateTime(date, DATE_FORMAT);
}else{
return getDateTime(date, DATE_FORMAT);
}
}
String getView(String value){
if(this.isEmpty(value)){
return EMPTY_MESSAGE;
}else{
return value;
}
}
String getMobile(String str){
return str.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
}
UserToken getUserToken(){
UserToken userToken = null;
try{
String token = httpServletRequest.getHeader(App.HTTP_HEADER_APP_TOKEN);
if(!this.isEmpty(token)){
userToken = new UserToken();
JsonWebToken jsonWebToken = EncryptUtil.parseJwt(token);
userToken.setId(jsonWebToken.getUserId());
userToken.setUsername(jsonWebToken.getUsername());
}else{
logger.info("{} not found",App.HTTP_HEADER_APP_TOKEN);
// throw new RuntimeException(this.append(App.HTTP_HEADER_APP_TOKEN," not found"));
}
}catch (Exception e) {
throw new RuntimeException(e);
}
return userToken;
}
String getName(String fileName){
fileName = fileName.replace("\\", "/");
int index = fileName.lastIndexOf("/");
if(index == -1){
return fileName;
}
return fileName.substring(index + 1);
}
String getExtension(String fileName){
fileName = this.getName(fileName);
int index = fileName.lastIndexOf(App.DOT);
if(index == -1){
return "";
}
return fileName.substring(index);
}
File getDestFile(String fileName){
String datetime = DateUtil.getServerTime("yyyyMMddHHmmss");
String dir = new StringBuilder(App.FILE_LOCATION)
.append("/").append(datetime.substring(0,4))
.append("/").append(datetime.substring(4,6))
.append("/").append(datetime.substring(6,8))
.append("/").append(datetime.substring(8,10))
.append("/").append(datetime.substring(10,12)).toString();
FileUtil.make(dir);
File file = new File(dir,new StringBuilder()
.append(datetime.substring(12,14))
.append(App.ID)
.append(FileNameSequence.nextValue())
.append(this.getExtension(fileName)).toString());
return file;
}
String getFileSystemUrl(String url) {
return App.FILESYSTEM_URL + "/v1/file/download?url=" + url;
}
/**
* 获取推广凭证
* @param url
* @return
*/
String getAdToken(String url) {
String query = url.substring(url.indexOf("?") + 1);
List<org.apache.http.NameValuePair> nameValuePairs = URLEncodedUtils.parse(query,StandardCharsets.UTF_8);
for (org.apache.http.NameValuePair nameValuePair : nameValuePairs) {
if ("token".equalsIgnoreCase(nameValuePair.getName())) {
return nameValuePair.getValue();
}
}
return null;
}
String getAdClient(String url) {
String query = url.substring(url.indexOf("?") + 1);
List<org.apache.http.NameValuePair> nameValuePairs = URLEncodedUtils.parse(query,StandardCharsets.UTF_8);
for (org.apache.http.NameValuePair nameValuePair : nameValuePairs) {
if ("client".equalsIgnoreCase(nameValuePair.getName())) {
return nameValuePair.getValue();
}
}
return null;
}
}
更多推荐


所有评论(0)