Commit 4ad70773 authored by yangshuxing's avatar yangshuxing

Initial commit

parents
Pipeline #148 failed with stages
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.neusoft.www</groupId>
<artifactId>common</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>common Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<!--编译工程的编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--spring 版本号-->
<spring.version>4.2.8.RELEASE</spring.version>
<!--junit 版本号-->
<junit.version>4.12</junit.version>
<!-- mybatis版本号 -->
<mybatis.version>3.3.0</mybatis.version>
<!--mybatis-spring版本号-->
<mybatis-spring.version>1.3.0</mybatis-spring.version>
<!--log4j日志管理-->
<log4j.version>1.7.21</log4j.version>
<!--mysql版本号-->
<mysql.version>5.1.39</mysql.version>
<!--数据库连接池-->
<commons-dbcp.version>1.4</commons-dbcp.version>
<!--json转换的版本-->
<jackson.version>2.8.4</jackson.version>
<!-- servlet版本 -->
<servlet.version>2.4</servlet.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.3</version>
<classifier>jdk13</classifier>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>${commons-dbcp.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>8.5.8</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.3</version>
<classifier>jdk13</classifier>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.9</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>test</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>QATest</id>
<properties>
<env>QATest</env>
</properties>
</profile>
<profile>
<id>pre-product</id>
<properties>
<env>pre-product</env>
</properties>
</profile>
<profile>
<id>product</id>
<properties>
<env>product</env>
</properties>
</profile>
</profiles>
<build>
<finalName>common</finalName>
<filters>
<filter>src/main/filters/${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/spring</directory>
<filtering>true</filtering>
<targetPath>spring</targetPath>
</resource>
<resource>
<directory>src/main/resources/config</directory>
<filtering>true</filtering>
<targetPath>config</targetPath>
</resource>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>database/**</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<packagingExcludes>WEB-INF/web.xml</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
###############mysql###############
mysql.host=10.22.20.3
mysql.port=3306
mysql.db=geeRunner
mysql.username=root
mysql.password=neusoft
###############nginx###############
nginx.race.runner.server.path=http://10.22.20.3:9099/files/race/runner/
nginx.race.runner.path=/home/nginx/nginx_data/race/runner/
###############rmi###############
rmi.upload.server.host=10.22.20.3
rmi.upload.server.port=9125
rmi.upload.server.servicename=RMIUpload
###############url###############
enroll.queryByOpenId.url=http://enroll.geexek.com/registerInfo/queryByOpenId.do
project.domain=http://common.geexek.com/common
server.domain=http://timerbackend.geexek.com
###############mysql###############
mysql.host=10.25.255.146
mysql.port=36936
mysql.db=geeRunner
mysql.username=geexek
mysql.password=xALQsrjKZaeP
###############nginx###############
nginx.race.runner.server.path=http://img.geexek.com/files/race/runner/
nginx.race.runner.path=/home/nginx/nginx_data/race/runner/
###############rmi###############
rmi.upload.server.host=10.25.255.181
rmi.upload.server.port=9125
rmi.upload.server.servicename=RMIUpload
###############common###############
enroll.queryByOpenId.url=http://enroll.geexek.com/registerInfo/queryByOpenId.do
\ No newline at end of file
###############mysql###############
mysql.host=10.25.255.146
mysql.port=36936
mysql.db=geeRunner
mysql.username=geexek
mysql.password=xALQsrjKZaeP
###############nginx###############
nginx.race.runner.server.path=http://img.geexek.com/files/race/runner/
nginx.race.runner.path=/home/nginx/nginx_data/race/runner/
###############rmi###############
rmi.upload.server.host=10.25.255.181
rmi.upload.server.port=9125
rmi.upload.server.servicename=RMIUpload
###############common###############
enroll.queryByOpenId.url=http://enroll.geexek.com/registerInfo/queryByOpenId.do
\ No newline at end of file
###############url###############
enroll.queryByOpenId.url=http://192.168.66.102:9703/registerInfo/queryByOpenId.do
project.domain=http://test.geexek.cn/common
#project.domain=http://127.0.0.1:8080/common
server.domain=http://testtimerbackend.geexek.cn
###############mysql###############
#mysql.host=127.0.0.1
#mysql.port=3306
#mysql.db=mylocal_geerunner
mysql.host=192.168.66.106
mysql.port=3306
mysql.db=geeRunner_test
mysql.username=geexek
mysql.password=neusoft
###############nginx###############
nginx.race.runner.server.path=http://testimg.geexek.cn/files/race/runner/
nginx.race.runner.path=/home/nginx/nginx_data/race/runner/
###############rmi###############
rmi.upload.server.host=192.168.66.102
rmi.upload.server.port=9125
rmi.upload.server.servicename=RMIUpload
###############common###############
\ No newline at end of file
package com.neusoft.calendar.bean;
/**
* 2016-12-22
* @author chewubang
*
*/
public class CmptCale {
private int caleId;
private String cmptName;
private String startTime;//赛事日期
private int cmptType;//赛事类型(0:马拉松,1:越野,2:铁人三项,9:其他)
private String cmptCountry;
private String cmptCity;
private String cmptItem;//赛事项目
private String closeTime;//关门时间
private String cmptDetail;
private String cmptEnrollUrl;
private String cmptImgUrl;
private int cmptId;
private int cmptEnrollId;//赛事报名平台ID
//private int delFlg;//删除标记 1:删除
private String cmptFrom;//赛事来源(0:顺延,1:赛客报名,2:iranshao,3:zuicool,9:不明)
/**赛事来源 1:赛客报名*/
public static final String CMPTFROM_1 = "1";
private String cmptScoreUrl;//赛事成绩URL
private String conCernFlg;//关注标记 1: 关注 0:未关注
private String enrollSt;
private String enrollEnd;
private String cmptLookUrl;
private String create_time;
private String update_time;
private String cmptAddr; // 地级市
public String getCmptAddr() {
return cmptAddr;
}
public void setCmptAddr(String cmptAddr) {
this.cmptAddr = cmptAddr;
}
public String getCreate_time() {
return create_time;
}
public void setCreate_time(String create_time) {
this.create_time = create_time;
}
public String getUpdate_time() {
return update_time;
}
public void setUpdate_time(String update_time) {
this.update_time = update_time;
}
public String getEnrollSt() {
return enrollSt;
}
public void setEnrollSt(String enrollSt) {
this.enrollSt = enrollSt;
}
public String getEnrollEnd() {
return enrollEnd;
}
public void setEnrollEnd(String enrollEnd) {
this.enrollEnd = enrollEnd;
}
public String getCmptLookUrl() {
return cmptLookUrl;
}
public void setCmptLookUrl(String cmptLookUrl) {
this.cmptLookUrl = cmptLookUrl;
}
public int getCaleId() {
return caleId;
}
public void setCaleId(int caleId) {
this.caleId = caleId;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getCmptName() {
return cmptName;
}
public void setCmptName(String cmptName) {
this.cmptName = cmptName;
}
public int getCmptType() {
return cmptType;
}
public void setCmptType(int cmptType) {
this.cmptType = cmptType;
}
public String getCmptCountry() {
return cmptCountry;
}
public void setCmptCountry(String cmptCountry) {
this.cmptCountry = cmptCountry;
}
public String getCmptCity() {
return cmptCity;
}
public void setCmptCity(String cmptCity) {
this.cmptCity = cmptCity;
}
public String getCmptItem() {
return cmptItem;
}
public void setCmptItem(String cmptItem) {
this.cmptItem = cmptItem;
}
public String getCloseTime() {
return closeTime;
}
public void setCloseTime(String closeTime) {
this.closeTime = closeTime;
}
public String getCmptDetail() {
return cmptDetail;
}
public void setCmptDetail(String cmptDetail) {
this.cmptDetail = cmptDetail;
}
public String getCmptEnrollUrl() {
return cmptEnrollUrl;
}
public void setCmptEnrollUrl(String enrollUrl) {
this.cmptEnrollUrl = enrollUrl;
}
public String getCmptImgUrl() {
return cmptImgUrl;
}
public void setCmptImgUrl(String cmptImgUrl) {
this.cmptImgUrl = cmptImgUrl;
}
public int getCmptId() {
return cmptId;
}
public void setCmptId(int cmptId) {
this.cmptId = cmptId;
}
public int getCmptEnrollId() {
return cmptEnrollId;
}
public void setCmptEnrollId(int cmptEnrollId) {
this.cmptEnrollId = cmptEnrollId;
}
public String getConCernFlg() {
return conCernFlg;
}
public void setConCernFlg(String conCernFlg) {
this.conCernFlg = conCernFlg;
}
public String getCmptFrom() {
return cmptFrom;
}
public void setCmptFrom(String cmptFrom) {
this.cmptFrom = cmptFrom;
}
public String getCmptScoreUrl() {
return cmptScoreUrl;
}
public void setCmptScoreUrl(String cmptScoreUrl) {
this.cmptScoreUrl = cmptScoreUrl;
}
@Override
public String toString() {
return "CmptCale [caleId=" + caleId + ", startTime=" + startTime
+ ", cmptName=" + cmptName + ", cmptType=" + cmptType
+ ", cmptCountry=" + cmptCountry + ", cmptCity=" + cmptCity
+ ", cmptItem=" + cmptItem + ", closeTime=" + closeTime
+ ", cmptDeatail=" + cmptDetail + ", cmptEnrollUrl="
+ cmptEnrollUrl + ", cmptImgUrl=" + cmptImgUrl + ", cmptId="
+ cmptId + ", cmptEnrollId=" + cmptEnrollId + ", delFlag="
+ ", cmptForm=" + cmptFrom + ", conCernFlg="
+ conCernFlg
+ ", enrollSt=" + enrollSt
+ ", enrollEnd=" + enrollEnd
+ ", cmptLookUrl=" + cmptLookUrl
+ "]";
}
}
package com.neusoft.calendar.bean;
/**
* 系统消息表
*/
public class CmptCaleMsg extends CmptCale{
/**状态 0:未读*/
public static final String READ_STATUS_0 = "0";
/**状态 1:已读*/
public static final String READ_STATUS_1 = "1";
/**状态 -1:全部*/
public static final String READ_STATUS_ALL = "-1";
/**系统消息类型 0:新增*/
public static final String MSG_TYPE_0 = "0";
/**系统消息类型 1:改时间或报名通道*/
public static final String MSG_TYPE_1 = "1";
/**系统消息类型 -1:全部*/
public static final String MSG_TYPE_ALL = "-1";
private int msg_id;
private int caleid;
private String msg_content;
private String msg_type;
private long rid;
private String openId;
private String read_status;
public int getMsg_id() {
return msg_id;
}
public void setMsg_id(int msg_id) {
this.msg_id = msg_id;
}
public int getCaleid() {
return caleid;
}
public void setCaleid(int caleid) {
this.caleid = caleid;
}
public String getMsg_content() {
return msg_content;
}
public void setMsg_content(String msg_content) {
this.msg_content = msg_content;
}
public String getMsg_type() {
return msg_type;
}
public void setMsg_type(String msg_type) {
this.msg_type = msg_type;
}
public long getRid() {
return rid;
}
public void setRid(long rid) {
this.rid = rid;
}
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
public String getRead_status() {
return read_status;
}
public void setRead_status(String read_status) {
this.read_status = read_status;
}
}
package com.neusoft.calendar.bean;
/**
*2016-12-22
* @author chewubang
*
*/
public class CmptConcern {
private String openId;
private int cmptCaleId;
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
public int getCmptCaleId() {
return cmptCaleId;
}
public void setCmptCaleId(int cmptCaleId) {
this.cmptCaleId = cmptCaleId;
}
}
/**
* Copyright (c) 2015 by Neusoft Geexek
* All rights reserved.
*/
package com.neusoft.calendar.controller;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
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.springframework.web.client.RestTemplate;
import com.neusoft.utils.CommonUtils;
import com.neusoft.utils.HttpUtils;
import com.neusoft.utils.support.anontation.SecurityNonCheckRequired;
/**
* @author shuxing.yang
*
* @date 2016-7-11
*
* @description
*/
@Controller
@RequestMapping("/wxapi")
public class AuthorizeController {
private static final String USERINFO_URL = "https://api.weixin.qq.com/cgi-bin/user/info";
private static final String ACCESSTOKE_URL = "https://api.weixin.qq.com/sns/oauth2/access_token";
private static final String WEIXIN_WXGEEXEK_URL_SIGNATURE = "http://wxgeexek.geexek.com/weixinAPI/getSignature";
private static final String SUBSCRIBED = "1";
private Log log = LogFactory.getLog(AuthorizeController.class);
@Value("${geexek.appid}")
private String APPID;
@Value("${geexek.secret}")
private String SECRET;
@Autowired
private RestTemplate template;
@Value("${accesstoken.url}")
private String accesstokenUrl;
@Value("${enroll.url}")
private String enrollUrl;
@Value("${project.domain}")
private String domain;
@RequestMapping("/authorize")
@SecurityNonCheckRequired
public void getOpenId(HttpServletRequest request,HttpServletResponse response) throws IOException{
String path = request.getParameter("p") == null ? "-1" : request.getParameter("p").replaceAll("\\*", "&");
String code = request.getParameter("code") == null ? "-1" : request.getParameter("code");
System.out.println("path:"+path);
System.out.println("code:"+code);
String URL = ACCESSTOKE_URL + "?grant_type=authorization_code&appid="+APPID+"&secret="+SECRET+"&code="+code;
ResponseEntity<String> result = template.getForEntity(URL, String.class);
JSONObject jsonObject = JSONObject.fromObject(result.getBody());
System.out.println(jsonObject.toString());
if(jsonObject.has("openid")){
String openId = jsonObject.getString("openid");
result = template.getForEntity(accesstokenUrl, String.class);
jsonObject = JSONObject.fromObject(result.getBody());
result = template.getForEntity(USERINFO_URL+"?access_token="+jsonObject.getString("access_token")+"&openid="+ openId +"&lang=zh_CN", String.class);
JSONObject userJSON = JSONObject.fromObject(result.getBody());
System.out.println(userJSON.toString());
request.getSession().setAttribute("openId", openId);
if(userJSON.has("subscribe")){//是否是订阅的
if(SUBSCRIBED.equals(userJSON.getString("subscribe"))){
// String nickName = userJSON.get("nickname").toString();
// String nickName2 = new String(nickName.getBytes("ISO-8859-1"), "UTF-8");//springMVC的RestTemplate默认编码为ISO-8859-1
// log.info("nickName/nickName2: "+nickName+"/"+nickName2);
// String saveOrUpdateUrl = enrollUrl+"/saveOrUpdateByOpenId.do?openId="+ openId + "&name="+ nickName2 +"&headImgUrl="+ userJSON.get("headimgurl");
// log.info("saveOrUpdateUrl: "+saveOrUpdateUrl);
// template.getForEntity(saveOrUpdateUrl, String.class);
//返回页面
if (!path.contains("openId=")){
//未已包含openId,则加上openId
path = CommonUtils.addParameter(path, "openId", openId);
}
log.info("path: "+path);
response.sendRedirect(path);
}else{//再跳转
log.info("-----------------subscribe1-----------------false");
// response.sendRedirect(domain+"/wxsub.jsp");
// response.sendRedirect(domain+"/raceCale?openId="+openId);
String newUrl = domain+"/raceCale?";
String query = ""; // 参数再设定
String start = CommonUtils.getParameterValue(path, "start");
if (start!=null && !"".equals(start)) query += "&start="+start;
else query += "&start="+CommonUtils.getFormatNowDate("yyyyMM"); // 默认当月
query += "&openId="+openId;
String fpId = CommonUtils.getParameterValue(path, "fpId");
if (fpId!=null && !"".equals(fpId)) query += "&fpId="+fpId;
if (query!=null && query.startsWith("&")) query = query.substring(1);
log.info("--------------------subscribe1-newUrl--------------------"+ newUrl+query);
response.sendRedirect(newUrl+query);
}
} else {
log.info("-----------------subscribe2-----------------false");
}
}else if(jsonObject.has("errcode") && jsonObject.getInt("errcode") == 40001){
System.out.println("token失效");
}
}
@RequestMapping(value = "/getSignature", method = RequestMethod.POST)
@SecurityNonCheckRequired
@ResponseBody
public String getSignature(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String,String> paramMap =new HashMap<String,String>();
String localhref=request.getParameter("localhref");
paramMap.put("localhref", localhref);
String resultString = HttpUtils.doPost(WEIXIN_WXGEEXEK_URL_SIGNATURE, paramMap);
log.info("--------------------resultString--------------------"+resultString);
return resultString;
}
}
/**
* Copyright (c) 2015 by Neusoft Geexek
* All rights reserved.
*/
package com.neusoft.calendar.controller;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
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.springframework.web.servlet.ModelAndView;
import com.neusoft.utils.Consts;
import com.neusoft.utils.ResponseJSON;
import com.neusoft.utils.support.anontation.SecurityNonCheckRequired;
/**
* @description 登录Controller
*/
@Controller
public class LoginController {
@Value("${project.domain}")
private String domain;
/**
* 进入登录界面
* @return
*/
@RequestMapping(value = "/login", method = RequestMethod.GET)
@SecurityNonCheckRequired
public ModelAndView login(HttpServletRequest request ,HttpServletResponse response) throws Exception {
try {
request.getRequestDispatcher("/sys/login.html").forward(request,response);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 验证用户密码
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/usr/login.do")
public ModelAndView getTest(HttpServletRequest request ,HttpServletResponse response) throws Exception{
JSONObject object = new JSONObject();
String uid = request.getParameter("uid");
String upd = request.getParameter("upd");
if (StringUtils.isBlank(uid) || StringUtils.isBlank(upd)) {
object.put("status", 1);
object.put("message", "empty!");
ResponseJSON.writeJSsonAndSetUTF8(response, object);
return null;
}
if (!"18121278668".equals(uid) || !"86687212181".equals(upd)) {
object.put("status", 1);
object.put("message", "user or pwd error!");
ResponseJSON.writeJSsonAndSetUTF8(response, object);
return null;
}
Map<String, Object> result = new HashMap<String, Object>();
try {
result.put("uid", uid);
result.put("upd", upd);
request.getSession().setAttribute(Consts.LOGINUSER, result);
object.put("status", 0);
} catch (Exception e) {
object.put("status", 1);
object.put("message", e.getMessage());
}
ResponseJSON.writeJSsonAndSetUTF8(response, object);
return null;
}
/**
* 跳转至赛事一览
* @param request
* @param response
* @return
*/
@RequestMapping(value="/usr/calelist",method=RequestMethod.GET)
@ResponseBody
public Object getBest(HttpServletRequest request ,HttpServletResponse response){
try {
request.getRequestDispatcher("/WEB-INF/sys/mergeCmptCale.jsp").forward(request,response);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package com.neusoft.calendar.controller;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
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.springframework.web.servlet.ModelAndView;
import com.neusoft.calendar.service.TestService;
import com.neusoft.utils.ResponseJSON;
@Controller
@RequestMapping("/test")
public class TestController {
private static final Logger log = Logger.getLogger(TestController.class);
@Autowired
private TestService testService;
/**
* 测试
* @return
*/
@RequestMapping("/getTest.do")
public ModelAndView getTest(HttpServletRequest request ,HttpServletResponse response) throws Exception{
JSONObject object = new JSONObject();
Map<String, Object> result = new HashMap<String, Object>();
try {
object.put("ttt", testService.getTest());
object.put("status", 0);
} catch (Exception e) {
log.error(e.getMessage(), e);
result.put("status", 1);
result.put("message", e.getMessage());
}
ResponseJSON.writeJSsonAndSetUTF8(response, object);
return null;
}
/**
* 根据cmptId,enrollId获取isvodok的点播列表
*
* @return
*/
@RequestMapping(value = "/getTest2", method = RequestMethod.GET)
@ResponseBody
public Object getTest2() {
Map<String, Object> result = new HashMap<String, Object>();
try {
result.put("ttt", testService.getTest());
result.put("status", 0);
} catch (Exception e) {
log.error(e.getMessage(), e);
result.put("status", 1);
result.put("message", e.getMessage());
}
return result;
}
}
package com.neusoft.calendar.dao;
import java.util.List;
import com.neusoft.calendar.bean.CmptCale;
import com.neusoft.calendar.bean.CmptCaleMsg;
/**
* 2016-12-22
* @author chewubang
*
*/
public interface ICalendarDao {
/**
* 获取当月赛事信息
* @param startTime
* @param openId
* @param keyWord
* @param type
* @param country
* @param city
* @return
*/
public List<CmptCale> getCmpts(String startTime,String openId,String keyword,int type,String country,String city);
/**
* 获取个人关注赛事列表
* @param startTime
* @param endDay
* @param openId
* @param count
* @return
*/
public List<CmptCale> getConcern(String startTime,int endDays,String openId,int count);
/**
* 添加关注赛事数据
* @param openId
* @param caleId
* @return
*/
public int addConcern(String openId,int caleId);
/**
* 删除关注赛事数据
* @param openId
* @param caleId
* @return
*/
public int delConcern(String openId,int caleId);
/**
* 获取赛事日历ID
* @param cmptEnrollId
* @return
*/
public int getCaleId(int cmptEnrollId);
/**
* 添加赛事信息
* @param cc
* @return
*/
int addCmptCale(CmptCale cc);
/**
* 修改赛事信息
* @param cc
* @return
*/
int updateCmptCale(CmptCale cc);
/**
* 删除赛事信息
* @param cc
* @return
*/
int deleteCmptCale(int caleId);
/**
* 获取数据库中的赛事总数
* @return
*/
public int getCmptCount(String keyword);
/**
* 获取一定数量的比赛信息
* @param index
* @param num
* @return
*/
public List<CmptCale> getCmpts(int index,int num, String keyword,String flag);
/**
* 获取某人的系统消息列表
* @param openId
* @param msgType 系统消息类型
* @param readStatus 状态
* @return
*/
public List<CmptCaleMsg> getCmptCalenderMsg(String openId, String msgType, String readStatus);
public List<CmptCaleMsg> getCmptCalenderMsgByTime(String openId, String msgType, String readStatus);
/**
* 设置赛事系统消息为已读
* @param openId
* @param msgType
* @return
*/
public int setReadCmptCalenderMsg(String openId, String msgType);
public int setReadCmptCalenderMsgByTime(String openId, String msgType);
/**
* 获取某个比赛信息
* @param openId
* @param cId
* @return
*/
public CmptCale getCmptCaleInfo(String openId, int cId);
/**
* 获取某个赛事日历基本信息
* @param caleId
* @return
*/
public CmptCale getOnlyCmptCaleInfoById(int caleId);
/**
* 新增系统消息
* @return
*/
public int insertSysMsg(CmptCaleMsg bean);
}
package com.neusoft.calendar.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;
import com.neusoft.calendar.dao.impl.ITestDAO;
/**
* @author SHG3-LMS
* @date Apr 17, 2013
*
*/
@Repository("testDao")
public class TestDAO implements ITestDAO {
@Autowired
private JdbcTemplate geeRunnerJdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate geeRunnerBindParamJdbcTemplate;
@Override
public int getTest() {
String sql = "select * from message ";
List<HashMap<String, String>> list = this.geeRunnerJdbcTemplate.query(sql.toString(), new Object[] { }, new RowMapper<HashMap<String, String>>() {
@Override
public HashMap<String, String> mapRow(ResultSet rs, int arg1) throws SQLException {
HashMap<String, String> map = new HashMap<>();
String[] keys = "id,cmptid,template".split(",");
for (String key : keys) {
map.put(key, rs.getString(key));
}
return map;
}
});
return list.size();
}
}
This diff is collapsed.
package com.neusoft.calendar.dao.impl;
/**
* @author SHG3-LMS
* @date Apr 17, 2013
*
*/
public interface ITestDAO {
public int getTest();
}
package com.neusoft.calendar.service;
import java.util.List;
import com.neusoft.calendar.bean.CmptCale;
import com.neusoft.calendar.bean.CmptCaleMsg;
/**
* 2016-12-22
* @author Administrator
*
*/
public interface ICalendarService {
/**
* 获取一个月的赛事信息
* @param startTime
* @param openId
* @param keyWord
* @param type
* @param country
* @param city
* @return
*/
public List<CmptCale> getCmpts(String startTime,String openId,String keyword,int type,String country,String city);
/**
* 获取个人关注赛事列表
* @param startTime
* @param endDay
* @param openId
* @param count
* @return
*/
public List<CmptCale> getConcern(String startTime,int endDays,String openId,int count);
/**
* 关注赛事或取消关注
* @param openId
* @param caleId
* @param type
* @param cmptEnrollId
* @return
*/
public int addOrDel(String openId,int caleId,int type,int cmptEnrollId);
/**
* 赛事信息更新
* @param ccl
* @return
*/
public int addOrUpdate(List<CmptCale> ccl);
/**
* 获取赛事信息的条数
* @return
*/
public int getCmptCount(String keyword);
/**
* 获取一定数量的赛事信息
* @param index
* @param num
* @return
*/
public List<CmptCale> getCmpts(int index,int num, String keyword,String flag);
/**
* 获取某人的系统消息
* @param openId
* @param msgType
* @param readStatus
* @return
*/
public List<CmptCaleMsg> getCmptCalenderMsg(String openId, String msgType, String readStatus);
/**
* 设置赛事系统消息为已读
* @param openId
* @param msgType
* @return
*/
public int setReadCmptCalenderMsg(String openId, String msgType);
/**
* 获取某个比赛信息
* @param openId
* @param cId
* @return
*/
public CmptCale getCmptCaleInfo(String openId, int cId);
/**
* 获取某个赛事日历基本信息
* @param caleId
* @return
*/
public CmptCale getOnlyCmptCaleInfoById(int caleId);
}
package com.neusoft.calendar.service;
public interface TestService {
public int getTest();
}
package com.neusoft.calendar.service.impl;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.neusoft.calendar.bean.CmptCale;
import com.neusoft.calendar.bean.CmptCaleMsg;
import com.neusoft.calendar.dao.ICalendarDao;
import com.neusoft.calendar.service.ICalendarService;
@Service
@Transactional
public class CalendarServiceImpl implements ICalendarService {
@Autowired
private ICalendarDao calendarDao;
@Override
public List<CmptCale> getCmpts(String startTime, String openId,
String keyword, int type, String country, String city) {
return calendarDao.getCmpts(startTime, openId, keyword, type, country, city);
}
@Override
public List<CmptCale> getConcern(String startTime, int endDays,
String openId, int count) {
return calendarDao.getConcern(startTime, endDays, openId, count);
}
@Override
public int addOrDel(String openId, int caleId, int type, int cmptEnrollId) {
int rs=0;
if(type==0){
if(caleId==-1){
rs=calendarDao.addConcern(openId, calendarDao.getCaleId(cmptEnrollId));
}else{
rs=calendarDao.addConcern(openId, caleId);
}
}else{
if(caleId==-1){
rs=calendarDao.delConcern(openId, calendarDao.getCaleId(cmptEnrollId));
}else{
rs=calendarDao.delConcern(openId, caleId);
}
}
return rs;
}
@Override
public int addOrUpdate(List<CmptCale> ccl) {
int rs=0;
for(CmptCale cc:ccl){
// "" -> NULL
if (StringUtils.isBlank(cc.getCreate_time())) cc.setCreate_time(null);
if (StringUtils.isBlank(cc.getEnrollEnd())) cc.setEnrollEnd(null);
if (StringUtils.isBlank(cc.getEnrollSt())) cc.setEnrollSt(null);
if (StringUtils.isBlank(cc.getStartTime())) cc.setStartTime(null);
if (StringUtils.isBlank(cc.getUpdate_time())) cc.setUpdate_time(null);
if(!StringUtils.isBlank(cc.getCmptName())){
if(cc.getCaleId()<=0){
int caleid = calendarDao.addCmptCale(cc);
if (caleid>0) rs += 1;
if (CmptCale.CMPTFROM_1.equals(cc.getCmptFrom()) && !StringUtils.isBlank(cc.getCmptEnrollUrl())) {
// 新增报名消息(来源:赛客报名已开放报名入口的是赛事)
CmptCaleMsg bean = new CmptCaleMsg();
bean.setCaleid(caleid);
bean.setCaleId(caleid);
bean.setMsg_content(cc.getCmptName());
bean.setMsg_type(CmptCaleMsg.MSG_TYPE_1);
calendarDao.insertSysMsg(bean);
} else {
// 新增上线消息(全部新赛事)
CmptCaleMsg bean = new CmptCaleMsg();
bean.setCaleid(caleid);
bean.setCaleId(caleid);
bean.setMsg_content(cc.getCmptName());
bean.setMsg_type(CmptCaleMsg.MSG_TYPE_0);
calendarDao.insertSysMsg(bean);
}
continue;
}
CmptCale caleBean = getOnlyCmptCaleInfoById(cc.getCaleId());
rs+=calendarDao.updateCmptCale(cc);
// 新增报名消息(来源:赛客报名已开放报名入口的是赛事)
if (caleBean!=null && CmptCale.CMPTFROM_1.equals(cc.getCmptFrom())
&& StringUtils.isBlank(caleBean.getCmptEnrollUrl()) && !StringUtils.isBlank(cc.getCmptEnrollUrl())) {
CmptCaleMsg bean = new CmptCaleMsg();
bean.setCaleid(cc.getCaleId());
bean.setCaleId(cc.getCaleId());
bean.setMsg_content(cc.getCmptName());
bean.setMsg_type(CmptCaleMsg.MSG_TYPE_1);
calendarDao.insertSysMsg(bean);
}
}else{
rs+=calendarDao.deleteCmptCale(cc.getCaleId());
}
}
return rs;
}
@Override
public List<CmptCale> getCmpts(int index, int num, String keyword,String flag) {
return calendarDao.getCmpts(index, num, keyword,flag);
}
@Override
public int getCmptCount(String keyword) {
return calendarDao.getCmptCount(keyword);
}
@Override
public List<CmptCaleMsg> getCmptCalenderMsg(String openId, String msgType, String readStatus) {
// return calendarDao.getCmptCalenderMsg(openId, msgType, readStatus);
return calendarDao.getCmptCalenderMsgByTime(openId, msgType, readStatus);
}
@Override
public int setReadCmptCalenderMsg(String openId, String msgType) {
// return calendarDao.setReadCmptCalenderMsg(openId, msgType);
return calendarDao.setReadCmptCalenderMsgByTime(openId, msgType);
}
@Override
public CmptCale getCmptCaleInfo(String openId, int cId) {
return calendarDao.getCmptCaleInfo(openId, cId);
}
@Override
public CmptCale getOnlyCmptCaleInfoById(int caleId) {
return calendarDao.getOnlyCmptCaleInfoById(caleId);
}
}
package com.neusoft.calendar.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.neusoft.calendar.dao.impl.ITestDAO;
import com.neusoft.calendar.service.TestService;
@Service
@Transactional
public class TestServiceImpl implements TestService{
@Autowired
private ITestDAO testDAO;
@Override
public int getTest() {
return testDAO.getTest();
}
}
package com.neusoft.filter;
import org.springframework.stereotype.Component;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
@Component
public class CORSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
// response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
// response.setHeader("Access-Control-Max-Age", "3600");
// response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
\ No newline at end of file
package com.neusoft.log;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Priority;
/**
* 定义自己的Appender类
*/
public class LogAppender extends DailyRollingFileAppender {
@Override
public boolean isAsSevereAsThreshold(Priority priority) {
// 只判断是否相等,而不判断优先级
return this.getThreshold().equals(priority);
}
}
\ No newline at end of file
package com.neusoft.log;
import java.io.Serializable;
import java.util.Date;
public class LogBean implements Serializable{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 20170119L;
/**
* 请求traceId
*/
private String id;
/**
* 应用名称
*/
private String appName;
/**
* 日志类型 0操作日志,1异常日志
*/
private Integer logType;
/**
* 操作人
*/
private String user;
/**
* 操作人Id
*/
private String userId;
/**
* 方法名称
*/
private String methodName;
/**
* 请求参数
*/
private String requestParams;
/**
* 方法描述
*/
private String methodDescription;
/**
* 访问者ip
*/
private String requestIp;
/**
* 请求uri
*/
private String requestUri;
/**
* 请求path
*/
private String requestPath;
/**
* 异常编码
*/
private String exceptionCode;
/**
* 异常详情
*/
private String exceptionDetail;
/**
* 创建时间
*/
private Date executeTime;
/**
* 请求响应状态
*/
private String status;
/**
* 请求响应内容
*/
private String content;
/**
* startTime
* @return
*/
private Long startTime;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public Integer getLogType() {
return logType;
}
public void setLogType(Integer logType) {
this.logType = logType;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public String getRequestParams() {
return requestParams;
}
public void setRequestParams(String requestParams) {
this.requestParams = requestParams;
}
public String getMethodDescription() {
return methodDescription;
}
public void setMethodDescription(String methodDescription) {
this.methodDescription = methodDescription;
}
public String getRequestIp() {
return requestIp;
}
public void setRequestIp(String requestIp) {
this.requestIp = requestIp;
}
public String getRequestUri() {
return requestUri;
}
public void setRequestUri(String requestUri) {
this.requestUri = requestUri;
}
public String getRequestPath() {
return requestPath;
}
public void setRequestPath(String requestPath) {
this.requestPath = requestPath;
}
public String getExceptionCode() {
return exceptionCode;
}
public void setExceptionCode(String exceptionCode) {
this.exceptionCode = exceptionCode;
}
public String getExceptionDetail() {
return exceptionDetail;
}
public void setExceptionDetail(String exceptionDetail) {
this.exceptionDetail = exceptionDetail;
}
public Date getExecuteTime() {
return executeTime;
}
public void setExecuteTime(Date executeTime) {
this.executeTime = executeTime;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public Long getStartTime() {
return startTime;
}
public void setStartTime(Long startTime) {
this.startTime = startTime;
}
}
package com.neusoft.log;
import java.lang.annotation.*;
/**
*自定义注解 拦截Controller
*/
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SystemControllerLog {
String description() default "";
}
\ No newline at end of file
This diff is collapsed.
package com.neusoft.log;
import java.lang.annotation.*;
/**
*自定义注解 拦截service
*/
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SystemServiceLog {
String description() default "";
}
\ No newline at end of file
/**
* Copyright (c) 2015 by Neusoft Geexek
* All rights reserved.
*/
package com.neusoft.utils;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
* @author shuxing.yang
*
* @date 2016-2-1
*
* @description
*/
public class AuthInterceptor implements HandlerInterceptor{
private static final Log log = LogFactory.getLog(AuthInterceptor.class);
@Value("${project.domain}")
private String domain;
@Value("${auth.domain}")
private String authDomain;
@Value("${geexek.appid}")
private String appid;
@Value("${project.production}")
private boolean production;
@Value("${server.domain}")
private String serverDomain;
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {
log.info("--------------------preHandle--------------");
if(request.getHeader("User-Agent").indexOf("MicroMessenger") > -1){
//微信端
log.info("--------------------id--------------"+request.getSession().getId());
Object openId = request.getSession().getAttribute("openId");
if(openId == null){
log.info("--------------------getQueryString--------------"+request.getQueryString());
String path = "";
String query = ""; // 重新拼接
if (request.getParameter("start")!=null) query += "&start="+request.getParameter("start").toString();
else query += "&start="+CommonUtils.getFormatNowDate("yyyyMM"); // 默认当月
if (request.getParameter("openId")!=null) query += "&fpId="+request.getParameter("openId").toString();
if (request.getParameter("fpId")!=null && !query.contains("fpId=")) query += "&fpId="+request.getParameter("fpId").toString();
if (query!=null && query.startsWith("&")) query = query.substring(1);
query = query == null ? "" : query.replaceAll("&","*");
if(production){
path = domain + request.getServletPath().replace("/common","")+"?"+query;
}else{
path = domain + request.getServletPath()+"?"+query.replaceAll("&","*");
}
log.info("--------------------path--------------"+path);
String redUrl = authDomain+"?appid="+appid+"&scope=snsapi_base&state=1&redirect_uri="+
URLEncoder.encode(domain+"/wxapi/authorize?p="+path, "utf-8");
log.info("--------------------redUrl--------------"+redUrl);
response.sendRedirect(redUrl);
return false;
}else{
String parameters = request.getQueryString();
log.info("--------------------parameters: "+parameters);
if(request.getRequestURI().indexOf("raceCale") > -1 || request.getRequestURI().indexOf("myCale") > -1){
String newUrl = domain+"/raceCale?";
if (request.getRequestURI().indexOf("myCale") > -1) newUrl = domain+"/myCale?";
String query = ""; // 重新拼接
if (request.getParameter("start")!=null) query += "&start="+request.getParameter("start").toString();
else query += "&start="+CommonUtils.getFormatNowDate("yyyyMM"); // 默认当月
query += "&openId="+openId; // openId改成自己的
if (request.getParameter("openId")!=null && !openId.toString().equals(request.getParameter("openId").toString())) {
query += "&fpId="+request.getParameter("openId").toString();
if (query!=null && query.startsWith("&")) query = query.substring(1);
log.info("--------------------newUrl1--------------------"+ newUrl+query);
response.sendRedirect(newUrl+query);
return false;
} else if (request.getParameter("openId")==null) {
if (request.getParameter("fpId")!=null) query += "&fpId="+request.getParameter("fpId").toString();
if (query!=null && query.startsWith("&")) query = query.substring(1);
log.info("--------------------newUrl2--------------------"+ newUrl+query);
response.sendRedirect(newUrl+query);
return false;
}
}
return true;
}
}else{
String url = request.getRequestURI();
String parameters = request.getQueryString();
log.info("--------------------not wx url: "+ url +","+ parameters);
if (serverDomain.indexOf("testtimer")==-1 && domain.indexOf("127.0.0.1")==-1 && domain.indexOf("localhost")==-1) {
if ((url.indexOf("raceCale") > -1 || url.indexOf("myCale") > -1) && request.getParameter("openId")!=null && !"".equals(request.getParameter("openId"))) {
// 非微信访问排除openId
String newUrl = domain+"/raceCale?";
if (request.getParameter("start")!=null) newUrl += "start="+request.getParameter("start").toString();
else newUrl += "start="+CommonUtils.getFormatNowDate("yyyyMM"); // 默认当月
log.info("--------------------not wx newurl: "+ newUrl);
response.sendRedirect(newUrl);
return false;
}
}
return true;
}
}
}
This diff is collapsed.
/**
* Copyright (c) 2015 by Neusoft Geexek
* All rights reserved.
*/
package com.neusoft.utils;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
/**
* @author Linc
*
* @date 2015-10-14
*
* @description 共通工具类
*/
public abstract class CommonUtils {
public static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String SHORT_PATTERN = "yyyy-MM-dd";
public static final String TIME_PATTERN = "HH:mm:ss";
public static final String HOUR_MINUTE_PATTERN = "HH:mm";
/**
* 众辉会员ID格式
*/
private static final String STARZ_MEMBER_ID_PATTERN = "0000";
/**
* 转换4位会员编号格式
*
* @param materialGroupId
* @return
*/
public static String formatMemberIdFour(String seqId) {
if (seqId == null || "".equals(seqId)) {
return null;
}
return new DecimalFormat(STARZ_MEMBER_ID_PATTERN).format(Long.parseLong(seqId));
}
public static String formatFour(String seqId) {
String pattern = "";
if (seqId == null || "".equals(seqId)) {
return null;
}
for(int i=0; i<4-seqId.length(); i++){
pattern += "0";
}
return seqId+pattern;
}
/**
* 按照参数长度补0
*
* @param seqId 序列号
* @param len 长度
* @return
*/
public static String formatMemberId(String seqId, int len) {
String pattern = "";
if (seqId == null || "".equals(seqId)) {
return null;
}
for(int i=0; i<len; i++){
pattern += "0";
}
return new DecimalFormat(pattern).format(Long.parseLong(seqId));
}
/**
* 计算剩余会员天数
*
* @param registerDate
* @return
*/
public static long getMemberRestDays(Date registerDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(registerDate);
// 注册日期加上365天
cal.add(Calendar.DAY_OF_YEAR, 365);
long time1 = cal.getTimeInMillis();
// 设置当前时间
cal.setTime(new Date());
long time2 = cal.getTimeInMillis();
// 到期天数减去当前天数为剩余天数
long between_days = (time1 - time2) / (1000 * 3600 * 24);
return between_days;
}
/**
* 计算会员到期日期
*
* @param registerDate
* @return
*/
public static String getMemberEndDate(Date registerDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(registerDate);
cal.add(Calendar.DAY_OF_YEAR, 365);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
return sdf.format(cal.getTime());
}
/**
* 计算报名剩余天数
*
* @param endTime
* 报名结束时间
* @return restDays
*/
public static long getEnrollRestDays(Date endTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(endTime);
long time1 = cal.getTimeInMillis();
// 设置当前时间
cal.setTime(new Date());
long time2 = cal.getTimeInMillis();
// 到期天数减去当前天数为剩余天数
long restDays = (time1 - time2) / (1000 * 3600 * 24);
return restDays;
}
/**
* 计算报名剩余小时数
*
* @param endTime
* 报名结束时间
* @return restDays
*/
public static long getEnrollRestHours(Date endTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(endTime);
long time1 = cal.getTimeInMillis();
// 设置当前时间
cal.setTime(new Date());
long time2 = cal.getTimeInMillis();
// 到期天数减去当前天数为剩余小时数
long restDays = (time1 - time2) / (1000 * 3600);
return restDays;
}
/**
* 计算报名剩余分钟数
*
* @param endTime
* 报名结束时间
* @return restDays
*/
public static long getEnrollRestMin(Date endTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(endTime);
long time1 = cal.getTimeInMillis();
// 设置当前时间
cal.setTime(new Date());
long time2 = cal.getTimeInMillis();
// 到期天数减去当前天数为剩余分钟数
long restDays = (time1 - time2) / (1000 * 60);
return restDays;
}
/**
* 日期格式化
*
* @param dt
* 日期
* @param regx
* 格式化规则
* @return
*/
public static String formatDate(Date dt, String regx) {
SimpleDateFormat sdf = new SimpleDateFormat(regx);
return sdf.format(dt);
}
/**
* 将http URL中的参数串中的"openId"插入或更新为"openId="+openId
* @param url
* @param openId
* @return
*/
public static String mergeOpenId(String url, String openId){
if (url.contains(openId)){
return url;
}
if (url.contains("openId")){
//更新
int openIdIndex = url.indexOf("openId=")+"openId=".length();
int indexOfAnd = url.indexOf("&", openIdIndex);
String oldOpenId;
if (indexOfAnd==-1){
//openId是最后一个参数
oldOpenId = url.substring(openIdIndex);
}else{
//openId后面还有参数
oldOpenId = url.substring(openIdIndex, indexOfAnd);
}
return url.replace(oldOpenId, openId);
}else{
//添加
if(url.indexOf("?") > -1){
return url + "&openId="+openId;
}else{
return url + "?openId="+openId;
}
}
}
/**
* 将http URL中的参数串尾部插入key=value
* @param url
* @param key
* @param value
* @return
*/
public static String addParameter(String url, String key, String value){
if (url==null||key==null){
return url;
}
if(url.indexOf("?") > -1){
return url + "&" + key + "=" + value;
}else{
return url + "?" + key + "=" + value;
}
}
/**
* 获取http URL中的参数串中key的值
* @param url
* @param key
* @return
*/
public static String getParameterValue(String url, String key){
if (url==null || key==null) {
return "";
}
String _key = key+"=";
if (url.contains(_key)) {
int idx = url.indexOf(_key) + _key.length();
int indexOfAnd = url.indexOf("&", idx);
String val = "";
if (indexOfAnd==-1) {
val = url.substring(idx); // 是最后一个参数
} else {
val = url.substring(idx, indexOfAnd); // 后面还有参数
}
return val;
}
return "";
}
/**
* 获取系统日期格式
* @param pattern yyyyMM
* @return
*/
public static String getFormatNowDate(String pattern) {
try {
Date dt = new Date();
SimpleDateFormat simple = new SimpleDateFormat(pattern);
return simple.format(dt);
} catch (Exception e) {
return "";
}
}
public static Date converDate(String str, String pattern) {
if (StringUtils.isBlank(pattern)) {
pattern = DEFAULT_PATTERN;
}
DateFormat df = new SimpleDateFormat(pattern);
if ((str == null) || (str.equals(""))) {
return new Date();
}
try {
return df.parse(str);
} catch (Exception e) {
e.printStackTrace();
}
return new Date();
}
public static String converDate(Date date, String pattern) {
if (StringUtils.isBlank(pattern)) {
pattern = DEFAULT_PATTERN;
}
DateFormat df = new SimpleDateFormat(pattern);
if (date == null) {
return "";
}
return df.format(date);
}
/**
* 比较与当前时间差
* 本日的返回x分钟/x小时前
* 历史的返回x月x日
* @param time
* @return
*/
public static String toNowTimeString(String time) {
if (StringUtils.isBlank(time)) return "";
// 比较的日期
Date _time = converDate(time, SHORT_PATTERN);
String _ymd = time.substring(0, 10);
// 当前时间
Date now = new Date();
String ymd = converDate(now, SHORT_PATTERN);
if (ymd.equals(_ymd)) {
_time = converDate(time, DEFAULT_PATTERN);
int _h = _time.getHours();
int _m = _time.getMinutes();
int nowH = now.getHours();
int nowM = now.getMinutes();
if (_h==nowH) {
if (_m>=nowM) return "1分钟前";
else return (nowM-_m)+"分钟前";
} else {
return (nowH-_h)+"小时前";
}
} else {
return time.substring(5, 10).replaceAll("-", "月")+"日";
}
}
/**
* 获取某年的天数
* @param yearString
* @return
*/
public static int getMaxDaysOfYear(String yearString) {
try {
int year = Integer.parseInt(yearString.substring(0, 4));
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
return cal.getActualMaximum(Calendar.DAY_OF_YEAR);
} catch (Exception e) {
}
return 0;
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {
System.out.println(toNowTimeString("2017-01-20 11:06:00"));
}
}
package com.neusoft.utils;
public class Consts {
public static final String LOGINUSER = "commonUser";
public static final String REDIRECTURL = "redirectURL";
}
package com.neusoft.utils;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import com.neusoft.weather.controller.WeatherController;
public class CryptoUtil {
public static byte[] getHmacSHA1(String src)
throws NoSuchAlgorithmException, UnsupportedEncodingException,
InvalidKeyException {
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec secret = new SecretKeySpec(
WeatherController.APP_SECRET.getBytes("UTF-8"), mac.getAlgorithm());
mac.init(secret);
return mac.doFinal(src.getBytes());
}
public static String getKey(String url){
byte[] hmac;
try {
hmac = getHmacSHA1(url);
return URLEncoder.encode(Base64.encode(hmac), "UTF-8");
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException, UnsupportedEncodingException {
System.out.println(getKey("http://webapi.weather.com.cn/data/?areaid=101090205&type=forecast7d&date=201608292150&appid=35074891a78bf08f"));
}
}
package com.neusoft.utils;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import org.apache.commons.lang.StringUtils;
public class DateUtil {
public static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String SHORT_PATTERN = "yyyy-MM-dd";
public static final String SHORT_PATTERN_NO = "yyyyMMdd";
public static final String HOUR_PATTERN = "HH:mm:ss";
public static final String HOUR_PATTERN_NO = "HHmmss";
public static Date converDate(java.sql.Date date) {
if (date == null) {
return null;
}
Date dt = new Date(date.getTime());
return dt;
}
public static Date converDate(String str, String pattern) {
if (StringUtils.isBlank(pattern)) {
pattern = DEFAULT_PATTERN;
}
DateFormat df = new SimpleDateFormat(pattern);
if ((str == null) || (str.equals(""))) {
return new Date();
}
try {
return df.parse(str);
} catch (Exception e) {
e.printStackTrace();
}
return new Date();
}
public static java.sql.Date toSqlDate(Date date) {
java.sql.Date res = null;
try {
res = new java.sql.Date(date.getTime());
} catch (RuntimeException e) {
e.printStackTrace();
res = new java.sql.Date(new Date().getTime());
}
return res;
}
public static String converDate(Date date, String pattern) {
if (StringUtils.isBlank(pattern)) {
pattern = DEFAULT_PATTERN;
}
DateFormat df = new SimpleDateFormat(pattern);
if (date == null) {
return "";
}
return df.format(date);
}
public static String getFormatDateStr(String date) {
if ((date == null) || (date.length() < 14)) {
return date;
}
StringBuilder result = new StringBuilder();
result.append(date.substring(0, 4)).append("-").append(date.substring(4, 6)).append("-").append(date.substring(6, 8)).append(" ").append(date.substring(8, 10)).append(":").append(date.substring(10, 12));
return result.toString();
}
public static String firstDayOfWeek() {
GregorianCalendar gregorianCalendar = new GregorianCalendar();
int dayOfWeek = gregorianCalendar.get(7);
if (dayOfWeek == 1) {
dayOfWeek = 7;
} else {
dayOfWeek--;
}
int deta = 1 - dayOfWeek;
gregorianCalendar.add(5, deta);
SimpleDateFormat dateFormat = new SimpleDateFormat(SHORT_PATTERN);
return dateFormat.format(gregorianCalendar.getTime());
}
public static String firstDayOfMonth() {
GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.add(5, 1 - gregorianCalendar.get(5));
SimpleDateFormat dateFormat = new SimpleDateFormat(SHORT_PATTERN);
return dateFormat.format(gregorianCalendar.getTime());
}
public static String firstDayOfSomeMonthLatter(int detaMonthNum) {
GregorianCalendar gregorianCalendar = new GregorianCalendar();
int month = gregorianCalendar.get(2) + 1;
int year = gregorianCalendar.get(1);
int day = gregorianCalendar.get(5);
if (month < detaMonthNum) {
year--;
month += 12;
}
month -= detaMonthNum;
gregorianCalendar.set(year, month - 1, day);
SimpleDateFormat dateFormat = new SimpleDateFormat(SHORT_PATTERN);
return dateFormat.format(gregorianCalendar.getTime());
}
public static String firstDayOfYear() {
GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.add(5, 1 - gregorianCalendar.get(6));
SimpleDateFormat dateFormat = new SimpleDateFormat(SHORT_PATTERN);
return dateFormat.format(gregorianCalendar.getTime());
}
public static int getDayOfWeekOfToday() {
GregorianCalendar gregorianCalendar = new GregorianCalendar();
int dayOfWeek = gregorianCalendar.get(7);
if (dayOfWeek == 1) {
return 6;
}
return dayOfWeek - 2;
}
public static String getFormatDate(double date) {
int hour = (int) date / 3600;
int min = (int) (date % 3600.0D) / 60;
int sec = (int) (date % 3600.0D) % 60;
String dateStr = "";
if (hour > 0) {
dateStr = dateStr + hour + "小时";
}
if (min > 0) {
dateStr = dateStr + min + "分钟";
}
if (sec > 0) {
dateStr = dateStr + sec + "秒";
}
return dateStr;
}
public static double secondToMinute(double date) {
return date / 60.0D;
}
public static Date getDay(int year, int weekOfYear, int dayOfWeek) {
Calendar calendar = Calendar.getInstance();
calendar.set(1, year);
calendar.set(3, weekOfYear);
calendar.set(7, dayOfWeek);
return calendar.getTime();
}
public static Date getFirstDayOfWeek(int year, int weekOfYear) {
Calendar calendar = Calendar.getInstance();
calendar.set(1, year);
calendar.set(3, weekOfYear);
calendar.set(7, 1);
return calendar.getTime();
}
public static Date getLastDayOfWeek(int year, int weekOfYear) {
Calendar calendar = Calendar.getInstance();
calendar.set(1, year);
calendar.set(3, weekOfYear);
calendar.set(7, 7);
return calendar.getTime();
}
public static String toDateStr(int tempVal) {
String timeStr = null;
// int tempVal=(-dateIntVal)/1000;//将毫秒转为秒
int hour = 0;
int minute = 0;
int second = 0;
if (tempVal <= 0) {
timeStr = "00:00:00";
} else {
minute = tempVal / 60;
if (minute < 60) {
second = tempVal % 60;
timeStr = "00:" + unitFormat(minute) + ":" + unitFormat(second);
} else {
hour = minute / 60;
if (hour > 99)
return "99:00:00";
minute = minute % 60;
second = tempVal - hour * 3600 - minute * 60;
timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":" + unitFormat(second);
}
}
return timeStr;
}
public static String unitFormat(int value) {
String commonStr = "";
if (value >= 0 && value < 10) {
commonStr = "0" + Integer.toString(value);
} else {
commonStr = Integer.toString(value);
}
return commonStr;
}
public static Long StringToDate(String time) throws java.text.ParseException {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sd.setTimeZone(TimeZone.getTimeZone("GMT+8"));
return sd.parse(time).getTime();
}
public static String millsSecondToYMDHms(long millsSecond) {
Date d = null;
if (millsSecond <= 0) {
d = new Date();
} else {
d = new Date(millsSecond);
}
return converDate(d, DEFAULT_PATTERN);
}
public static String toDateTimeStr(long dateVal){
String str="";
Date date = new Date(dateVal*1000);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
str=dateFormat.format(date);
return str;
}
/**
* 将毫秒转为可超过24的HH:mm:ss.SSS,如果毫秒为0则隐藏,支持负数
* @param ms 时长毫秒数
* @return HH:mm:ss(.SSS)
*/
public static String msToTimeMsStr(long ms){
StringBuffer ret = new StringBuffer();
if (ms<0){
ms = -ms;
ret.append("-");
}
long hour = ms/3600/1000;
long minute = ms/1000%3600/60;
long second = ms/1000%3600%60;
long milisecond = ms%1000;
if (second==60) {
minute += 1;
if (minute==60) hour+=1;
}
DecimalFormat df = new DecimalFormat("00");
ret.append(df.format(hour)).append(":").append(df.format(minute)).append(":").append(df.format(second));
if (milisecond>0){
DecimalFormat df2 = new DecimalFormat("000");
ret.append(".").append(df2.format(milisecond));
}
return ret.toString();
}
/**
* 与今日相差几天
* @param addNum
* @param pattern
* @return
*/
public static String getAddDate(int addNum, String pattern) {
try {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, addNum);
Date date = calendar.getTime();
DateFormat df = new SimpleDateFormat(pattern);
return df.format(date);
} catch (Exception e) {}
return "";
}
/**
* 今日yyyy-MM-dd HH:mm:ss
* @return
*/
public static String getNowDate() {
Date date = new Date();
return converDate(date, DEFAULT_PATTERN);
}
/**
* 今天第一天yyyy-01-01 00:00:00
* @return
*/
public static String getNowYearFirstDay() {
Date date = new Date();
return converDate(date, "yyyy") + "-01-01 00:00:00";
}
}
This diff is collapsed.
package com.neusoft.utils;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
/**
* 获取农历
* @author Administrator
*
*/
public class LunarUtil {
private int year;
private int month;
private int day;
private boolean leap;
final static String chineseNumber[] = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"};
static SimpleDateFormat chineseDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
final static long[] lunarInfo = new long[]
{0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,
0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977,
0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,
0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950,
0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557,
0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0,
0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0,
0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6,
0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570,
0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0,
0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5,
0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930,
0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530,
0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45,
0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0};
//====== 传回农历 y年的总天数
final private static int yearDays(int y) {
int i, sum = 348;
for (i = 0x8000; i > 0x8; i >>= 1) {
if ((lunarInfo[y - 1900] & i) != 0) sum += 1;
}
return (sum + leapDays(y));
}
//====== 传回农历 y年闰月的天数
final private static int leapDays(int y) {
if (leapMonth(y) != 0) {
if ((lunarInfo[y - 1900] & 0x10000) != 0)
return 30;
else
return 29;
} else
return 0;
}
//====== 传回农历 y年闰哪个月 1-12 , 没闰传回 0
final private static int leapMonth(int y) {
return (int) (lunarInfo[y - 1900] & 0xf);
}
//====== 传回农历 y年m月的总天数
final private static int monthDays(int y, int m) {
if ((lunarInfo[y - 1900] & (0x10000 >> m)) == 0)
return 29;
else
return 30;
}
//====== 传回农历 y年的生肖
final public String animalsYear() {
final String[] Animals = new String[]{"鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"};
return Animals[(year - 4) % 12];
}
//====== 传入 月日的offset 传回干支, 0=甲子
final private static String cyclicalm(int num) {
final String[] Gan = new String[]{"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};
final String[] Zhi = new String[]{"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};
return (Gan[num % 10] + Zhi[num % 12]);
}
//====== 传入 offset 传回干支, 0=甲子
final public String cyclical() {
int num = year - 1900 + 36;
return (cyclicalm(num));
}
/**
* 传出y年m月d日对应的农历.
* yearCyl3:农历年与1864的相差数 ?
* monCyl4:从1900年1月31日以来,闰月数
* dayCyl5:与1900年1月31日相差的天数,再加40 ?
*
* @param cal
* @return
*/
public LunarUtil(Calendar cal) {
@SuppressWarnings("unused")
int yearCyl, monCyl, dayCyl;
int leapMonth = 0;
Date baseDate = null;
try {
baseDate = chineseDateFormat.parse("1900年1月31日");
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use Options | File Templates.
}
//求出和1900年1月31日相差的天数
int offset = (int) ((cal.getTime().getTime() - baseDate.getTime()) / 86400000L);
dayCyl = offset + 40;
monCyl = 14;
//用offset减去每农历年的天数
// 计算当天是农历第几天
//i最终结果是农历的年份
//offset是当年的第几天
int iYear, daysOfYear = 0;
for (iYear = 1900; iYear < 2050 && offset > 0; iYear++) {
daysOfYear = yearDays(iYear);
offset -= daysOfYear;
monCyl += 12;
}
if (offset < 0) {
offset += daysOfYear;
iYear--;
monCyl -= 12;
}
//农历年份
year = iYear;
yearCyl = iYear - 1864;
leapMonth = leapMonth(iYear); //闰哪个月,1-12
leap = false;
//用当年的天数offset,逐个减去每月(农历)的天数,求出当天是本月的第几天
int iMonth, daysOfMonth = 0;
for (iMonth = 1; iMonth < 13 && offset > 0; iMonth++) {
//闰月
if (leapMonth > 0 && iMonth == (leapMonth + 1) && !leap) {
--iMonth;
leap = true;
daysOfMonth = leapDays(year);
} else
daysOfMonth = monthDays(year, iMonth);
offset -= daysOfMonth;
//解除闰月
if (leap && iMonth == (leapMonth + 1)) leap = false;
if (!leap) monCyl++;
}
//offset为0时,并且刚才计算的月份是闰月,要校正
if (offset == 0 && leapMonth > 0 && iMonth == leapMonth + 1) {
if (leap) {
leap = false;
} else {
leap = true;
--iMonth;
--monCyl;
}
}
//offset小于0时,也要校正
if (offset < 0) {
offset += daysOfMonth;
--iMonth;
--monCyl;
}
month = iMonth;
day = offset + 1;
}
public static String getChinaDayString(int day) {
// String chineseTen[] = {"初", "十", "廿", "卅"};
String chineseTen[] = {"初", "十", "廿", "三"};
int n = day % 10 == 0 ? 9 : day % 10 - 1;
if (day > 30)
return "";
if (day == 10)
return "初十";
else if (day == 20)
return "二十";
else
return chineseTen[day / 10] + chineseNumber[n];
}
public String toString() {
return year + "年" + (leap ? "闰" : "") + chineseNumber[month - 1] + "月" + getChinaDayString(day);
}
public static void main(String[] args) {
// Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
// cal.setTimeZone(TimeZone.getDefault());
// System.out.println("公历日期:"+sdf.format(cal.getTime()));
// LunarUtil lunar = new LunarUtil(cal);
// System.out.println("农历日期:"+lunar.year+"年 "+lunar.month+"月 ");
// System.out.println(getChinaDayString(lunar.day));
String[] dc = new String[] {
"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"
,"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"
};
List<String> dcList = new ArrayList<>();
for (String str : dc) {
dcList.add(str);
}
int nowYear = 2020; // 处理的年份
// 12个月循环处理
for (int nowMonth=1; nowMonth<=12; nowMonth++) {
Calendar cal = Calendar.getInstance();
cal.set(nowYear, nowMonth-1, 1);
LunarUtil lunar = new LunarUtil(cal);
String nl = getChinaDayString(lunar.day);
// System.out.println(sdf.format(cal.getTime())+"----"+nl);
int fromIndex = dcList.indexOf(nl);
int eDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
// System.out.println("ed:"+eDay);
cal.set(Calendar.DAY_OF_MONTH, eDay);
lunar = new LunarUtil(cal);
nl = getChinaDayString(lunar.day);
// System.out.println(sdf.format(cal.getTime())+"----"+nl);
// System.out.println(dcList.indexOf(nl));
int toIndex = dcList.indexOf(nl);
toIndex = fromIndex > toIndex || toIndex - fromIndex < 20 ? dcList.lastIndexOf(nl) : toIndex;
List<String> dd = dcList.subList(fromIndex, toIndex + 1);
if (dd.size() > eDay) dd.remove("三十");
// System.out.println("----------------"+dd.size());
System.out.print("[");
for (String str : dd) {
System.out.print("\""+str+"\",");
}
System.out.println("],");
}
}
}
package com.neusoft.utils;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
public final class ResponseJSON {
public static void writeJSsonAndSetUTF8(HttpServletResponse response,JSONObject object){
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter out = null;
try {
out = response.getWriter();
out.append(object.toString());
out.flush();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}finally{
if(out != null){
out.close();
}
}
}
}
This diff is collapsed.
package com.neusoft.utils;
import static org.springframework.util.Assert.*;
import java.io.InputStream;
import javax.servlet.ServletContext;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.context.ServletContextAware;
/**
* ServletContextHolder
*
* @author Erich
*/
public class ServletContextHolder implements ServletContextAware, DisposableBean {
@Value("${server.domain}")
private String serverDomain;
@Value("${project.domain}")
private String projectDomain;
@Value("${enroll.queryByOpenId.url}")
private String enrollUrl;
private static ServletContext servletContext;
/**
* 设置ServletContext到Holder中
*/
public void setServletContext(ServletContext servletContext) {
notNull(servletContext != null, "ServletContext value must not be null.");
ServletContextHolder.servletContext = servletContext;
servletContext.setAttribute("server", serverDomain);
servletContext.setAttribute("local", projectDomain);
servletContext.setAttribute("enrollUrl", enrollUrl);
}
/**
* 获取ServletContext
*
* @return
*/
public static ServletContext getServletContext() {
state(servletContext != null, "The servletContext value must be provided.");
return servletContext;
}
/**
* return the real path in the server or null.
*
* @param virtualPath
* @return
*/
public static String getRealPath(String virtualPath) {
return getServletContext().getRealPath(virtualPath);
}
/**
* return the Resource InputStream or null.
*
* @param virtualPath
* @return
*/
public static InputStream getResourceAsStream(String virtualPath) {
return getServletContext().getResourceAsStream(virtualPath);
}
/**
* destroy
*/
@Override
public void destroy() throws Exception {
servletContext = null;
}
}
package com.neusoft.utils;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
public final class SystemConfig implements InitializingBean {
private static Logger log = LoggerFactory.getLogger(SystemConfig.class);
/**
* 配置文件属性键值对
*/
private static Map<String, String> systemProperties = new HashMap<String, String>();
// 资源文件位置
private String[] propertiesLocation;
public String[] getPropertiesLocation() {
return propertiesLocation;
}
public void setPropertiesLocation(String[] propertiesLocation) {
this.propertiesLocation = propertiesLocation;
}
/**
* 根据key获取value
*
* @param key
* @return
*/
public static String getProperty(final String key) {
return systemProperties.get(key);
}
/**
* 根据key获取value
*
* @param key
* @return
*/
public static String getTrimProperty(final String key) {
return StringUtils.trimToEmpty((String) systemProperties.get(key));
}
/**
* 根据key获取value,获取为空则返回默认值
*
* @param key
* @param defaultString
* @return
*/
public static String getProperty(final String key, final String defaultString) {
String prop = getProperty(key);
return StringUtils.isBlank(prop) ? defaultString : prop;
}
/**
* 根据key获取Integer类型的value
*
* @param key
* 参数名称.
* @return 参数值.
*/
public static int getIntProperty(final String key) {
return getIntProperty(key, 0);
}
/**
* 根据key获取Integer类型的value,获取为空则返回默认值
*
* @param key
* 参数名称.
* @param defaultValue
* 默认值.
* @return 参数值.
*/
public static int getIntProperty(final String key, int defaultValue) {
String property = StringUtils.trimToNull(getProperty(key));
if (property == null)
return defaultValue;
int value;
try {
value = Integer.parseInt(property);
} catch (NumberFormatException e) {
value = defaultValue;
log.warn(e.getMessage());
}
return value;
}
/**
* 根据key获取Long类型的value,获取为空则返回默认值
*
* @param key
* 参数名称.
* @param defaultValue
* 默认值.
* @return 参数值.
*/
public static long getLongProperty(final String key, long defaultValue) {
String property = StringUtils.trimToNull(getProperty(key));
if (property == null) {
return defaultValue;
}
long value;
try {
value = Long.parseLong(property);
} catch (NumberFormatException e) {
value = defaultValue;
log.warn(e.getMessage());
}
return value;
}
/**
* 获取配置文件中的整型参数值.
*
* @param key
* 参数名称.
* @return 整型参数值.
*/
public static Integer getIntegerProperty(final String key) {
return getIntegerProperty(key, null);
}
/**
* 获取配置文件中的整型参数值.
*
* @param key
* 参数名称.
* @param defaultValue
* 缺省值.
* @return 整型参数值.
*/
public static Integer getIntegerProperty(final String key, final Integer defaultValue) {
String strVal = StringUtils.trimToNull(getProperty(key));
Integer value = defaultValue;
if (strVal != null) {
try {
value = Integer.parseInt(strVal);
} catch (NumberFormatException e) {
log.warn(e.getMessage());
}
}
return value;
}
/**
* 获取配置文件中的布尔参数值.
*
* @param key
* 参数名称.
* @return 布尔参数值.
*/
public static boolean getBooleanProperty(final String key) {
return getBooleanProperty(key, false);
}
/**
* 获取配置文件中的布尔参数.如果文件中没有该参数就返回defaultValue.
*
* @param key
* 参数名称.
* @param defaultValue
* 参数默认值.
* @return 布尔参数值.
*/
public static boolean getBooleanProperty(final String key, final boolean defaultValue) {
if (systemProperties == null) {
return defaultValue;
}
Object value = systemProperties.get(key);
if (null != value) {
String strValue = StringUtils.trimToNull(value.toString());
return "true".equalsIgnoreCase(strValue) || "on".equalsIgnoreCase(strValue) || "yes".equalsIgnoreCase(strValue) || "1".equalsIgnoreCase(strValue);
} else {
return defaultValue;
}
}
/**
* 默认获取classpath下config文件中所有的properties文件
*
* @throws Exception
*/
public void afterPropertiesSet() throws Exception {
log.debug("initialize properties files...");
if (null == systemProperties) {
systemProperties = new HashMap<String, String>();
}
if (null != propertiesLocation && propertiesLocation.length > 0) {
for (String filePath : propertiesLocation) {
InputStream inStream = this.getClass().getResourceAsStream("/" + filePath);
if (null == inStream) {
continue;
}
Properties prop = new Properties(); // 实例化
prop.load(inStream);
// 返回Properties中包含的key-value的Set视图
Set<Entry<Object, Object>> set = prop.entrySet();
// 返回在此Set中的元素上进行迭代的迭代器
Iterator<Map.Entry<Object, Object>> it = set.iterator();
String key = null, value = null;
// 循环取出key-value
while (it.hasNext()) {
Entry<Object, Object> entry = it.next();
key = String.valueOf(entry.getKey());
value = String.valueOf(entry.getValue());
if (StringUtils.isNotBlank(key)) {
value = StringUtils.isNotBlank(value) ? value : "";
systemProperties.put(key, value);
}
}
}
}
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment