提交 38b9875f authored 作者: chenxinchang's avatar chenxinchang

--no commit message

上级 3d66010b
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="test" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="target/generated-sources/annotations">
<attributes>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.zrqx.member</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.springframework.ide.eclipse.boot.validation.springbootbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=UTF-8
encoding//src/test/resources=UTF-8
encoding/<project>=UTF-8
eclipse.preferences.version=1
org.eclipse.jdt.apt.aptEnabled=true
org.eclipse.jdt.apt.genSrcDir=target\\generated-sources\\annotations
org.eclipse.jdt.apt.genTestSrcDir=target\\generated-test-sources\\test-annotations
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.processAnnotations=enabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
boot.validation.initialized=true
eclipse.preferences.version=1
<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>
<artifactId>com.zrqx.member</artifactId>
<name>com.zrqx.member</name>
<description>产品-会员模块</description>
<parent>
<groupId>com.zrqx</groupId>
<artifactId>com.zrqx.pom</artifactId>
<version>4.0.0</version>
<relativePath>../com.zrqx.pom</relativePath>
</parent>
<dependencies>
<!-- core包 -->
<dependency>
<groupId>com.zrqx</groupId>
<artifactId>core</artifactId>
</dependency>
<!-- redis 集成 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- cloud zipkin -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!-- eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- config -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!--表示为web工程 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 用于健康监控 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--熔断器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<!-- <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId>
</dependency> -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<!-- Springsecurity给服务端提供安全访问 -->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency> -->
<!--用于测试的 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- fastJson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>../lib/</classpathPrefix>
<mainClass>com.zrqx.server.ServerStart</mainClass>
</manifest>
</archive>
<outputDirectory>${project.build.directory}/${project.artifactId}</outputDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-lib</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<includeScope>compile</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/resources/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- spring boot打包 <plugin> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <configuration> <finalName>${project.artifactId}</finalName>
</configuration> </plugin> -->
</plugins>
</build>
</project>
\ No newline at end of file
package com.zrqx.member;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.alibaba.druid.pool.DruidDataSource;
import tk.mybatis.spring.annotation.MapperScan;
@EnableFeignClients
@EnableDiscoveryClient
@EnableHystrix
@EnableHystrixDashboard
@SpringBootApplication // 系统会去入口类的同级包以及下级包中去扫描实体类,因此我们建议入口类的位置在groupId+arctifactID组合的包名下。
@MapperScan(basePackages = {"com.zrqx.member.*.*.mapper"})
public class Application {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
private final static Logger logger = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
logger.info("member 服务已启动.....");
}
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);
dataSource.setUsername(username);// 用户名
dataSource.setPassword(password);// 密码
dataSource.setInitialSize(10);
dataSource.setMaxActive(200);
dataSource.setMaxWait(60000);
dataSource.setValidationQuery("SELECT 1");
dataSource.setTestOnBorrow(false);
dataSource.setTestWhileIdle(true);
dataSource.setPoolPreparedStatements(false);
return dataSource;
}
}
package com.zrqx.member.bg.emember.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zrqx.core.constant.member.MemberRequestPath;
import com.zrqx.core.exception.FailedException;
import com.zrqx.core.exception.ParameterValidateException;
import com.zrqx.core.model.member.ExpertMember;
import com.zrqx.core.util.response.CallBack;
import com.zrqx.member.bg.emember.service.ExpertMemberService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 专家用户信息 Controller
*/
@RestController
@RequestMapping(MemberRequestPath.BG+MemberRequestPath.E_MEMBER)
@Api(description = "会员管理-专家用户信息")
public class ExpertMemberController {
private final static Logger logger = LoggerFactory.getLogger(ExpertMemberController.class);
/** 专家用户service */
@Autowired
private ExpertMemberService service;
@ApiOperation(value = "新增专家用户信息", notes = "新增专家用户")
@PostMapping(value = MemberRequestPath.SAVE)
public CallBack<Integer> insert(@Validated @RequestBody ExpertMember entity) {
if(service.insert(entity)) {
throw new FailedException();
};
return CallBack.success(entity.getId());
}
@ApiOperation(value = "修改专家用户信息", notes = "修改专家用户信息")
@PostMapping(value = MemberRequestPath.UPDATE)
public CallBack<Boolean> update(@Validated @RequestBody ExpertMember entity) {
ExpertMember member = service.selectByPrimaryKey(entity.getId());
if(member == null) {
throw new ParameterValidateException("用户id错误!");
}
BeanUtils.copyProperties(entity, member);
if(service.updateByPrimaryKey(member)) {
throw new FailedException();
}
return CallBack.success();
}
}
package com.zrqx.member.bg.emember.mapper;
import com.zrqx.core.model.member.ExpertMember;
import com.zrqx.core.mapper.BaseMapper;
public interface ExpertMemberMapper extends BaseMapper<ExpertMember>{
}
package com.zrqx.member.bg.emember.service;
import com.zrqx.core.model.member.ExpertMember;
import com.zrqx.core.service.BaseService;
public interface ExpertMemberService extends BaseService<ExpertMember, Integer> {
void save();
void update();
}
package com.zrqx.member.bg.emember.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.member.ExpertMember;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.member.bg.emember.mapper.ExpertMemberMapper;
@Service
public class ExpertMemberServiceImpl extends BaseServiceImpl<ExpertMember,Integer> implements ExpertMemberService {
@Autowired
private ExpertMemberMapper mapper;
@Override
public BaseMapper<ExpertMember> getMapper() {
return mapper;
}
@Override
public void save() {
// TODO Auto-generated method stub
}
@Override
public void update() {
// TODO Auto-generated method stub
}
}
package com.zrqx.member.bg.member.controller;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zrqx.core.constant.member.MemberRequestPath;
import com.zrqx.core.enums.ResponseCodeEnum;
import com.zrqx.core.enums.StatusEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.exception.BusinessValidateException;
import com.zrqx.core.exception.FailedException;
import com.zrqx.core.exception.ParameterValidateException;
import com.zrqx.core.form.member.bg.member.QueryMemberForm;
import com.zrqx.core.form.member.bg.member.QueryPayInfoForm;
import com.zrqx.core.model.member.Member;
import com.zrqx.core.model.member.PayInfo;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.core.util.response.CallBack;
import com.zrqx.core.vo.member.bg.member.MemberListVO;
import com.zrqx.member.bg.member.service.MemberService;
import com.zrqx.member.bg.member.service.PayInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import tk.mybatis.mapper.entity.Example.Criteria;
/**
* 用户基础信息 Controller
*/
@RestController
@RequestMapping(MemberRequestPath.BG+MemberRequestPath.MEMBER)
@Api(description = "会员管理-用户基础信息")
public class MemberController {
private final static Logger logger = LoggerFactory.getLogger(MemberController.class);
/** 用户基础信息service */
@Autowired
private MemberService service;
/** 用户支付记录service */
@Autowired
private PayInfoService payInfoService;
@ApiOperation(value = "查询会员账号是否存在", notes = "查询会员账号是否存在-普通用户和专家用户 共用此接口")
@GetMapping(value = MemberRequestPath.ISEXIST)
public CallBack<Boolean> isExistByAccount(Integer id, String account) {
return CallBack.success(isExist(id,account) != null);
}
@ApiOperation(value = "新增会员", notes = "新增一个会员,返回id-普通用户和专家用户 共用此接口")
@PostMapping(value = MemberRequestPath.SAVE)
public CallBack<Integer> insert(@Validated @RequestBody Member entity) {
if(isExist(null,entity.getAccount()) != null) {
throw new BusinessValidateException("用户已存在!");
}
entity.setCreateTime(new Date());
if(service.insertSelective(entity)) {
throw new FailedException();
};
return CallBack.success(entity.getId());
}
@ApiOperation(value = "删除", notes = "删除")
@PostMapping(value = MemberRequestPath.BATCH_DELETE)
public CallBack<Boolean> deleteByIds(@RequestBody List<Integer> ids) {
service.createCriteria().andIn("id", ids);
Member entity = new Member();
entity.setStatus(StatusEnum.DELETE.getCode());//逻辑删除
if (!service.updateByCriteriaSelective(entity)) {
throw new BaseException(ResponseCodeEnum.FAIL);
}
return CallBack.success(true);
}
@ApiOperation(value = "修改会员", notes = "修改一个会员-普通用户和专家用户 共用此接口")
@PostMapping(value = MemberRequestPath.UPDATE)
public CallBack<Boolean> update(@RequestBody Member entity) {
if(isExist(entity.getId(),entity.getAccount()) != null) {
throw new BusinessValidateException("用户已存在!");
}
Member member = service.selectByPrimaryKey(entity.getId());
if(member == null) {
throw new ParameterValidateException("用户id错误!");
}
BeanUtils.copyProperties(entity, member);
if(service.updateByPrimaryKey(member)) {
throw new FailedException();
}
return CallBack.success();
}
@ApiOperation(value = "查询", notes = "根据ID查询-普通用户和专家用户 共用此接口")
@GetMapping(value = MemberRequestPath.OID)
public CallBack<Member> getById(@PathVariable Integer oid) {
Member member = service.selectByPrimaryKey(oid);
if(member == null) {
throw new ParameterValidateException("用户id错误!");
}
return CallBack.success(member);
}
@ApiOperation(value = "分页查询", notes = "分页查询-普通用户和专家用户 共用此接口")
@GetMapping(value = MemberRequestPath.PAGE)
public CallBack<PageInfo<MemberListVO>> getMemberPage(QueryMemberForm form,PageParam pageParam) {
if(StringUtils.isBlank(pageParam.getOrderBy())){
pageParam.setOrderBy("createTime desc");
}
return CallBack.success(service.page(form, pageParam));
}
@ApiOperation(value = "分页查询支付记录", notes = "分页查询-普通用户和专家用户支付记录 共用此接口")
@GetMapping(value =MemberRequestPath.PAY_INFO + MemberRequestPath.PAGE)
public CallBack<PageInfo<PayInfo>> getPayInfoPage(@Validated QueryPayInfoForm form,PageParam pageParam) {
if(StringUtils.isBlank(pageParam.getOrderBy())){
pageParam.setOrderBy("createTime desc");
}
Criteria cr = service.createCriteria();
if (form.getScore() != null) {
cr.andEqualTo("score", form.getScore());
}
if (StringUtils.isNotBlank(form.getBeginTime())) {
cr.andGreaterThanOrEqualTo("createTime", form.getBeginTime());
}
if (StringUtils.isNotBlank(form.getEndTime())) {
cr.andLessThanOrEqualTo("createTime", form.getEndTime());
}
return CallBack.success(payInfoService.queryCriteria(pageParam));
}
@ApiOperation(value = "批量设置会员状态", notes = "批量设置会员状态-普通用户和专家用户 共用此接口")
@PostMapping(value = MemberRequestPath.BATCH_UPDATE + MemberRequestPath.STATUS+ MemberRequestPath.VALUE)
public CallBack<Boolean> updateStatus(@PathVariable("value") Integer value, @RequestBody List<Integer> ids) {
if (!StatusEnum.isExist(value)) {
throw new ParameterValidateException("会员状态参数不正确!");
}
service.createCriteria().andIn("id", ids);
Member m = new Member();
m.setStatus(value);
if(!service.updateByCriteriaSelective(m)) {
throw new FailedException();
}
return CallBack.success();
}
/**
* 判断 账号是否已存在
* @param id
* @param account
* @return
*/
public Member isExist(Integer id, String account) {
Criteria cr = service.createCriteria();
cr.andEqualTo("account", account);
if (id != null) {
cr.andNotEqualTo("id", id);
}
return service.selectOneByCriteria();
}
}
package com.zrqx.member.bg.member.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.form.member.bg.member.QueryMemberForm;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.member.Member;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.core.vo.member.bg.member.MemberListVO;
public interface MemberMapper extends BaseMapper<Member>{
@Select("<script> select id,account,status,balance,level,createTime m_member m"
+ " where status != 2"
+ "<if test = '"+NOTBLANK+"(account)' >"
+ " and m.account like concat(#{account},'%') "
+ "</if>"
+ "<if test = '"+NOTBLANK+"(phone)' >"
+ " and m.phone like concat(#{phone},'%') "
+ "</if>"
+ "<if test = 'status != null' >"
+ " and m.status = #{status} "
+ "</if>"
+ "<if test = '"+NOTBLANK+"(beginTime)' >"
+ "<![CDATA["
+ " and m.createTime >= #{beginTime} "
+ "]]>"
+ "</if>"
+ "<if test = '"+NOTBLANK+"(endTime)' >"
+ "<![CDATA["
+ " and m.createTime <= #{endTime} "
+ "]]>"
+ "</if>"
+ "</script>")
public List<MemberListVO> page(QueryMemberForm form, PageParam pageParam);
}
package com.zrqx.member.bg.member.mapper;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.member.PayInfo;
public interface PayInfoMapper extends BaseMapper<PayInfo>{
}
package com.zrqx.member.bg.member.service;
import com.zrqx.core.form.member.bg.member.QueryMemberForm;
import com.zrqx.core.model.member.Member;
import com.zrqx.core.service.BaseService;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.core.vo.member.bg.member.MemberListVO;
public interface MemberService extends BaseService<Member, Integer> {
PageInfo<MemberListVO> page(QueryMemberForm form,PageParam pageParam);
}
package com.zrqx.member.bg.member.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.form.member.bg.member.QueryMemberForm;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.member.Member;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.core.vo.member.bg.member.MemberListVO;
import com.zrqx.member.bg.member.mapper.MemberMapper;
@Service
public class MemberServiceImpl extends BaseServiceImpl<Member,Integer> implements MemberService {
@Autowired
private MemberMapper mapper;
@Override
public BaseMapper<Member> getMapper() {
return mapper;
}
@Override
public PageInfo<MemberListVO> page(QueryMemberForm form, PageParam pageParam) {
startPage(pageParam);
return new PageInfo<MemberListVO>(mapper.page(form, pageParam));
}
}
package com.zrqx.member.bg.member.service;
import com.zrqx.core.model.member.PayInfo;
import com.zrqx.core.service.BaseService;
public interface PayInfoService extends BaseService<PayInfo, Integer> {
}
package com.zrqx.member.bg.member.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.member.PayInfo;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.member.bg.member.mapper.PayInfoMapper;
@Service
public class PayInfoServiceImpl extends BaseServiceImpl<PayInfo,Integer> implements PayInfoService {
@Autowired
private PayInfoMapper mapper;
@Override
public BaseMapper<PayInfo> getMapper() {
return mapper;
}
}
package com.zrqx.member.bg.omember.controller;
public class OrganMemberController {
}
package com.zrqx.member.bg.omember.mapper;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.member.OrganMember;
public interface OrganMemberMapper extends BaseMapper<OrganMember>{
}
package com.zrqx.member.bg.omember.service;
public interface OrganMemberService {
}
package com.zrqx.member.bg.omember.service;
public class OrganMemberServiceImpl {
}
package com.zrqx.member.bg.organ.controller;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zrqx.core.constant.member.MemberRequestPath;
import com.zrqx.core.enums.ResponseCodeEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.form.member.bg.organ.QueryOrganForm;
import com.zrqx.core.form.member.bg.organ.SaveOrUpdateOrganForm;
import com.zrqx.core.model.member.Organ;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.core.util.response.CallBack;
import com.zrqx.core.vo.member.bg.organ.OrganVO;
import com.zrqx.member.bg.organ.service.OrganService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import tk.mybatis.mapper.entity.Example.Criteria;
/**
* 机构 Controller
*/
@RestController
@RequestMapping(MemberRequestPath.BG+MemberRequestPath.ORGAN)
@Api(description = "会员管理-机构")
public class OrganController {
@Autowired
private OrganService service;
@ApiOperation(value = "保存", notes = "无id新增,有id更新")
@PostMapping(value = MemberRequestPath.SAVE)
public CallBack<Boolean> save(@Validated @RequestBody SaveOrUpdateOrganForm organ) {
if(organ.getId() == null) {
Organ entity = new Organ();
BeanUtils.copyProperties(organ, entity);
entity.setCreateTime(new Date());
if (!service.insert(entity)) {
throw new BaseException(ResponseCodeEnum.FAIL);
}
}else {
Organ entity = service.selectByPrimaryKey(organ.getId());
BeanUtils.copyProperties(organ, entity);
entity.setUpdateTime(new Date());
if (!service.updateByPrimaryKey(entity)) {
throw new BaseException(ResponseCodeEnum.FAIL);
}
}
return CallBack.success(true);
}
@ApiOperation(value = "删除", notes = "删除")
@PostMapping(value = MemberRequestPath.DELETE_OID)
public CallBack<Boolean> deleteByIds(@PathVariable Integer oid) {
if (!service.deleteByPrimaryKey(oid)) {
throw new BaseException(ResponseCodeEnum.FAIL);
}
return CallBack.success(true);
}
@ApiOperation(value = "检查机构码是否已存在", notes = "检查机构码是否已存在")
@GetMapping(value = MemberRequestPath.ISEXIST)
public CallBack<Boolean> getByTypeName(Integer id, String code) {
Criteria cr = service.createCriteria();
cr.andEqualTo("code",code);
if(id != null){
cr.andNotEqualTo("id", id);
}
return CallBack.success(service.selectOneByCriteria() != null);
}
@ApiOperation(value = "查询", notes = "根据ID查询")
@GetMapping(value = MemberRequestPath.OID)
public CallBack<OrganVO> getById(@PathVariable Integer oid) {
Organ entity = service.selectByPrimaryKey(oid);
OrganVO vo = new OrganVO();
BeanUtils.copyProperties(entity,vo);
return CallBack.success(vo);
}
@ApiOperation(value = "分页查询", notes = "分页查询")
@GetMapping(value = MemberRequestPath.PAGE)
public CallBack<PageInfo<Organ>> getUserPage(QueryOrganForm form,PageParam pageParam) {
if(StringUtils.isBlank(pageParam.getOrderBy())){
pageParam.setOrderBy("createTime desc");
}
Criteria cr = service.createCriteria();
if (StringUtils.isNotBlank(form.getName())) {
cr.andLike("name", form.getName() + "%");
}
if (StringUtils.isNotBlank(form.getCode())) {
cr.andLike("code", form.getCode() + "%");
}
if (form.getType() != null) {
cr.andEqualTo("type", form.getType());
}
if (StringUtils.isNotBlank(form.getBeginTime())) {
cr.andGreaterThanOrEqualTo("beginTime", form.getBeginTime());
}
if (StringUtils.isNotBlank(form.getEndTime())) {
cr.andLessThanOrEqualTo("beginTime", form.getEndTime());
}
return CallBack.success(service.queryCriteria(pageParam));
}
}
package com.zrqx.member.bg.organ.mapper;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.member.Organ;
public interface OrganMapper extends BaseMapper<Organ>{
}
package com.zrqx.member.bg.organ.service;
import com.zrqx.core.model.member.Organ;
import com.zrqx.core.service.BaseService;
public interface OrganService extends BaseService<Organ, Integer> {
}
package com.zrqx.member.bg.organ.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.member.Organ;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.member.bg.organ.mapper.OrganMapper;
@Service
public class OrganServiceImpl extends BaseServiceImpl<Organ,Integer> implements OrganService {
@Autowired
private OrganMapper mapper;
@Override
public BaseMapper<Organ> getMapper() {
return mapper;
}
}
package com.zrqx.member.bg.pmember.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zrqx.core.constant.member.MemberRequestPath;
import com.zrqx.core.exception.FailedException;
import com.zrqx.core.exception.ParameterValidateException;
import com.zrqx.core.model.member.PersonalMember;
import com.zrqx.core.util.response.CallBack;
import com.zrqx.member.bg.pmember.service.PersonalMemberService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 普通用户信息 Controller
*/
@RestController
@RequestMapping(MemberRequestPath.BG+MemberRequestPath.P_MEMBER)
@Api(description = "会员管理-普通用户信息")
public class PersonalMemberController {
private final static Logger logger = LoggerFactory.getLogger(PersonalMemberController.class);
/** 个人用户service */
@Autowired
private PersonalMemberService service;
@ApiOperation(value = "新增专家用户信息", notes = "新增专家用户")
@PostMapping(value = MemberRequestPath.SAVE)
public CallBack<Integer> insert(@Validated @RequestBody PersonalMember entity) {
if(service.insert(entity)) {
throw new FailedException();
};
return CallBack.success(entity.getId());
}
@ApiOperation(value = "修改专家用户信息", notes = "修改专家用户信息")
@PostMapping(value = MemberRequestPath.UPDATE)
public CallBack<Boolean> update(@Validated @RequestBody PersonalMember entity) {
PersonalMember member = service.selectByPrimaryKey(entity.getId());
if(member == null) {
throw new ParameterValidateException("用户id错误!");
}
BeanUtils.copyProperties(entity, member);
if(service.updateByPrimaryKey(member)) {
throw new FailedException();
}
return CallBack.success();
}
}
package com.zrqx.member.bg.pmember.mapper;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.member.PersonalMember;
public interface PersonalMemberMapper extends BaseMapper<PersonalMember>{
}
package com.zrqx.member.bg.pmember.service;
import com.zrqx.core.model.member.PersonalMember;
import com.zrqx.core.service.BaseService;
public interface PersonalMemberService extends BaseService<PersonalMember, Integer> {
}
package com.zrqx.member.bg.pmember.service;
import org.springframework.beans.factory.annotation.Autowired;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.member.PersonalMember;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.member.bg.pmember.mapper.PersonalMemberMapper;
public class PersonalMemberServiceImpl extends BaseServiceImpl<PersonalMember,Integer> implements PersonalMemberService {
@Autowired
private PersonalMemberMapper mapper;
@Override
public BaseMapper<PersonalMember> getMapper() {
return mapper;
}
}
package com.zrqx.member.commons.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 访问地址
* http://ip:port/swagger-ui.html
最常用的5个注解
@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiModelProperty:用对象接收参数时,描述对象的一个字段
其它若干
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiClass
@ApiError
@ApiErrors
@ApiParamImplicit
@ApiParamsImplicit
*/
@EnableSwagger2
@Configuration
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//为当前包路径
.apis(RequestHandlerSelectors.basePackage("com.zrqx"))
.paths(PathSelectors.any())
.build();
}
//构建 api文档的详细信息函数
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("sysUser 测试使用 Swagger2 构建RESTful API")
//描述
.description("sysUser服务 API 描述")
//创建人
.contact(new Contact("陈新昌", "www.baidu.com", "cxinchang@126.com"))
//版本号
.version("3.0")
.build();
}
}
\ No newline at end of file
package com.zrqx.member.commons.interceptor;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.validation.BindException;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import com.zrqx.core.enums.ResponseCodeEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.exception.BusinessValidateException;
import com.zrqx.core.exception.LoginValidateException;
import com.zrqx.core.exception.ParameterValidateException;
import com.zrqx.core.util.response.CallBack;
/**
*controller 异常处理
* @ClassName: CustomExceptionHandler
* @Description: TODO(这里用一句话描述这个类的作用)
* @author 杨振广
* @date 2016-7-14 上午9:45:40
*
*/
@ControllerAdvice
public class CustomExceptionHandler {
private final static Logger logger = LoggerFactory.getLogger(CustomExceptionHandler.class);
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object handlerException(HttpServletRequest request,HttpServletResponse response,Exception e){
e.printStackTrace();
StackTraceElement[] s = e.getStackTrace();
StringBuffer stes = new StringBuffer(s.length*2);
for (StackTraceElement stackTraceElement : s) {
stes.append(stackTraceElement.toString());
stes.append("<br/>");
}
String info = "异常时间:"+new Date().toLocaleString()+"\n请求地址:"+request.getRequestURI()+"\n参数:"+request.getQueryString()+"\n"+e.getMessage();
logger.error(info+"\n"+stes.toString());
request.setAttribute("error",info);
request.setAttribute("errorInfo",e.getStackTrace());
return CallBack.fail(e.getMessage());
}
/**
* 参数验证异常处理
* @Title: handlerException
* @Description:
* @param request
* @param response
* @param e BindException
* @return
* @author lpf
* @date: 2018年5月9日 下午5:01:58
*/
@ExceptionHandler(BindException.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object handlerException(HttpServletRequest request,HttpServletResponse response,BindException e) {
List<ObjectError> errors = e.getAllErrors();
StringBuffer msg = new StringBuffer();
for (ObjectError objectError : errors) {
msg.append(objectError.getDefaultMessage());
msg.append(",");
}
msg.deleteCharAt(msg.length()-1);
return CallBack.fail(msg.toString());
}
/**
* 执行异常处理
* @Description:
* @param e BaseException
* @return
* @date: 2018年5月9日 下午5:01:58
*
*/
@ExceptionHandler(BaseException.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object myException(BaseException e) {
return CallBack.fail(ResponseCodeEnum.EXCEPTION,e.getMessage());
}
/**
* 业务验证异常
* @param e
* @return
* @author ycw
* @date: 2018年12月26日 上午9:22:33
*/
@ExceptionHandler(BusinessValidateException.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object myException(BusinessValidateException e) {
return CallBack.fail(ResponseCodeEnum.VALIDATE,e.getMessage());
}
/**
* 参数验证异常
* @param e
* @return
* @author ycw
* @date: 2018年12月26日 上午9:22:33
*/
@ExceptionHandler(ParameterValidateException.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object myException(ParameterValidateException e) {
return CallBack.fail(ResponseCodeEnum.VALIDATE,e.getMessage());
}
/**
* 登陆验证异常
* @param e
* @return
* @author ycw
* @date: 2018年12月26日 上午9:22:33
*/
@ExceptionHandler(LoginValidateException.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object myException(LoginValidateException e) {
return CallBack.fail(ResponseCodeEnum.NO_LOGIN,e.getMessage());
}
}
\ No newline at end of file
package com.zrqx.member.commons.interceptor;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.Advisor;
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource;
import org.springframework.transaction.interceptor.RollbackRuleAttribute;
import org.springframework.transaction.interceptor.RuleBasedTransactionAttribute;
import org.springframework.transaction.interceptor.TransactionAttribute;
import org.springframework.transaction.interceptor.TransactionInterceptor;
/**
* Created by guozp on 2017/8/28.
*/
@Aspect
//@Component 事务依然生效
@Configuration
public class TxAdviceInterceptor {
private static final int TX_METHOD_TIMEOUT = 5;
private static final String AOP_POINTCUT_EXPRESSION = "execution(* com.zrqx..service..*Impl.*(..))";
@Autowired
private PlatformTransactionManager transactionManager;
// 其中 dataSource 框架会自动为我们注入
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
public TransactionInterceptor txAdvice() {
NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();
/*只读事务,不做更新操作*/
RuleBasedTransactionAttribute readOnlyTx = new RuleBasedTransactionAttribute();
readOnlyTx.setReadOnly(true);
readOnlyTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED );
/*当前存在事务就使用当前事务,当前不存在事务就创建一个新的事务*/
RuleBasedTransactionAttribute requiredTx = new RuleBasedTransactionAttribute();
requiredTx.setRollbackRules(
Collections.singletonList(new RollbackRuleAttribute(Exception.class)));
requiredTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
requiredTx.setTimeout(TX_METHOD_TIMEOUT);
Map<String, TransactionAttribute> txMap = new HashMap<>();
txMap.put("add*", requiredTx);
txMap.put("save*", requiredTx);
txMap.put("insert*", requiredTx);
txMap.put("update*", requiredTx);
txMap.put("delete*", requiredTx);
txMap.put("get*", readOnlyTx);
txMap.put("query*", readOnlyTx);
source.setNameMap( txMap );
TransactionInterceptor txAdvice = new TransactionInterceptor(transactionManager, source);
return txAdvice;
}
@Bean
public Advisor txAdviceAdvisor() {
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression(AOP_POINTCUT_EXPRESSION);
return new DefaultPointcutAdvisor(pointcut, txAdvice());
//return new DefaultPointcutAdvisor(pointcut, txAdvice);
}
}
\ No newline at end of file
package com.zrqx.member.commons.redis;
import java.io.IOException;
import java.util.Enumeration;
import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.zrqx.core.enums.ResponseCodeEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.model.member.Member;
import com.zrqx.core.util.json.JsonUtil;
/**
* Redis消息管理 ,调用时不能用多线程调用
* @author lpf
* @date 2018年6月5日上午10:03:01
*/
@Component
public class Redis {
private static final String FG_TOKEN = "y-token";
private static final String BG_TOKEN = "x-token";
@Autowired
StringRedisTemplate stringRedisTemplate;
/**
* redis 1.0 动态变更数据库
*/
public void updateDatebase(int num) {
JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory();
jedisConnectionFactory.setDatabase(num);
stringRedisTemplate.setConnectionFactory(jedisConnectionFactory);
}
/**
* 获取后台登录用户信息
*
* @return
*/
/*public User getUser() {
return getInfoObjectRedis(getToken(BG_TOKEN), User.class);
}*/
/**
* 获取前台登录用户信息
*
* @return
*/
public Member getMember() {
return getInfoObjectRedis(getToken(FG_TOKEN), Member.class);
}
public String fmtObj(Object obj) throws IOException {
return obj instanceof String ? obj.toString():JsonUtil.bean2Json(obj);
}
/**
* 添加到redis
* @param token
* Key
* @param obj
* Value
* @param timeout
* 过期时间
* @param unit
* TimeUnitEnum 时间格式
* @throws IOException
*/
public void set(String token, Object obj, long timeout,TimeUnit unit) throws IOException {
stringRedisTemplate.opsForValue().set(token,fmtObj(obj),timeout,unit);
}
public void set(String token, Object obj, long timeout) throws IOException {
stringRedisTemplate.opsForValue().set(token,fmtObj(obj),timeout,TimeUnit.SECONDS);
}
/**
* 添加到redis
* @param token Key
* @param obj Value
* @throws IOException
*/
public void set(String token,Object obj) throws IOException{
stringRedisTemplate.opsForValue().set(token,fmtObj(obj));
}
/**
* 根据key删除redis中的数据
* @param key
* @throws IOException
*/
public void delete(String key) throws IOException{
stringRedisTemplate.delete(key);
}
/**
* 根据key查询redis中的数据
*
* @param token
* @return
*/
public String get(String token) {
return stringRedisTemplate.opsForValue().get(token);
}
public <T> T getInfoObjectRedis(String key,Class<T> objClass){
try {
String userInfo = get(key);
if(StringUtils.isEmpty(userInfo)) {
throw new BaseException(ResponseCodeEnum.NO_LOGIN);
}
return JsonUtil.json2Bean(userInfo, objClass);
} catch (Exception e) {
throw new BaseException("获取用户信息错误!"+e.getMessage());
}
}
public static String getToken(String tokenName){
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
String token = null;
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
//TODO--前台获取token
if(key.toLowerCase().equals(tokenName)){
token=request.getHeader(key);
}
}
if (token == null) {
throw new BaseException(ResponseCodeEnum.NO_LOGIN);
}
return token;
}
public static String getBgToken(){
return getToken(BG_TOKEN);
}
public static String getFgToken(){
return getToken(FG_TOKEN);
}
}
mybatis:
type-aliases-package: com.zrqx.core.model
mapper:
mappers:
- com.zrqx.core.mapper.BaseMapper
not-empty: false
i-d-e-n-t-i-t-y: MYSQL
style: normal
b-e-f-o-r-e: true
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
http:
multipart:
maxFileSize: 20Mb
maxRequestSize: 20Mb
feign:
hystrix:
enabled: true
ribbon:
ConnectTimeout: 360000
ReadTimeout: 360000
hystrix:
command:
default:
execution:
isolation:
strategy: SEMAPHORE
thread:
timeoutInMilliseconds: 1440000
semaphore:
maxConcurrentRequests: 200
\ No newline at end of file
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>package</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>*.yml</include>
</includes>
<filtered>true</filtered>
<outputDirectory>${file.separator}${project.artifactId}</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/resources/runScript</directory>
<outputDirectory>${file.separator}bin</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.build.directory}/lib</directory>
<outputDirectory>${file.separator}lib</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}//${project.artifactId}</directory>
<outputDirectory>${file.separator}${project.artifactId}</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
\ No newline at end of file
server:
port: 8701
spring:
cloud:
config:
uri: http://localhost:8888 #配置中心地址
name: member
profile: prod
label: master
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd"
debug="false" scan="true" scanPeriod="30 second">
<!--读取配置中心的属性-->
<springProperty scope="context" name="name" source="spring.application.name"/>
<property name="ROOT" value="/opt/logs/${name}/" />
<property name="FILESIZE" value="50MB" />
<property name="MAXHISTORY" value="100" />
<property name="DATETIME" value="yyyy-MM-dd HH:mm:ss" />
<!-- 控制台打印 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
</appender>
<!-- ERROR 输入到文件,按日期和文件大小 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${ROOT}%d/error.%i.log</fileNamePattern>
<maxHistory>${MAXHISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${FILESIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- WARN 输入到文件,按日期和文件大小 -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${ROOT}%d/warn.%i.log</fileNamePattern>
<maxHistory>${MAXHISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${FILESIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- INFO 输入到文件,按日期和文件大小 -->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${ROOT}%d/info.%i.log</fileNamePattern>
<maxHistory>${MAXHISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${FILESIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- DEBUG 输入到文件,按日期和文件大小 -->
<appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${ROOT}%d/debug.%i.log</fileNamePattern>
<maxHistory>${MAXHISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${FILESIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- TRACE 输入到文件,按日期和文件大小 -->
<appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${ROOT}%d/trace.%i.log</fileNamePattern>
<maxHistory>${MAXHISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${FILESIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- SQL相关日志输出-->
<logger name="org.mybatis.spring" level="DEBUG" additivity="true" />
<logger name="com.zrqx.order" level="DEBUG" additivity="true" />
<!-- Logger 根目录 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="DEBUG" />
<appender-ref ref="ERROR" />
<appender-ref ref="WARN" />
<appender-ref ref="INFO" />
<appender-ref ref="TRACE" />
</root>
</configuration>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论