Commit ad9fce48 by 蘑菇🍄

init

parents
/**/.DS_Store
/logs/
/dubbo/
/**/*.iml
/**/test/**/*.java
target/
data/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
nbproject/private/
build/
nbbuild/
dist/
nbdist/
.nb-gradle/
.settings
.classpath
.project
.springBeans
mvnw
mvnw.cmd
.mvn
/bin/
.flattened-pom.xml
/**/.DS_Store
/logs/
/dubbo/
/**/*.iml
/**/test/**/*.java
target/
data/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
nbproject/private/
build/
nbbuild/
dist/
nbdist/
.nb-gradle/
.settings
.classpath
.project
.springBeans
mvnw
mvnw.cmd
.mvn
/bin/
.flattened-pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.gic</groupId>
<artifactId>gic-pom-base</artifactId>
<version>3.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>haoban-app-yourApp-api</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
\ No newline at end of file
package com.gic.haoban.appyourAppapi.service;
/**
* Created 2019/2/28.
*
* @author hua
*/
public interface TestApiService {
}
/**/.DS_Store
/logs/
/dubbo/
/**/*.iml
/**/test/**/*.java
target/
data/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
nbproject/private/
build/
nbbuild/
dist/
nbdist/
.nb-gradle/
.settings
.classpath
.project
.springBeans
mvnw
mvnw.cmd
.mvn
/bin/
.flattened-pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.gic</groupId>
<artifactId>gic-pom-base</artifactId>
<version>3.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>haoban-app-yourApp-mobile-web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>haoban-app-yourApp-mobile-web Maven Webapp</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<haobanService>1.0-SNAPSHOT</haobanService>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.2.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-common</artifactId>
<version>${haobanService}</version>
<exclusions>
<exclusion>
<artifactId>javassist</artifactId>
<groupId>javassist</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-config</artifactId>
<version>${haobanService}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-app-yourApp-api</artifactId>
<version>${haobanService}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-auth-api</artifactId>
<version>${haobanService}</version>
</dependency>
<!--好办 end-->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>haoban-app-yourApp-mobile-web</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>target/classes/</classesDirectory>
<archive>
<manifest>
<mainClass>com.alibaba.dubbo.container.Main</mainClass>
<!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<type>jar</type>
<includeTypes>jar</includeTypes>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.12.RC2</version>
<configuration>
<stopKey>gic-mall</stopKey>
<httpConnector>
<port>802</port>
</httpConnector>
<webApp>
<contextPath>/</contextPath>
</webApp>
</configuration>
</plugin>
</plugins>
</build>
</project>
package com.gic.haoban.app.daily.mobile.web.controller;
import com.gic.haoban.app.daily.mobile.web.errCode.HaoBanErrCode;
import com.gic.haoban.common.utils.HaobanResponse;
import com.gic.redis.data.util.RedisUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created 2019/2/26.
*
* @author hua
*/
@RestController
public class TestController extends WebBaseController{
@RequestMapping("/test")
public HaobanResponse test() {
return resultResponse(HaoBanErrCode.ERR_OTHER);
}
@RequestMapping("/getRedisByKey")
public HaobanResponse test2(String key) {
String o = RedisUtil.getCache(key).toString();
return resultResponse( HaoBanErrCode.ERR_1,o);
}
}
package com.gic.haoban.app.daily.mobile.web.controller;
import com.gic.haoban.app.daily.mobile.web.errCode.HaoBanErrCode;
import com.gic.haoban.common.utils.HaobanResponse;
import java.util.ArrayList;
import java.util.List;
/**
* Created 2018/7/18.
* @author hua
*/
public class WebBaseController{
protected final String defaultReturn = "json";
public HaobanResponse resultResponse(HaoBanErrCode errCode,Object data,String detailError){
HaobanResponse response = new HaobanResponse();
response.setMessage( errCode.getMsg() );
response.setErrorCode( errCode.getCode() );
response.setResult( data );
response.setDetailError( detailError );
return response;
}
public HaobanResponse resultResponse(HaoBanErrCode errCode,List<?> data){
if( data == null ){
data = new ArrayList<>();
}
return resultResponse( errCode,data,null );
}
public HaobanResponse resultResponse(HaoBanErrCode errCode,Object data){
return resultResponse( errCode,data,"" );
}
public HaobanResponse resultResponse(HaoBanErrCode errCode){
return resultResponse( errCode,null,"" );
}
/**
* 缺少必要参数
* @return
*/
protected HaobanResponse missArgument(){
return resultResponse( HaoBanErrCode.ERR_2,null,"" );
}
protected HaobanResponse success(){
return resultResponse( HaoBanErrCode.ERR_1,null,"" );
}
protected HaobanResponse success(Object data){
return resultResponse( HaoBanErrCode.ERR_1,data,"" );
}
}
package com.gic.haoban.app.daily.mobile.web.errCode;
/**
* Created by hua on 2019/2/26.
*/
public enum HaoBanErrCode{
/**
* 操作失败
*/
ERR_0( 0,"操作失败" ),
/**
* 操作成功
*/
ERR_1( 1,"操作成功" ),
/**
* 缺少参数
*/
ERR_2( 2,"缺少参数" ),
/**
* 系统异常
*/
ERR_3( 3,"系统异常" ),
//日报
ERR_961000( 961000,"日报加载异常" ),
ERR_961001( 961001,"日报处理异常" ),
ERR_961002( 961002,"日报保存异常" ),
ERR_961003( 961003,"日报模板不存在" ),
ERR_961004( 961004,"门店竞品信息查询失败" ),
ERR_961005( 961005,"门店竞品信息保存失败" ),
ERR_961006( 961006,"竞品名称过长,请重新输入(中文不能超过5个字,英文不能超过10个字母)" ),
ERR_961007( 961007,"该任务已经分配给其他店员了" ),
ERR_961008( 961008,"竞品已经存在了" ),
ERR_961009( 961009,"竞品保存失败了" ),
ERR_961010( 961010,"好办店员在gic系统中没有对应关系" ),
ERR_OTHER( -999,"未知错误code" );
private int code;
private String msg;
private HaoBanErrCode(int code,String value){
this.code = code;
this.msg = value;
}
public static HaoBanErrCode getValue(int code){
for( HaoBanErrCode sec: HaoBanErrCode.values() ){
if( code == sec.getCode() ){
return sec;
}
}
ERR_OTHER.setMsg( "未知错误code:"+code );
return ERR_OTHER;
}
public int getCode(){
return code;
}
public void setCode(int code){
this.code = code;
}
public String getMsg(){
return msg;
}
public void setMsg(String msg){
this.msg = msg;
}
}
package com.gic.haoban.app.daily.mobile.web.exception;
import com.gic.haoban.app.daily.mobile.web.controller.WebBaseController;
import com.gic.haoban.app.daily.mobile.web.errCode.HaoBanErrCode;
import com.gic.haoban.base.api.common.ShowFrontMessageException;
import com.gic.haoban.common.utils.HaobanResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
/**
* Created 2018/7/24.
*
* @author hua
*/
@ControllerAdvice
public class GlobalExceptionHandler extends WebBaseController{
private static Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ResponseBody
@ExceptionHandler(Exception.class)
public HaobanResponse ControllerException(HttpServletResponse response, Exception ex) {
logger.error("err");
ex.printStackTrace();
StringBuilder sb = new StringBuilder();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (PrintWriter printWriter = new PrintWriter(baos)) {
ex.printStackTrace(printWriter);
}
try {
sb.append(baos.toString());
} catch (Exception ignored) {
}
if (sb.length() == 0) {
sb.append(ex.getMessage());
}
// 输出详细错误信息,便于调试
return resultResponse(HaoBanErrCode.ERR_3, null, sb.toString());
}
@ResponseBody
@ExceptionHandler(ShowFrontMessageException.class)
public HaobanResponse ControllerException(HttpServletResponse response, ShowFrontMessageException ex) {
HaobanResponse res = new HaobanResponse();
res.setErrorCode(HaoBanErrCode.ERR_0.getCode());
res.setMessage(ex.getMessage());
return res;
}
}
package com.gic.haoban.app.daily.mobile.web.interceptor;
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.common.utils.HaobanResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import java.lang.reflect.Method;
/**
* Created 2019/2/20.
* @author hua
*/
@ControllerAdvice
public class ResponseInterceptor implements ResponseBodyAdvice<HaobanResponse>{
private Logger logger = LoggerFactory.getLogger( ResponseInterceptor.class );
@Override
public boolean supports(MethodParameter methodParameter,Class<? extends HttpMessageConverter<?>> aClass){
Method method = methodParameter.getMethod();
String name = method.getName();
logger.info( "method:{}",name );
return true;
}
@Override
public HaobanResponse beforeBodyWrite(HaobanResponse haobanResponse,MethodParameter methodParameter,MediaType mediaType,Class<? extends HttpMessageConverter<?>> aClass,ServerHttpRequest serverHttpRequest,ServerHttpResponse serverHttpResponse){
String response = JSONObject.toJSONString( haobanResponse );
logger.info( "response:{}",response );
return haobanResponse;
}
}
package com.gic.haoban.app.daily.mobile.web.interceptor;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* Created 2018/7/20.
* @author hua
*/
public class WebInterceptor extends HandlerInterceptorAdapter{
private static Logger logger = LoggerFactory.getLogger( WebInterceptor.class );
@Override
public boolean preHandle(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,Object o) throws Exception{
String requestURI = httpServletRequest.getRequestURI();
logger.info( "post-url:{}",requestURI );
Map<String, String[]> parameterMap = httpServletRequest.getParameterMap();
logger.info( "post-params:{}",JSONObject.toJSONString( parameterMap ) );
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,Object o,ModelAndView modelAndView) throws Exception{
logger.info( "end" );
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,Object o,Exception e) throws Exception{
logger.info( "end" );
}
}
package com.gic.haoban.app.daily.mobile.web.manage;
/**
* @author 蘑小菇
* @Description:
* @date 2019/4/19 11:27
*/
public class Info{
}
package com.gic.haoban.appyourAppmobile.web.pojo;
import java.io.Serializable;
/**
* @author 蘑小菇
* @Description: 用于接收公共参数
* @date 2019/3/12 9:43
*/
public class BasicParams implements Serializable {
/**
* gic 系统中的企业id
*/
private String gicEnterpriseId;
/**
* gic 系统中的门店id
*/
private String gicStoreId;
/**
* gic 系统中的店员id
*/
private String gicClerkId;
/**
* 好办门店id
*/
private String storeId;
/**
* 好办企业id
*/
private String enterpriseId;
/**
* 好办店员id
*/
private String clerkId;
public String getGicEnterpriseId() {
return gicEnterpriseId;
}
public void setGicEnterpriseId(String gicEnterpriseId) {
this.gicEnterpriseId = gicEnterpriseId;
}
public String getGicStoreId() {
return gicStoreId;
}
public void setGicStoreId(String gicStoreId) {
this.gicStoreId = gicStoreId;
}
public String getGicClerkId() {
return gicClerkId;
}
public void setGicClerkId(String gicClerkId) {
this.gicClerkId = gicClerkId;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
}
package com.gic.haoban.app.daily.mobile.web.utils;
import com.alibaba.fastjson.JSON;
import com.gic.commons.util.GlobalInfo;
import com.gic.commons.util.ToolUtil;
import com.gic.haoban.common.utils.AppRequestUtil;
import com.task.allocation.util.MemCachedUtil;
import net.sf.json.JSONObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
public class AppUtil {
//static MemCachedInstance memCachedInstance = MemCachedInstance.getInstance(GlobalVar.getMemCachedIp(), GlobalVar.getMemCachedPort());
private static Logger logger = LogManager.getLogger(AppUtil.class);
/**
* 创建4位验证码
* @return
*/
public static String createSMSCode() {
Random random = new Random();
StringBuilder result = new StringBuilder();
for (int i = 0; i < 4; i++) {
result.append(random.nextInt(10));
}
return result.toString();
}
/**
* 门店APP缓存验证码
* @param phoneNumber
* @param smscode
*/
public static void setSMScode(String phoneNumber, String smScode) {
Map<String, Object> map=new HashMap<String, Object>();
map.put(phoneNumber, smScode);
map.put("timeStamp", System.currentTimeMillis());
String value= JSON.toJSONString(map);
MemCachedUtil.setValue(phoneNumber+"_smsCode", value, 10*60*1000);
}
/**
* 验证码验证
* @param phoneNumber
* @param smscode
* @return
*/
public static boolean trueCode(String phoneNumber, String smscode) {
Object storeCode = MemCachedUtil.getValue(phoneNumber+"_smsCode");
Map<String, String> map = new HashMap<String, String>();
if(AppRequestUtil.notEmpty(storeCode)){
map = toMap(storeCode);
}
logger.info(phoneNumber+"缓存验证码为:"+map.get(phoneNumber)+"验证验证码为:"+smscode);
if(map.containsKey(phoneNumber) && map.get(phoneNumber).equals(smscode)){
return true;
}
return false;
}
/**
* 对象转map
* @param object
* @return
*/
@SuppressWarnings("rawtypes")
public static Map<String, String> toMap(Object object) {
Map<String, String> data = new HashMap<String, String>();
// 将json字符串转换成jsonObject
JSONObject jsonObject = JSONObject.fromObject(object);
Iterator ite = jsonObject.keys();
// 遍历jsonObject数据,添加到Map对象
while (ite.hasNext()) {
String key = ite.next().toString();
String value = jsonObject.get(key).toString();
data.put(key, value);
}
return data;
}
/**
* 百分比格式化
* @param numerator 分子
* @param denominator 分母
* @param maximum 小数点保留几位
* @return
*/
public static String returnPercent(float ft,int maximum){
NumberFormat numberFormat = NumberFormat.getPercentInstance();
numberFormat.setMaximumFractionDigits(0);
return numberFormat.format(ft);
}
/**
* token生成
* @param phoneNumber
* @return
*/
public static String creatToken(String phoneNumber){
return phoneNumber+ToolUtil.randomUUID();
}
/**
* 门店APP缓存token
* @param phoneNumber
* @param token
*/
public static void setToken(String phoneNumber, String token) {
Map<String, Object> map=new HashMap<String, Object>();
map.put(phoneNumber, token);
map.put("timeStamp", System.currentTimeMillis());
String value= JSON.toJSONString(map);
logger.info(">>>>>>>>>>>>>>>>生成token为:"+token);
MemCachedUtil.setValue(phoneNumber+"_appToken", value, 0);
}
/**
* 删除并建立新token
* @param newPhoneNumber 新手机号
* @param phoneNumber 原手机号
* @param token token
*/
public static void delAndCreateToken(String phoneNumber, String newPhoneNumber, String token) {
// 清除原TOKEN
MemCachedUtil.delete(phoneNumber+"_appToken");
Map<String, Object> map=new HashMap<String, Object>();
map.put(newPhoneNumber, token);
map.put("timeStamp", System.currentTimeMillis());
String value= JSON.toJSONString(map);
MemCachedUtil.setValue(newPhoneNumber+"_appToken", value, 0);
}
/**
* 删除TOKEN
* @param phoneNumber
*/
public static boolean delToken(String phoneNumber) {
return MemCachedUtil.delete(phoneNumber+"_appToken");
}
/**
* token校验
* @param phoneNumber
* @param token
* @return
*/
public static boolean trueToken(String phoneNumber, String token) {
Object storeCode = MemCachedUtil.getValue(phoneNumber+"_appToken");
Map<String, String> map = new HashMap<String, String>();
if(AppRequestUtil.notEmpty(storeCode)){
map = toMap(storeCode);
}
logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>缓存token为:"+map.get(phoneNumber)+"校验token为:"+token);
if(map.containsKey(phoneNumber) && map.get(phoneNumber).equals(token) && !"".equals(map.get(phoneNumber))){
return true;
}
return false;
}
public static String getToken(String phoneNumber) {
Object storeCode = MemCachedUtil.getValue(phoneNumber+"_appToken");
Map<String, String> map = new HashMap<String, String>();
if(AppRequestUtil.notEmpty(storeCode)){
map = toMap(storeCode);
return map.get(phoneNumber);
}
return null;
}
/**
* 系统当前时间
* @return
*/
public static String sysDate(){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
return df.format(new Date());// new Date()为获取当前系统时间
}
/**
* 缓存极光消息推送设备ID
* @param clerkId
* @param registrationId
*/
public static void setRegistrationId(String clerkId, String registrationId) {
Map<String, Object> map=new HashMap<String, Object>();
map.put(clerkId, registrationId);
map.put("timeStamp", System.currentTimeMillis());
String value= JSON.toJSONString(map);
logger.info(clerkId+"缓存消息推送ID为:"+registrationId);
MemCachedUtil.setValue(clerkId+GlobalInfo.SEND_REGISTRATIONID, value, 0);
}
/**
* 获取极光消息推送设备ID
* @param clerkId
* @return
*/
public static String getRegistrationId(String clerkId){
Object registrationId = MemCachedUtil.getValue(clerkId+GlobalInfo.SEND_REGISTRATIONID);
Map<String, String> map = new HashMap<String, String>();
if(AppRequestUtil.notEmpty(registrationId)){
map = toMap(registrationId);
}
if(map.containsKey(clerkId) && !"".equals(map.get(clerkId))){
return map.get(clerkId);
}
logger.info(">>>>>>>>>>>>>>>>>>>>>>缓存清空成功"+clerkId);
return null;
}
/**
* 清除极光消息推送设备ID
* @param clerkId
* @return
*/
public static void delRegistrationId(String clerkId){
logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>切换品牌清空推送设备ID"+clerkId);
MemCachedUtil.delete(clerkId+GlobalInfo.SEND_REGISTRATIONID);
getRegistrationId(clerkId);
}
/**
* DOUBLE小数点精确
* @param db DOUBLE原数据
* @param count 小数点后位数
* @return
*/
public static double formatterDouble(Double db, int count){
BigDecimal b= new BigDecimal(db);
double f1 = b.setScale(count, BigDecimal.ROUND_HALF_UP).doubleValue();
return f1;
}
/**
* 小叔点保留两位
* @param value
* @return
*/
public static String changePrecent(double value,int count) {
BigDecimal bd = new BigDecimal(value);
BigDecimal multiply = bd.multiply(new BigDecimal(100));
multiply = multiply.setScale(count, BigDecimal.ROUND_HALF_UP);
return multiply.toString()+"%";
}
}
package com.gic.haoban.app.daily.mobile.web.utils;
import org.apache.commons.lang3.StringUtils;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
/**
* @author 蘑小菇
* @Description: 基于java8 新的时间api
* @date 2019/3/28 9:42
*/
public class LocalDateTimeUtil {
/**
* 日期格式yyyy-MM-dd
*/
public static String DATE_PATTERN = "yyyy-MM-dd";
/**
* 日期时间格式yyyy-MM-dd HH:mm:ss
*/
public static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
/**
* 构造函数
*/
private LocalDateTimeUtil() {
}
/**
* 字符串转时间。格式yyyy-MM-dd HH:mm:ss
* @param date
* @return
*/
public static LocalDateTime parseLocalDateTime(String date){
if ( StringUtils.isBlank( date )){
return null;
}
date=date.length()==DATE_PATTERN.length()?date+" 00:00:00":date;
return LocalDateTime.parse( date,DateTimeFormatter.ofPattern( DATE_TIME_PATTERN ) );
}
/**
* 获得今天的时间年月日字符串
* @return
*/
public static String today() {
return formatDateTime( LocalDateTime.now(), DATE_PATTERN );
}
/**
* Date转LocalDateTime
* @param date Date对象
* @return
*/
public static LocalDateTime dateToLocalDateTime( Date date ) {
return LocalDateTime.ofInstant( date.toInstant(), ZoneId.systemDefault() );
}
/**
* LocalDateTime转换为Date
* @param dateTime LocalDateTime对象
* @return
*/
public static Date localDateTimeToDate( LocalDateTime dateTime ) {
return Date.from( dateTime.atZone( ZoneId.systemDefault() ).toInstant() );
}
/**
* 格式化时间-默认yyyy-MM-dd HH:mm:ss格式
* @param dateTime LocalDateTime对象
* @return
*/
public static String formatDateTime( LocalDateTime dateTime ) {
return formatDateTime( dateTime, DATE_TIME_PATTERN );
}
/**
* 按pattern格式化时间-默认yyyy-MM-dd HH:mm:ss格式
* @param dateTime LocalDateTime对象
* @param pattern 要格式化的字符串
* @return
*/
public static String formatDateTime( LocalDateTime dateTime, String pattern ) {
if ( dateTime == null ) {
return null;
}
if ( pattern == null || pattern.isEmpty() ) {
pattern = DATE_TIME_PATTERN;
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( pattern );
return dateTime.format( formatter );
}
/**
* 获取某天的00:00:00
* @param dateTime
* @return
*/
public static String getDayStart( LocalDateTime dateTime ) {
return formatDateTime( dateTime.with( LocalTime.MIN ) );
}
/**
* 获取某天的23:59:59
* @param dateTime
* @return
*/
public static String getDayEnd( LocalDateTime dateTime ) {
return formatDateTime( dateTime.with( LocalTime.MAX ) );
}
/**
* 获取某月第一天的00:00:00
* @param dateTime LocalDateTime对象
* @return
*/
public static String getFirstDayOfMonth( LocalDateTime dateTime ) {
return formatDateTime( dateTime.with( TemporalAdjusters.firstDayOfMonth() ).with( LocalTime.MIN ) );
}
/**
* 获取某月最后一天的23:59:59
* @param dateTime LocalDateTime对象
* @return
*/
public static String getLastDayOfMonth( LocalDateTime dateTime ) {
return formatDateTime( dateTime.with( TemporalAdjusters.lastDayOfMonth() ).with( LocalTime.MAX ) );
}
/**
* 测试
* @param args
*/
public static void main( String[] args ) {
System.out.println( today() );
}
}
dubbo.registry.file=haoban-appyourAppmobile-web
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="classpath*:gic-haoban-init.xml"/>
<import resource="classpath*:redis-init.xml"/>
<import resource="dubbo-haoban-app-daily-mobile-web.xml"/>
<import resource="classpath*:dubbo-setting.xml"/>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<context:component-scan base-package="com.gic.haoban"/>
<!-- 应用名称 -->
<dubbo:application name="haoban-app-yourApp-web"/>
<dubbo:protocol name="dubbo" port="30020"/>
<!--好办end-->
<!-- <dubbo:reference interface="com.gic.enterprise.api.service.CompetitorDictService" id="competitorDictService" timeout="20000" retries="0" check="false" />-->
</beans>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:interceptors>
<bean class="com.gic.commons.interceptor.HeaderTagInterceptor"/>
<bean class="com.gic.haoban.common.ext.PropertyViewClearInterceptor"/>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/login/**"/>
<mvc:exclude-mapping path="/favicon.ico"/>
<mvc:exclude-mapping path="/upload-img"/>
<bean class="com.gic.haoban.app.daily.mobile.web.interceptor.WebInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
</beans>
\ No newline at end of file
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
<context:component-scan base-package="com.gic.haoban.appyourAppmobile"/>
<!-- 启动对@AspectJ注解的支持 -->
<aop:aspectj-autoproxy/>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxUploadSize" value="-1"/>
</bean>
<!-- 明确js/css/jpg/gif等静态资源的访问不通过Constroller -->
<mvc:default-servlet-handler/>
<!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射 -->
<mvc:annotation-driven>
<!-- 设置不使用默认的消息转换器 -->
<mvc:message-converters register-defaults="false">
<bean class="com.gic.haoban.common.ext.MappingJackson2HttpMessagePropertyViewConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<!--默认是 iso-8859-1 -->
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 (解决中文乱码) -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<!--默认是 iso-8859-1 -->
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
</list>
</property>
</bean>
<!--
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.gic.commons.util.DateConverter"></bean>
</set>
</property>
</bean>
-->
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<!-- 扩展名至mimeType的映射,即 /user.json => application/json -->
<property name="favorPathExtension" value="true"/>
<!-- 用于开启 /userinfo/123?format=json 的支持 -->
<property name="favorParameter" value="true"/>
<property name="parameterName" value="format"/>
<!-- 是否忽略Accept Header -->
<property name="ignoreAcceptHeader" value="false"/>
<property name="mediaTypes">
<value>
html=text/html
json=application/json
</value>
</property>
<property name="defaultContentType" value="text/html"/>
</bean>
<!-- 视图解析器配置 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<!-- If no extension matched, use JSP view -->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="0"/>
<property name="contentNegotiationManager" ref="contentNegotiationManager"/>
<property name="viewResolvers">
<list>
<!-- 这个类用于jsp视图解析 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/"/>
<property name="suffix" value=".jsp"/>
</bean>
</list>
</property>
<property name="defaultViews">
<list>
<bean class="com.gic.haoban.common.ext.MappingJackson2JsonPropertyView"/>
</list>
</property>
</bean>
</beans>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-conf.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-*.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
/**/.DS_Store
/logs/
/dubbo/
/**/*.iml
/**/test/**/*.java
target/
data/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
nbproject/private/
build/
nbbuild/
dist/
nbdist/
.nb-gradle/
.settings
.classpath
.project
.springBeans
mvnw
mvnw.cmd
.mvn
/bin/
.flattened-pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.gic</groupId>
<artifactId>gic-pom-base</artifactId>
<version>3.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>haoban-app-yourApp-service</artifactId>
<version>1.0-SNAPSHOT</version>
<name>haoban-app-yourApp-service</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<haobanService>1.0-SNAPSHOT</haobanService>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.2.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-common</artifactId>
<version>${haobanService}</version>
<exclusions>
<exclusion>
<artifactId>javassist</artifactId>
<groupId>javassist</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.24.1-GA</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-config</artifactId>
<version>${haobanService}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-app-yourApp-api</artifactId>
<version>${haobanService}</version>
</dependency>
</dependencies>
<build>
<finalName>haoban-app-yourApp-service</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>target/classes/</classesDirectory>
<archive>
<manifest>
<mainClass>com.alibaba.dubbo.container.Main</mainClass>
<!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<type>jar</type>
<includeTypes>jar</includeTypes>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
package com.gic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Hello world!
* @author yaorw
*/
public class YourApp{
private static Logger logger = LoggerFactory.getLogger( YourApp.class );
public static void main(String[] args){
com.alibaba.dubbo.container.Main.main( args );
logger.info( "Hello,provider启动了" );
}
}
package com.gic.haoban.appyourAppservice.constant;
/**
* 常量定义
*/
public class RouterConstant {
/**
* 云日报_appcode
*/
public final static String APP_CODE = "clerk_report";
}
package com.gic.haoban.app.daily.service.entity;
/**
* @author 蘑小菇
* @Description:
* @date 2019/4/19 11:23
*/
public class TestModel{
}
package com.gic.haoban.appyourAppservice.mapper;
import java.io.Serializable;
import java.util.List;
import org.apache.ibatis.annotations.Param;
/**
* DAO公共基类,由MybatisGenerator自动生成请勿修改
* @param <Model> The Model Class 这里是泛型不是Model类
* @param <PK> The Primary Key Class 如果是无主键,则可以用Model来跳过,如果是多主键则是Key类
*/
public interface MyBatisBaseDao<Model, PK extends Serializable> {
int deleteByPrimaryKey(PK id);
int insert(Model record);
int insertSelective(Model record);
Model selectByPrimaryKey(PK id);
int updateByPrimaryKeySelective(Model record);
int updateByPrimaryKey(Model record);
}
\ No newline at end of file
package com.gic.haoban.appyourAppservice.pojo;
/**
* @author 蘑小菇
* @Description: 日报消息参数
* @date 2019/3/29 10:29
*/
public class DailyMessage {
private String haobanEnterpriseId;
private String clerkId;
private String taskId;
public DailyMessage(){
}
public DailyMessage(String haobanEnterpriseId,String clerkId,String taskId ){
this.haobanEnterpriseId = haobanEnterpriseId;
this.clerkId = clerkId;
this.taskId = taskId;
}
public String getHaobanEnterpriseId() {
return haobanEnterpriseId;
}
public void setHaobanEnterpriseId( String haobanEnterpriseId ) {
this.haobanEnterpriseId = haobanEnterpriseId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId( String clerkId ) {
this.clerkId = clerkId;
}
public String getTaskId() {
return taskId;
}
public void setTaskId( String taskId ) {
this.taskId = taskId;
}
}
package com.gic.haoban.appyourAppservice.pojo;
/**
* @author 蘑小菇
* @Description:
* @date 2019/4/18 13:21
*/
public class TemplateICompment {
private Integer classify;
private boolean canDel;
private boolean systemFlag;
private boolean fixed;
private int memory;
private int sort;
private int type;
private int isMust;
private int openCapitalize;
private String title;
private String parentCode;
private String name;
private String placeholder;
private String cid;
public Integer getClassify(){
return classify;
}
public void setClassify(Integer classify){
this.classify = classify;
}
public boolean isCanDel(){
return canDel;
}
public void setCanDel(boolean canDel){
this.canDel = canDel;
}
public boolean isSystemFlag(){
return systemFlag;
}
public void setSystemFlag(boolean systemFlag){
this.systemFlag = systemFlag;
}
public boolean isFixed(){
return fixed;
}
public void setFixed(boolean fixed){
this.fixed = fixed;
}
public int getMemory(){
return memory;
}
public void setMemory(int memory){
this.memory = memory;
}
public int getSort(){
return sort;
}
public void setSort(int sort){
this.sort = sort;
}
public int getType(){
return type;
}
public void setType(int type){
this.type = type;
}
public int getIsMust(){
return isMust;
}
public void setIsMust(int isMust){
this.isMust = isMust;
}
public int getOpenCapitalize(){
return openCapitalize;
}
public void setOpenCapitalize(int openCapitalize){
this.openCapitalize = openCapitalize;
}
public String getTitle(){
return title;
}
public void setTitle(String title){
this.title = title;
}
public String getParentCode(){
return parentCode;
}
public void setParentCode(String parentCode){
this.parentCode = parentCode;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getPlaceholder(){
return placeholder;
}
public void setPlaceholder(String placeholder){
this.placeholder = placeholder;
}
public String getCid(){
return cid;
}
public void setCid(String cid){
this.cid = cid;
}
}
package com.gic.haoban.app.daily.service.service.local;
/**
* @author 蘑小菇
* @Description:
* @date 2019/4/19 11:26
*/
public class Info{
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="classpath:gic-haoban-init.xml"/>
<import resource="classpath:dubbo-haoban-app-daily-service.xml"/>
<import resource="classpath*:dubbo-setting.xml"/>
<import resource="classpath:jdbc-haoban-app-daily-service.xml"/>
<import resource="classpath*:redis-init.xml"/>
</beans>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<context:component-scan base-package="com.gic.haoban.*"/>
<context:component-scan base-package="com.gic.redis.*"/>
<!-- 应用名称 -->
<dubbo:application name="haoban-appyourAppservice"/>
<dubbo:protocol name="dubbo" port="30022"/>
<!-- <dubbo:reference interface="com.gic.enterprise.api.service.StoreService" id="storeService" check="false"/>-->
</beans>
dubbo.registry.file=haoban-app-yourApp-service
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:annotation-config/>
<!--<context:component-scan base-package="com.gic.cloud" />-->
<!--<context:property-placeholder location="classpath*:jdbc-haoban.properties" ignore-unresolvable="true" />-->
<import resource="classpath*:applicationContext-db-only-with-emoji.xml"/>
<bean class="com.gic.haoban.common.init.HaobanSqlSessionFactoryBean" id="sqlSessionFactory">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.gic.haoban.**.entity,com.gic.haoban.*.entity"/>
<property name="mapperLocations" value="classpath*:mapper/*.xml"/>
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>
dialect=mysql
</value>
</property>
</bean>
</array>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.gic.haoban"/>
<property name="annotationClass" value="org.apache.ibatis.annotations.Mapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 事务管理器 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
</beans>
\ No newline at end of file
/**/.DS_Store
/logs/
/dubbo/
/**/*.iml
/**/test/**/*.java
target/
data/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
nbproject/private/
build/
nbbuild/
dist/
nbdist/
.nb-gradle/
.settings
.classpath
.project
.springBeans
mvnw
mvnw.cmd
.mvn
/bin/
.flattened-pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.gic</groupId>
<artifactId>gic-pom-base</artifactId>
<version>3.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>haoban-app-yourApp-web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>haoban-app-yourApp-web Maven Webapp</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<haobanService>1.0-SNAPSHOT</haobanService>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.2.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-config</artifactId>
<version>${haobanService}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-app-yourApp-api</artifactId>
<version>${haobanService}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-common</artifactId>
<version>${haobanService}</version>
<exclusions>
<exclusion>
<artifactId>javassist</artifactId>
<groupId>javassist</groupId>
</exclusion>
</exclusions>
</dependency>
<!--好办end-->
<!--GIC end -->
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.24.1-GA</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>haoban-app-yourApp-web</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>target/classes/</classesDirectory>
<archive>
<manifest>
<mainClass>com.alibaba.dubbo.container.Main</mainClass>
<!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<type>jar</type>
<includeTypes>jar</includeTypes>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.12.RC2</version>
<configuration>
<stopKey>gic-mall</stopKey>
<httpConnector>
<port>801</port>
</httpConnector>
<webApp>
<contextPath>/</contextPath>
</webApp>
</configuration>
</plugin>
</plugins>
</build>
</project>
package com.gic.haoban.app.daily.web.controller;
/**
* Created 2018/7/18.
* @author hua
*/
public class WebBaseController{
}
package com.gic.haoban.app.daily.web.errcode;
/**
* Created by hua on 2019/2/26.
*/
public enum HaoBanErrCode{
/**
* 操作失败
*/
ERR_0( 0,"操作失败" ),
/**
* 操作成功
*/
ERR_1( 1,"操作成功" ),
/**
* 缺少参数
*/
ERR_2( 2,"缺少参数" ),
/**
* 系统异常
*/
ERR_3( 3,"系统异常" ),
ERR_100000( 100000,"品牌在GIC平台没有没有对应关系" ),
ERR_100001( 100001,"预览日报,参数不能为空" ),
ERR_100002( 100002,"删除日报任务失败" ),
ERR_OTHER( -999,"未知错误code" );
private int code;
private String msg;
private HaoBanErrCode(int code,String value){
this.code = code;
this.msg = value;
}
public static HaoBanErrCode getValue(int code){
for( HaoBanErrCode sec: HaoBanErrCode.values() ){
if( code == sec.getCode() ){
return sec;
}
}
ERR_OTHER.setMsg( "未知错误code:"+code );
return ERR_OTHER;
}
public int getCode(){
return code;
}
public void setCode(int code){
this.code = code;
}
public String getMsg(){
return msg;
}
public void setMsg(String msg){
this.msg = msg;
}
}
package com.gic.haoban.appyourAppweb.exception;
import com.gic.haoban.app.daily.web.controller.WebBaseController;
import com.gic.haoban.app.daily.web.errcode.HaoBanErrCode;
import com.gic.haoban.app.daily.web.utils.ResultBuilder;
import com.gic.haoban.base.api.common.ShowFrontMessageException;
import com.gic.haoban.common.utils.HaobanResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
/**
* Created 2018/7/24.
*
* @author hua
*/
@ControllerAdvice
public class GlobalExceptionHandler extends WebBaseController{
private static Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ResponseBody
@ExceptionHandler(Exception.class)
public HaobanResponse ControllerException(HttpServletResponse response, Exception ex) {
logger.error("err");
ex.printStackTrace();
HaoBanErrCode errCode = HaoBanErrCode.ERR_3;
StringBuilder sb = new StringBuilder();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (PrintWriter printWriter = new PrintWriter(baos)) {
ex.printStackTrace(printWriter);
}
try {
sb.append(baos.toString());
} catch (Exception ignored) {
}
if (sb.length() == 0) {
sb.append(ex.getMessage());
}
// 输出详细错误信息,便于调试
return ResultBuilder.build(errCode, null, sb.toString());
}
@ResponseBody
@ExceptionHandler(ShowFrontMessageException.class)
public HaobanResponse ControllerException(HttpServletResponse response, ShowFrontMessageException ex) {
HaobanResponse res = new HaobanResponse();
res.setErrorCode(HaoBanErrCode.ERR_0.getCode());
res.setMessage(ex.getMessage());
return res;
}
}
package com.gic.haoban.app.daily.web.interceptor;
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.common.utils.HaobanResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import java.lang.reflect.Method;
/**
* Created 2019/2/20.
*
* @author hua
*/
@ControllerAdvice
public class ResponseInterceptor implements ResponseBodyAdvice<HaobanResponse> {
private Logger logger = LoggerFactory.getLogger(ResponseInterceptor.class);
@Override
public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {
Method method = methodParameter.getMethod();
String name = method.getName();
logger.info("method:{}", name);
return true;
}
@Override
public HaobanResponse beforeBodyWrite(HaobanResponse haobanResponse, MethodParameter methodParameter, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
String response = JSONObject.toJSONString(haobanResponse);
logger.info("response:{}", response);
return haobanResponse;
}
}
package com.gic.haoban.app.daily.web.interceptor;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* Created 2018/7/20.
*
* @author hua
*/
public class WebInterceptor extends HandlerInterceptorAdapter {
private static Logger logger = LoggerFactory.getLogger(WebInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
String requestURI = httpServletRequest.getRequestURI();
logger.info("post-url:{}", requestURI);
Map<String, String[]> parameterMap = httpServletRequest.getParameterMap();
logger.info("post-params:{}", JSONObject.toJSONString(parameterMap));
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
logger.info("end");
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
logger.info("end");
}
}
package com.gic.haoban.app.daily.web.pojo;
import com.gic.haoban.base.api.common.BasePageInfo;
/**
* @author 蘑小菇
* @Description: currentPage 兼容这个参数
* @date 2019/4/4 13:57
*/
public class PageInfoQo extends BasePageInfo{
private int currentPage;
public int getCurrentPage(){
return currentPage;
}
public void setCurrentPage(int currentPage){
this.currentPage = currentPage;
super.setPageNum( currentPage );
}
}
package com.gic.haoban.app.daily.web.utils;
import com.gic.haoban.app.daily.web.errcode.HaoBanErrCode;
import com.gic.haoban.common.utils.HaobanResponse;
/**
* @author 蘑小菇
* @Description:
* @date 2019/3/4 16:45
*/
public class ResultBuilder {
public static HaobanResponse build(HaoBanErrCode errCode,Object data,String detailError) {
HaobanResponse response = new HaobanResponse();
response.setMessage(errCode.getMsg());
response.setErrorCode(errCode.getCode());
response.setResult(data);
response.setDetailError(detailError);
return response;
}
/**
* 返回成功的结果
* @param data
* @return
*/
public static HaobanResponse success(Object data) {
return build(HaoBanErrCode.ERR_1, data, "");
}
public static HaobanResponse successMsg(String msg) {
HaobanResponse response = new HaobanResponse();
response.setMessage(msg);
response.setErrorCode(HaoBanErrCode.ERR_1.getCode());
response.setResult(null);
response.setDetailError("");
return response;
}
public static HaobanResponse fail(HaoBanErrCode errCode, String detailError) {
return build(errCode, null, detailError);
}
public static HaobanResponse fail(String detailError) {
return build(HaoBanErrCode.ERR_0, null, detailError);
}
public static HaobanResponse fail(HaoBanErrCode errCode) {
return build(errCode, null, null);
}
}
dubbo.registry.file=haoban-app-yourApp-web
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="classpath*:gic-haoban-init.xml"/>
<import resource="classpath*:redis-init.xml"/>
<import resource="dubbo-haoban-app-daily-web.xml"/>
<import resource="classpath*:dubbo-setting.xml"/>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<context:component-scan base-package="com.gic.haoban"/>
<!-- 应用名称 -->
<dubbo:application name="haoban-appyourAppweb"/>
<dubbo:protocol name="dubbo" port="30021"/>
<!-- <dubbo:reference interface="com.gic.haoban.appyourAppapi.service.DailyReportSettingApiService" id=yourAppeportSettingApiService" check="false"/>-->
</beans>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:interceptors>
<bean class="com.gic.commons.interceptor.HeaderTagInterceptor"/>
<bean class="com.gic.haoban.common.ext.PropertyViewClearInterceptor"/>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/login/**"/>
<mvc:exclude-mapping path="/favicon.ico"/>
<mvc:exclude-mapping path="/upload-img"/>
<bean class="com.gic.haoban.app.daily.web.interceptor.WebInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
</beans>
\ No newline at end of file
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
<context:component-scan base-package="com.gic.haoban.*"/>
<!-- 启动对@AspectJ注解的支持 -->
<aop:aspectj-autoproxy/>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxUploadSize" value="-1"/>
</bean>
<!-- 明确js/css/jpg/gif等静态资源的访问不通过 Constroller -->
<mvc:default-servlet-handler/>
<!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射 -->
<mvc:annotation-driven>
<!-- 设置不使用默认的消息转换器 -->
<mvc:message-converters register-defaults="false">
<bean class="com.gic.haoban.common.ext.MappingJackson2HttpMessagePropertyViewConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<!--默认是 iso-8859-1 -->
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 (解决中文乱码) -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<!--默认是 iso-8859-1 -->
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
</list>
</property>
</bean>
<!---->
<!--<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">-->
<!--<property name="converters">-->
<!--<set>-->
<!--<bean class="com.gic.commons.util.DateConverter"></bean>-->
<!--</set>-->
<!--</property>-->
<!--</bean>-->
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<!-- 扩展名至mimeType的映射,即 /user.json => application/json -->
<property name="favorPathExtension" value="true"/>
<!-- 用于开启 /userinfo/123?format=json 的支持 -->
<property name="favorParameter" value="true"/>
<property name="parameterName" value="format"/>
<!-- 是否忽略Accept Header -->
<property name="ignoreAcceptHeader" value="false"/>
<property name="mediaTypes">
<value>
html=text/html
json=application/json
</value>
</property>
<property name="defaultContentType" value="text/html"/>
</bean>
<!-- 视图解析器配置 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<!-- If no extension matched, use JSP view -->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="0"/>
<property name="contentNegotiationManager" ref="contentNegotiationManager"/>
<property name="viewResolvers">
<list>
<!-- 这个类用于jsp视图解析 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/"/>
<property name="suffix" value=".jsp"/>
</bean>
</list>
</property>
<property name="defaultViews">
<list>
<bean class="com.gic.haoban.common.ext.MappingJackson2JsonPropertyView"/>
</list>
</property>
</bean>
</beans>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-conf.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-*.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gic</groupId>
<artifactId>haoban-app-yourApp</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>haoban-app-yourApp-api</module>
<module>haoban-app-yourApp-service</module>
<module>haoban-app-yourApp-web</module>
<module>haoban-app-yourApp-mobile-web</module>
</modules>
</project>
\ No newline at end of file
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