Commit 1735cf80 authored by 周健威's avatar 周健威

调整配置

parent 483516af
......@@ -14,6 +14,8 @@ spring:
nacos:
config:
server-addr: 127.0.0.1:8848
#共用配置,暂定一个
shared-dataids: common-dev.yaml
---
spring:
profiles: pro
......
......@@ -16,6 +16,8 @@ spring:
nacos:
config:
server-addr: 127.0.0.1:8848
#共用配置,暂定一个
shared-dataids: common-dev.yaml
---
spring:
......
......@@ -36,10 +36,6 @@
<module>ace-sidecar</module>
<module>ace-control</module>
<module>ace-modules</module>
<module>xx-member</module>
<module>xx-member-api</module>
<module>xx-third-party</module>
<module>xx-third-party-api</module>
<module>vehicle</module>
<module>xx-app</module>
<module>xx-common</module>
......
<?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>
<artifactId>ace-security</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-member-api</artifactId>
<dependencies>
<!-- ace -->
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-common</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!-- 持久层 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.xxfc.member.vo;
import lombok.Data;
@Data
public class MemberFamilyInfoVo {
private Integer id;
/**
* 会员id
*/
private Integer memberId;
/**
* 姓名
*/
private String name;
/**
* 关系
*/
private String relationship;
}
package com.xxfc.member.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class MemberInfoVo {
private Integer id;
/**
* 姓名
*/
private String name;
/**
* 性别(0:男,1:女)
*/
private Boolean sex;
/**
* 卡号
*/
private String cardNumber;
/**
* 生日
*/
@JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
private Date birthday;
/**
* 身份证号
*/
private String idNumber;
/**
* 证件地址
*/
private String certificateAddress;
/**
* 电子邮件
*/
private String email;
/**
* 微信
*/
private String wx;
/**
* 会员类型(0:会员,1:VIP会员,2:砖石会员)
*/
private Byte memberType;
/**
* 联系电话
*/
private String telephone;
/**
* 手机
*/
private String mobilePhone;
/**
* 常住地址
*/
private String address;
/**
* 工作单位
*/
private String workplace;
/**
* 职务
*/
private String job;
/**
* 邀约人
*/
private String inviter;
/**
* 职业
*/
private String profession;
/**
* 支付方式(0:现金,1:刷卡,2:微信支付,3:支付宝支付,4:银行转账)
*/
private Byte payType;
/**
* 会员签名日期
*/
@JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
private Date memberSignatureDate;
/**
* 经理
*/
private String manager;
/**
* 经理签名日期
*/
@JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
private Date managerSignatureDate;
/**
* 创建日期
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private Date createDate;
/**
* 创建人用户id
*/
private Integer createUserId;
/**
* 创建人姓名
*/
private String createUserName;
/**
* 会员状态(-1:停用,0:未审核,1:正常)
*/
private Byte state;
private List<MemberFamilyInfoVo> family;
public List<MemberFamilyInfoVo> getFamily() {
return family;
}
public void setFamily(List<MemberFamilyInfoVo> family) {
this.family = family;
}
}
<?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>
<artifactId>ace-security</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-member</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- service -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- ace -->
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>xx-member-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-common</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-auth-client</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-cache</artifactId>
<version>0.0.2</version>
</dependency>
<!-- 持久层 -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.github.drtrang</groupId>
<artifactId>druid-spring-boot2-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- utils -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.33</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>
${basedir}/src/main/resources/builder/generatorConfig.xml
</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
</dependencies>
</plugin>
<!-- mybatis generator自动生成代码 -->
<!-- <plugin>-->
<!-- <groupId>org.mybatis.generator</groupId>-->
<!-- <artifactId>mybatis-generator-maven-plugin</artifactId>-->
<!-- <version>1.3.7</version>-->
<!-- <dependencies>-->
<!-- <dependency>-->
<!-- <groupId> mysql</groupId>-->
<!-- <artifactId> mysql-connector-java</artifactId>-->
<!-- <version>8.0.15</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.mybatis.generator</groupId>-->
<!-- <artifactId>mybatis-generator-core</artifactId>-->
<!-- <version>1.3.7</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>tk.mybatis</groupId>-->
<!-- <artifactId>mapper</artifactId>-->
<!-- <version>4.0.4</version>-->
<!-- </dependency>-->
<!-- </dependencies>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <id>Generate MyBatis Artifacts</id>-->
<!-- <phase>package</phase>-->
<!-- <goals>-->
<!-- <goal>generate</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- <configuration>-->
<!-- &lt;!&ndash;允许移动生成的文件 &ndash;&gt;-->
<!-- <verbose>true</verbose>-->
<!-- &lt;!&ndash; 是否覆盖 &ndash;&gt;-->
<!-- <overwrite>true</overwrite>-->
<!-- &lt;!&ndash; 自动生成的配置 &ndash;&gt;-->
<!-- <configurationFile>-->
<!-- src/main/resources/builder/mybatis-generator.xml</configurationFile>-->
<!-- </configuration>-->
<!-- </plugin>-->
</plugins>
</build>
</project>
\ No newline at end of file
package com.xxfc.member;
import com.ace.cache.EnableAceCache;
import com.github.wxiaoqi.security.auth.client.EnableAceAuthClient;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication
@EnableDiscoveryClient
@EnableAceAuthClient
@EnableAceCache
@EnableTransactionManagement
@MapperScan("com.xxfc.member.mapper")
@EnableFeignClients({"com.github.wxiaoqi.security.auth.client.feign"})
public class MemberApplication {
public static void main(String[] args) {
SpringApplication.run(MemberApplication.class, args);
}
}
package com.xxfc.member.config;
import com.github.wxiaoqi.security.auth.client.interceptor.ServiceAuthRestInterceptor;
import com.github.wxiaoqi.security.auth.client.interceptor.UserAuthRestInterceptor;
import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.ArrayList;
import java.util.Collections;
@Configuration("memberWebConfig")
@Primary
public class WebConfiguration implements WebMvcConfigurer {
@Bean
GlobalExceptionHandler getGlobalExceptionHandler() {
return new GlobalExceptionHandler();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getServiceAuthRestInterceptor()).
addPathPatterns(getIncludePathPatterns()).addPathPatterns("/member/info/**");
registry.addInterceptor(getUserAuthRestInterceptor()).
addPathPatterns(getIncludePathPatterns());
}
@Bean
ServiceAuthRestInterceptor getServiceAuthRestInterceptor() {
return new ServiceAuthRestInterceptor();
}
@Bean
UserAuthRestInterceptor getUserAuthRestInterceptor() {
return new UserAuthRestInterceptor();
}
/**
* 需要用户和服务认证判断的路径
* @return
*/
private ArrayList<String> getIncludePathPatterns() {
ArrayList<String> list = new ArrayList<>();
String[] urls = {
"/member/info/**"
};
Collections.addAll(list, urls);
return list;
}
}
package com.xxfc.member.controller;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.xxfc.member.service.MemberInfoService;
import com.xxfc.member.vo.MemberInfoVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("member/info")
public class MemberInfoController {
@Autowired
MemberInfoService memberInfoService;
@PostMapping("")
public BaseResponse insert(@RequestBody MemberInfoVo memberInfoVo) {
memberInfoService.insert(memberInfoVo);
return new BaseResponse();
}
@DeleteMapping("/{id}")
public BaseResponse delete(@PathVariable("id") Integer id) {
memberInfoService.deleteById(id);
return new BaseResponse();
}
@GetMapping("/{id}")
public ObjectRestResponse<MemberInfoVo> get(@PathVariable("id") Integer id) {
return new ObjectRestResponse<MemberInfoVo>().data(memberInfoService.selectById(id));
}
@GetMapping("/all")
public TableResultResponse<MemberInfoVo> getAll(String name, Integer page, Integer limit) {
return new TableResultResponse<MemberInfoVo>().data(memberInfoService.selectAll(name, page, limit));
}
@PutMapping("")
public BaseResponse update(@RequestBody MemberInfoVo memberInfoVo) {
memberInfoService.updateSelectiveById(memberInfoVo);
return new BaseResponse();
}
}
package com.xxfc.member.entity;
import javax.persistence.*;
@Table(name = "member_family_info")
public class MemberFamilyInfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "JDBC")
private Integer id;
@Column(name = "member_id")
private Integer memberId;
/**
* 姓名
*/
private String name;
/**
* 关系
*/
private String relationship;
/**
* @return id
*/
public Integer getId() {
return id;
}
/**
* @param id
*/
public void setId(Integer id) {
this.id = id;
}
/**
* @return member_id
*/
public Integer getMemberId() {
return memberId;
}
/**
* @param memberId
*/
public void setMemberId(Integer memberId) {
this.memberId = memberId;
}
/**
* 获取姓名
*
* @return name - 姓名
*/
public String getName() {
return name;
}
/**
* 设置姓名
*
* @param name 姓名
*/
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
/**
* 获取关系
*
* @return relationship - 关系
*/
public String getRelationship() {
return relationship;
}
/**
* 设置关系
*
* @param relationship 关系
*/
public void setRelationship(String relationship) {
this.relationship = relationship == null ? null : relationship.trim();
}
}
\ No newline at end of file
package com.xxfc.member.mapper;
import com.github.wxiaoqi.security.common.mapper.MysqlMapper;
import com.xxfc.member.entity.MemberFamilyInfo;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.special.InsertListMapper;
import java.util.List;
public interface MemberFamilyInfoMapper
extends MysqlMapper<MemberFamilyInfo> {
@Delete("delete from member_family_info where member_id = #{id}")
int deleteByMemberId(Integer id);
@Select("select * from member_family_info where member_id = #{id}")
List<MemberFamilyInfo> selectByMemberId(Integer id);
int deleteByMemberIdNotInIds(@Param("memberId") Integer memberId, @Param("ids") List<Integer> ids);
}
\ No newline at end of file
package com.xxfc.member.mapper;
import com.xxfc.member.entity.MemberInfo;
import com.xxfc.member.vo.MemberInfoVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public interface MemberInfoMapper extends Mapper<MemberInfo> {
List<MemberInfoVo> selectVoAll();
List<MemberInfoVo> selectVoByName(@Param("name") String name);
}
\ No newline at end of file
package com.xxfc.member.service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.xxfc.member.entity.MemberFamilyInfo;
import com.xxfc.member.entity.MemberInfo;
import com.xxfc.member.mapper.MemberFamilyInfoMapper;
import com.xxfc.member.mapper.MemberInfoMapper;
import com.xxfc.member.vo.MemberFamilyInfoVo;
import com.xxfc.member.vo.MemberInfoVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
@Transactional
public class MemberInfoService extends BaseBiz<MemberInfoMapper, MemberInfo> {
//@Autowired
MemberFamilyInfoMapper memberFamilyInfoMapper;
public void insert(MemberInfoVo memberInfoVo) {
MemberInfo memberInfo = new MemberInfo();
BeanUtils.copyProperties(memberInfoVo, memberInfo);
if (null == memberInfo.getCreateDate()) {
memberInfo.setCreateDate(new Date());
}
memberInfo.setState((byte) 0);
memberInfo.setCreateUserId(Integer.valueOf(BaseContextHandler.getUserID()));
memberInfo.setCreateUserName(BaseContextHandler.getName());
super.insert(memberInfo);
List<MemberFamilyInfoVo> family = memberInfoVo.getFamily();
if (null != family && family.size() > 0) {
List<MemberFamilyInfo> familyInfos = new ArrayList<>();
for (MemberFamilyInfoVo info : family) {
MemberFamilyInfo familyInfo = new MemberFamilyInfo();
BeanUtils.copyProperties(info, familyInfo);
familyInfo.setMemberId(memberInfo.getId());
familyInfos.add(familyInfo);
}
memberFamilyInfoMapper.insertList(familyInfos);
}
}
public void deleteById(Integer id) {
super.deleteById(id);
memberFamilyInfoMapper.deleteByMemberId(id);
}
public MemberInfoVo selectById(Integer id) {
MemberInfo info = super.selectById(id);
if (null == info) {
throw new BaseException("用户不存在");
}
MemberInfoVo result = new MemberInfoVo();
BeanUtils.copyProperties(info, result);
List<MemberFamilyInfo> family = memberFamilyInfoMapper.selectByMemberId(id);
List<MemberFamilyInfoVo> familyInfoVos = new ArrayList<>();
for (MemberFamilyInfo familyInfo : family) {
MemberFamilyInfoVo familyInfoVo = new MemberFamilyInfoVo();
BeanUtils.copyProperties(familyInfo, familyInfoVo);
familyInfoVos.add(familyInfoVo);
}
result.setFamily(familyInfoVos);
return result;
}
public PageInfo<MemberInfoVo> selectAll(String name, Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
if (name != null) {
name = name.trim();
if (name.length() > 0) {
return new PageInfo<>(mapper.selectVoByName(name.trim()));
}
}
return new PageInfo<>(mapper.selectVoAll());
}
public void updateSelectiveById(MemberInfoVo memberInfoVo) {
MemberInfo memberInfo = new MemberInfo();
BeanUtils.copyProperties(memberInfoVo, memberInfo);
super.updateSelectiveById(memberInfo);
List<MemberFamilyInfoVo> family = memberInfoVo.getFamily();
if (null != family && family.size() > 0) {
List<Integer> ids = new ArrayList<>();
for (MemberFamilyInfoVo memberFamilyInfoVo : family) {
MemberFamilyInfo info = new MemberFamilyInfo();
BeanUtils.copyProperties(memberFamilyInfoVo, info);
info.setMemberId(memberInfoVo.getId());
if (null == info.getId()) {
memberFamilyInfoMapper.insert(info);
} else {
memberFamilyInfoMapper.updateByPrimaryKeySelective(info);
}
ids.add(info.getId());
}
memberFamilyInfoMapper.deleteByMemberIdNotInIds(memberInfoVo.getId(), ids);
} else {
memberFamilyInfoMapper.deleteByMemberId(memberInfoVo.getId());
}
}
}
server:
port: 8001
logging:
level:
com.xxfc.member: DEBUG
spring:
application:
name: xx-member
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
default-property-inclusion: non_null
datasource:
name: test
url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/ag_admin_v1?useUnicode=true&characterEncoding=UTF8
username: root
password: 123456
# 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
rabbitmq:
host: ${RABBIT_MQ_HOST:localhost}
port: ${RABBIT_MQ_PORT:5672}
username: guest
password: guest
sleuth:
enabled: true
http:
legacy:
enabled: true
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
sentinel:
transport:
dashboard: localhost:8080
sample:
zipkin:
# When enabled=false, traces log to the console. Comment to send to zipkin
enabled: false
mybatis:
# basepackage: com.github.wxiaoqi.security.admin.mapper
# xmlLocation: classpath:mapper/**/*.xml
mapper-locations: "classpath*:mapper/**/*.xml"
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
mapper:
mappers: com.github.wxiaoqi.security.common.mapper.MysqlMapper
# 必须配置
feign:
httpclient:
enabled: false
okhttp:
enabled: true
ribbon:
eureka:
enabled: true
ReadTimeout: 100000
ConnectTimeout: 100000
MaxAutoRetries: 0
MaxAutoRetriesNextServer: 1
OkToRetryOnAllOperations: false
hystrix:
threadpool:
default:
coreSize: 1000 ##并发执行的最大线程数,默认10
maxQueueSize: 1000 ##BlockingQueue的最大队列数
queueSizeRejectionThreshold: 500 ##即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 110000
# 配置swagger
swagger:
enabled: true
base-package: com.github.wxiaoqi.security.admin
title: ace-admin
version: 1.0.0.SNAPSHOT
description: 管理后端服务
contact:
name: admin
auth:
serviceId: xx-member
user:
token-header: Authorization
client:
id: xx-member
secret: 123456
token-header: x-client-token
#redis-cache 相关
redis:
pool:
maxActive: 300
maxIdle: 100
maxWait: 1000
host: ${REDIS_HOST:localhost}
port: ${REDIS_PORT:6379}
password:
timeout: 2000
# 服务或应用名
sysName: xx-member
enable: true
database: 0
management:
endpoints:
web:
exposure:
include: '*'
security:
enabled: false
spring:
application:
name: xx-member
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
# server-addr: 10.5.52.3:8848
file-extension: yaml
profiles:
active: dev
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="Mysql" targetRuntime="MyBatis3">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<property name="mergeable" value="false" />
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<!-- caseSensitive默认false,当数据库表名区分大小写时,可以将该属性设置为true -->
<property name="caseSensitive" value="false"/>
</plugin>
<!--去除注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/ag_admin_v1?useUnicode=true&amp;characterEncoding=UTF8&amp;nullCatalogMeansCurrent=true"
userId="root"
password="123456">
</jdbcConnection>
<!-- Model -->
<javaModelGenerator targetPackage="com.xxfc.member.entity"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- XML -->
<sqlMapGenerator targetPackage="com.xxfc.member.mapper"
targetProject="src/main/resources/mapper">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- Mapper -->
<javaClientGenerator targetPackage="com.xxfc.member.mapper"
targetProject="src/main/java"
type="XMLMAPPER">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- <table tableName="member_info" domainObjectName="MemberInfo" enableCountByExample="false"-->
<!-- enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"-->
<!-- selectByExampleQueryId="false"/>-->
<!-- <table tableName="member_family_info" domainObjectName="MemberFamilyInfo" enableCountByExample="false"-->
<!-- enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"-->
<!-- selectByExampleQueryId="false"/>-->
</context>
</generatorConfiguration>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.member.mapper.MemberFamilyInfoMapper">
<resultMap id="BaseResultMap" type="com.xxfc.member.entity.MemberFamilyInfo">
<!--
WARNING - @mbg.generated
-->
<id column="id" jdbcType="INTEGER" property="id" />
<result column="member_id" jdbcType="INTEGER" property="memberId" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="relationship" jdbcType="VARCHAR" property="relationship" />
</resultMap>
<sql id="Base_Column_List">
<!--
WARNING - @mbg.generated
-->
id, member_id, name, relationship
</sql>
<delete id="deleteByMemberIdNotInIds">
delete from member_family_info
where member_id = #{memberId}
<foreach collection="ids" item="id">
and id != #{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.member.mapper.MemberInfoMapper">
<resultMap id="BaseResultMap" type="com.xxfc.member.entity.MemberInfo">
<!--
WARNING - @mbg.generated
-->
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="sex" jdbcType="BIT" property="sex" />
<result column="card_number" jdbcType="VARCHAR" property="cardNumber" />
<result column="birthday" jdbcType="TIMESTAMP" property="birthday" />
<result column="id_number" jdbcType="VARCHAR" property="idNumber" />
<result column="certificate_address" jdbcType="VARCHAR" property="certificateAddress" />
<result column="email" jdbcType="VARCHAR" property="email" />
<result column="wx" jdbcType="VARCHAR" property="wx" />
<result column="member_type" jdbcType="TINYINT" property="memberType" />
<result column="telephone" jdbcType="VARCHAR" property="telephone" />
<result column="mobile_phone" jdbcType="VARCHAR" property="mobilePhone" />
<result column="address" jdbcType="VARCHAR" property="address" />
<result column="workplace" jdbcType="VARCHAR" property="workplace" />
<result column="job" jdbcType="VARCHAR" property="job" />
<result column="inviter" jdbcType="VARCHAR" property="inviter" />
<result column="profession" jdbcType="VARCHAR" property="profession" />
<result column="pay_type" jdbcType="TINYINT" property="payType" />
<result column="member_signature_date" jdbcType="TIMESTAMP" property="memberSignatureDate" />
<result column="manager" jdbcType="VARCHAR" property="manager" />
<result column="manager_signature_date" jdbcType="TIMESTAMP" property="managerSignatureDate" />
<result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
<result column="create_user_id" jdbcType="INTEGER" property="createUserId" />
<result column="create_user_name" jdbcType="VARCHAR" property="createUserName" />
<result column="state" jdbcType="TINYINT" property="state" />
</resultMap>
<sql id="Base_Column_List">
<!--
WARNING - @mbg.generated
-->
id, name, sex, card_number, birthday, id_number, certificate_address, email, wx,
member_type, telephone, mobile_phone, address, workplace, job, inviter, profession,
pay_type, member_signature_date, manager, manager_signature_date, create_date, create_user_id,
create_user_name, state
</sql>
<resultMap id="MemberInfoVoResultMap" type="com.xxfc.member.vo.MemberInfoVo">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="sex" jdbcType="BIT" property="sex" />
<result column="card_number" jdbcType="VARCHAR" property="cardNumber" />
<result column="birthday" jdbcType="VARCHAR" property="birthday" />
<result column="id_number" jdbcType="VARCHAR" property="idNumber" />
<result column="certificate_address" jdbcType="VARCHAR" property="certificateAddress" />
<result column="email" jdbcType="VARCHAR" property="email" />
<result column="wx" jdbcType="VARCHAR" property="wx" />
<result column="member_type" jdbcType="TINYINT" property="memberType" />
<result column="telephone" jdbcType="VARCHAR" property="telephone" />
<result column="mobile_phone" jdbcType="VARCHAR" property="mobilePhone" />
<result column="address" jdbcType="VARCHAR" property="address" />
<result column="workplace" jdbcType="VARCHAR" property="workplace" />
<result column="job" jdbcType="VARCHAR" property="job" />
<result column="inviter" jdbcType="VARCHAR" property="inviter" />
<result column="profession" jdbcType="VARCHAR" property="profession" />
<result column="pay_type" jdbcType="TINYINT" property="payType" />
<result column="member_signature_date" jdbcType="TIMESTAMP" property="memberSignatureDate" />
<result column="manager" jdbcType="VARCHAR" property="manager" />
<result column="manager_signature_date" jdbcType="TIMESTAMP" property="managerSignatureDate" />
<result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
<result column="create_user_id" jdbcType="INTEGER" property="createUserId" />
<result column="create_user_name" jdbcType="VARCHAR" property="createUserName" />
<result column="state" jdbcType="TINYINT" property="state" />
<collection column="memberId=id" javaType="ArrayList" ofType="com.xxfc.member.entity.MemberFamilyInfo" property="family" select="selectFamilyInfoByMemberId" />
</resultMap>
<select id="selectVoAll" resultMap="MemberInfoVoResultMap">
select * from member_info
</select>
<select id="selectFamilyInfoByMemberId" resultType="com.xxfc.member.entity.MemberFamilyInfo">
select * from member_family_info where member_id = #{memberId}
</select>
<select id="selectVoByName" resultMap="MemberInfoVoResultMap">
select * from member_info
where name = #{name}
</select>
</mapper>
\ No newline at end of file
DROP TABLE IF EXISTS `member_info`;
CREATE TABLE `member_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) NOT NULL COMMENT '姓名',
`sex` tinyint(1) NOT NULL COMMENT '性别(0:男,1:女)',
`card_number` varchar(50) DEFAULT NULL COMMENT '卡号',
`birthday` datetime DEFAULT NULL COMMENT '生日',
`id_number` varchar(20) DEFAULT NULL COMMENT '身份证号',
`certificate_address` varchar(100) DEFAULT NULL COMMENT '证件地址',
`email` varchar(100) DEFAULT NULL COMMENT '电子邮件',
`wx` varchar(100) DEFAULT NULL COMMENT '微信',
`member_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '会员类型(0:会员,1:VIP会员,2:砖石会员)',
`telephone` varchar(20) DEFAULT NULL COMMENT '联系电话',
`mobile_phone` varchar(20) DEFAULT NULL COMMENT '手机',
`address` varchar(255) DEFAULT NULL COMMENT '常住地址',
`workplace` varchar(255) DEFAULT NULL COMMENT '工作单位',
`job` varchar(100) DEFAULT NULL COMMENT '职务',
`inviter` varchar(100) DEFAULT NULL COMMENT '邀约人',
`profession` varchar(20) DEFAULT NULL COMMENT '职业',
`pay_type` tinyint(4) DEFAULT NULL COMMENT '支付方式(0:现金,1:刷卡,2:微信支付,3:支付宝支付,4:银行转账)',
`member_signature_date` datetime DEFAULT NULL COMMENT '会员签名日期',
`manager` varchar(20) DEFAULT NULL COMMENT '经理',
`manager_signature_date` datetime DEFAULT NULL COMMENT '经理签名日期',
`create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期',
`create_user_id` int NOT NULL COMMENT '创建人用户id',
`create_user_name` varchar(50) NOT NULL COMMENT '创建人姓名',
`state` tinyint(4) NOT NULL DEFAULT 0 COMMENT '会员状态(-1:停用,0:未审核,1:正常)',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
DROP TABLE IF EXISTS `member_family_info`;
CREATE TABLE `member_family_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL,
`name` varchar(10) NOT NULL COMMENT '姓名',
`relationship` varchar(10) NOT NULL COMMENT '关系',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
\ No newline at end of file
package com.xxfc.member;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberApplicationTests {
}
package com.xxfc.member.controller;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.xxfc.member.MemberApplicationTests;
import com.xxfc.member.vo.MemberFamilyInfoVo;
import com.xxfc.member.vo.MemberInfoVo;
import org.junit.Assert;
import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
import org.springframework.beans.factory.annotation.Autowired;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static com.xxfc.member.entity.MemberInfo.SEX_MAN;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MemberInfoControllerTest extends MemberApplicationTests {
private MemberInfoVo memberInfoVo;
@Autowired
private MemberInfoController controller;
@Before
public void setUp() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
memberInfoVo = new MemberInfoVo();
memberInfoVo.setId(1);
memberInfoVo.setName("张三");
memberInfoVo.setSex(SEX_MAN);
memberInfoVo.setCardNumber("123456789");
memberInfoVo.setBirthday(sdf.parse("1988-01-01"));
memberInfoVo.setIdNumber("421000000000000000");
memberInfoVo.setCertificateAddress("皇后大道");
memberInfoVo.setEmail("xxxxx@xxx.com");
memberInfoVo.setWx("13312341234");
memberInfoVo.setMemberType((byte) 0);
memberInfoVo.setTelephone("0769-22223333");
memberInfoVo.setMobilePhone("13312341234");
memberInfoVo.setAddress("皇后大道东");
memberInfoVo.setWorkplace("皇后大道西");
memberInfoVo.setJob("test");
memberInfoVo.setInviter("nothing");
memberInfoVo.setProfession("test");
memberInfoVo.setPayType((byte) 0);
memberInfoVo.setMemberSignatureDate(new Date());
memberInfoVo.setManager("XXX");
memberInfoVo.setManagerSignatureDate(new Date());
// memberInfoVo.setCreateDate(new Date());
memberInfoVo.setCreateUserId(1);
memberInfoVo.setCreateUserName("admin");
memberInfoVo.setState((byte) 1);
List<MemberFamilyInfoVo> family = new ArrayList<>();
MemberFamilyInfoVo father = new MemberFamilyInfoVo();
father.setName("张二");
father.setRelationship("父子");
family.add(father);
MemberFamilyInfoVo mother = new MemberFamilyInfoVo();
mother.setName("李二");
mother.setRelationship("母子");
family.add(mother);
memberInfoVo.setFamily(family);
}
@Test
public void t_001_insert() {
BaseResponse response = controller.insert(memberInfoVo);
Assert.assertEquals(200, response.getStatus());
}
@Test
public void t_002_get() {
ObjectRestResponse<MemberInfoVo> response = controller.get(memberInfoVo.getId());
Assert.assertEquals(200, response.getStatus());
Assert.assertNotNull(response.getData());
Assert.assertEquals("张三", response.getData().getName());
}
@Test
public void t_003_update() {
String eMail = "test@qq.com";
MemberInfoVo member = controller.get(memberInfoVo.getId()).getData();
List<MemberFamilyInfoVo> family = member.getFamily();
MemberFamilyInfoVo family1 = family.get(0);
family1.setId(null);
family1.setName("大熊");
family1.setRelationship("兄弟");
MemberFamilyInfoVo family2 = family.get(1);
family2.setName("熊二");
family2.setRelationship("兄弟");
member.setEmail(eMail);
BaseResponse response = controller.update(member);
Assert.assertEquals(200, response.getStatus());
ObjectRestResponse<MemberInfoVo> resp = controller.get(memberInfoVo.getId());
Assert.assertEquals(eMail, resp.getData().getEmail());
List<MemberFamilyInfoVo> familyInfos = resp.getData().getFamily();
for (MemberFamilyInfoVo info : familyInfos) {
Assert.assertTrue(family1.getName().equals(info.getName())
|| family2.getName().equals(info.getName()));
}
}
@Test
public void t_004_getAll() {
TableResultResponse<MemberInfoVo> response = controller.getAll(null,1, 10);
Assert.assertEquals(200, response.getStatus());
Assert.assertTrue(response.getData().getRows().size() > 0);
}
@Test
public void t_005_delete() {
BaseResponse response = controller.delete(memberInfoVo.getId());
Assert.assertEquals(200, response.getStatus());
}
}
\ No newline at end of file
......@@ -14,6 +14,8 @@ spring:
nacos:
config:
server-addr: 127.0.0.1:8848
#共用配置,暂定一个
shared-dataids: commonaaa-dev.yaml
#---
#spring:
......
<?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>
<artifactId>ace-security</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-third-party-api</artifactId>
<dependencies>
<!-- ace -->
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-common</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!-- 持久层 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.xxfc.thirdparty.api;
import com.xxfc.thirdparty.model.JuheResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@FeignClient("xx-third-party")
@RequestMapping("3p/tv")
public interface ITrafficViolationsService {
/**
* 获取支持的城市
* @param province
* @return
*/
@RequestMapping(value = "city", method = RequestMethod.GET)
JuheResult getCityInfo(String province);
/**
* 查违章
* @param city 城市代码
* @param hphm 车牌号码
* @param hpzl 车辆类型 01:大车,02:小车
* @param engineno 发动机号
* @param classno 车架号
* @return
*/
@RequestMapping(value = "trafficViolations", method = RequestMethod.GET)
JuheResult queryTrafficViolations(String city, String hphm, String hpzl, String engineno, String classno);
/**
* 获取剩余查询次数
* @return
*/
@RequestMapping(value = "balance", method = RequestMethod.GET)
JuheResult getBalance();
/**
* 根据车牌查归属地
* @param hphm 车牌号码
* @return
*/
@RequestMapping(value = "carPre", method = RequestMethod.GET)
JuheResult carPre(String hphm);
}
package com.xxfc.thirdparty.model;
import lombok.Data;
/**
* 根据车牌前缀查地区的返回结果
*/
@Data
public class JuheCarPreInfo {
String city_name;
String city_code;
String abbr;
String engine;
String engineno;
String classa;
String classno;
String province;
}
package com.xxfc.thirdparty.model;
import lombok.Data;
@Data
public class JuheResult<T> {
String resultcode;
String reason;
T result;
Integer error_code;
}
package com.xxfc.thirdparty.model;
import lombok.Data;
/**
* 车辆违章查询剩余次数
*/
@Data
public class JuheTrafficViolationsBalanceInfo {
String surplus;
}
package com.xxfc.thirdparty.model;
import lombok.Data;
@Data
public class JuheTrafficViolationsCityInfo {
String city_name;
String city_code;
String abbr;
String engine;
String engineno;
String classa;
String classno;
String regist;
String registno;
}
package com.xxfc.thirdparty.model;
import lombok.Data;
import java.util.List;
/**
* 违章信息
*/
@Data
public class JuheTrafficViolationsInfo {
/**
* 省份代码
*/
String province;
/**
* 城市代码
*/
String city;
/**
* 车牌号码
*/
String hphm;
/**
* 牌类型,默认02:小型车,01:大型车
*/
String hpzl;
/**
* 违章信息列表
*/
List<JuheTrafficViolationsInfoItem> lists;
}
package com.xxfc.thirdparty.model;
import lombok.Data;
/**
* 违章信息项
*/
@Data
public class JuheTrafficViolationsInfoItem {
String data;
String area;
String act;
String code;
String fen;
String wzcity;
String money;
String handled;
String archiveno;
}
package com.xxfc.thirdparty.model;
import lombok.Data;
import java.util.List;
@Data
public class JuheTrafficViolationsProvinceInfo {
String province;
String province_code;
List<JuheTrafficViolationsCityInfo> citys;
}
<?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>
<artifactId>ace-security</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-third-party</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- service -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- ace -->
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>xx-third-party-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-common</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-auth-client</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-cache</artifactId>
<version>0.0.2</version>
</dependency>
<!-- 持久层 -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.github.drtrang</groupId>
<artifactId>druid-spring-boot2-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- utils -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.33</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- mybatis generator自动生成代码 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>
${basedir}/src/main/resources/builder/generatorConfig.xml
</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
</dependencies>
</plugin>
<!-- <plugin>-->
<!-- <groupId>org.mybatis.generator</groupId>-->
<!-- <artifactId>mybatis-generator-maven-plugin</artifactId>-->
<!-- <version>1.3.7</version>-->
<!-- <dependencies>-->
<!-- <dependency>-->
<!-- <groupId> mysql</groupId>-->
<!-- <artifactId> mysql-connector-java</artifactId>-->
<!-- <version>8.0.15</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.mybatis.generator</groupId>-->
<!-- <artifactId>mybatis-generator-core</artifactId>-->
<!-- <version>1.3.7</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>tk.mybatis</groupId>-->
<!-- <artifactId>mapper</artifactId>-->
<!-- <version>4.0.4</version>-->
<!-- </dependency>-->
<!-- </dependencies>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <id>Generate MyBatis Artifacts</id>-->
<!-- <phase>package</phase>-->
<!-- <goals>-->
<!-- <goal>generate</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- <configuration>-->
<!-- &lt;!&ndash;允许移动生成的文件 &ndash;&gt;-->
<!-- <verbose>true</verbose>-->
<!-- &lt;!&ndash; 是否覆盖 &ndash;&gt;-->
<!-- <overwrite>true</overwrite>-->
<!-- &lt;!&ndash; 自动生成的配置 &ndash;&gt;-->
<!-- <configurationFile>-->
<!-- src/main/resources/builder/mybatis-generator.xml</configurationFile>-->
<!-- </configuration>-->
<!-- </plugin>-->
</plugins>
</build>
</project>
\ No newline at end of file
package com.xxfc.thirdparty;
import com.ace.cache.EnableAceCache;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication
@EnableDiscoveryClient
//@EnableAceAuthClient
@EnableAceCache
@EnableTransactionManagement
@MapperScan("com.xxfc.thirdparty.mapper")
@EnableFeignClients({"com.github.wxiaoqi.security.auth.client.feign"})
public class ThirdPartyApplication {
public static void main(String[] args) {
SpringApplication.run(ThirdPartyApplication.class, args);
}
}
package com.xxfc.thirdparty.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestConfiguration {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
package com.xxfc.thirdparty.config;
import com.github.wxiaoqi.security.auth.client.interceptor.ServiceAuthRestInterceptor;
import com.github.wxiaoqi.security.auth.client.interceptor.UserAuthRestInterceptor;
import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.ArrayList;
import java.util.Collections;
@Configuration("thirdpartyWebConfig")
@Primary
public class WebConfiguration implements WebMvcConfigurer {
@Bean
GlobalExceptionHandler getGlobalExceptionHandler() {
return new GlobalExceptionHandler();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getServiceAuthRestInterceptor()).
addPathPatterns(getIncludePathPatterns()).addPathPatterns("/3p/**");
registry.addInterceptor(getUserAuthRestInterceptor()).
addPathPatterns(getIncludePathPatterns());
}
@Bean
ServiceAuthRestInterceptor getServiceAuthRestInterceptor() {
return new ServiceAuthRestInterceptor();
}
@Bean
UserAuthRestInterceptor getUserAuthRestInterceptor() {
return new UserAuthRestInterceptor();
}
/**
* 需要用户和服务认证判断的路径
* @return
*/
private ArrayList<String> getIncludePathPatterns() {
ArrayList<String> list = new ArrayList<>();
String[] urls = {
"/3p/**"
};
Collections.addAll(list, urls);
return list;
}
}
package com.xxfc.thirdparty.controller;
import com.xxfc.thirdparty.api.ITrafficViolationsService;
import com.xxfc.thirdparty.model.JuheResult;
import com.xxfc.thirdparty.service.TrafficViolationsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("3p/tv")
public class TrafficViolationsController implements ITrafficViolationsService {
@Autowired
TrafficViolationsService tvService;
@Override
@GetMapping("city")
public JuheResult getCityInfo(String province) {
return tvService.getCity(province);
}
@Override
@GetMapping("trafficViolations")
public JuheResult queryTrafficViolations(String city, String hphm, String hpzl, String engineno, String classno) {
return tvService.queryViolations(city, hphm, hpzl, engineno, classno);
}
@Override
@GetMapping("balance")
public JuheResult getBalance() {
return tvService.queryBalance();
}
@Override
@GetMapping("carPre")
public JuheResult carPre(String hphm) {
return tvService.queryCityByHphm(hphm);
}
}
package com.xxfc.thirdparty.service;
import com.alibaba.fastjson.JSON;
import com.xxfc.thirdparty.model.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
/**
* 违章查询
*/
@Service
public class TrafficViolationsService {
@Value("${juhe.key}")
private String KEY;
//支持的城市
private static final String URL_GET_CITY = "http://v.juhe.cn/wz/citys?" +
"province={province}&dtype={dtype}&format={format}&callback={callback}&key={key}";
//查违章
private static final String URL_QUERY_WZ = "http://v.juhe.cn/wz/query?" +
"dtype={dtype}&city={city}&hphm={hphm}&hpzl={hpzl}&engineno={engineno}&classno={classno}&key={key}";
//剩余次数
private static final String URL_BALANCE = "http://v.juhe.cn/wz/status?" +
"dtype={dtype}&key={key}";
//根据车牌查城市
private static final String URL_CAR_PRE = "http://v.juhe.cn/wz/carPre?" +
"hphm={hphm}&key={key}";
@Autowired
RestTemplate restTemplate;
/**
* 获取支持城市
* province string N 默认全部,省份简写,如:ZJ、JS
* dtype string N 返回数据格式:json或xml或jsonp,默认json
* format int N 格式选择1或2,默认1
* callback String N 返回格式选择jsonp时,必须传递
* {"resultcode":"101","reason":"error key","result":null,"error_code":10001}
*/
public JuheResult<Map<String, JuheTrafficViolationsProvinceInfo>> getCity(String province) {
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("key", KEY);
paramsMap.put("province", province == null ? "" : province);
paramsMap.put("dtype", "json");
paramsMap.put("format", "");
paramsMap.put("callback", "");
return query(URL_GET_CITY, paramsMap);
}
/**
* 查违章
* dtype string 否 返回数据格式:默认:json
* city String 是 城市代码 *
* hphm String 是 号牌号码 完整7位 ,需要utf8 urlencode*
* hpzl String 是 号牌类型,默认02:小型车,01:大型车
* engineno String 否 发动机号 (具体是否需要根据城市接口中的参数填写)
* classno String 否 车架号 (具体是否需要根据城市接口中的参数填写)
*/
public JuheResult<JuheTrafficViolationsInfo> queryViolations(String city, String hphm, String hpzl,
String engineno, String classno) {
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("key", KEY);
paramsMap.put("dtype", "json");
paramsMap.put("city", city);
paramsMap.put("hphm", hphm);
paramsMap.put("hpzl", hpzl);
paramsMap.put("engineno", engineno);
paramsMap.put("classno", classno);
return query(URL_QUERY_WZ, paramsMap);
}
/**
* 查询剩余次数
*/
public JuheResult<JuheTrafficViolationsBalanceInfo> queryBalance() {
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("key", KEY);
paramsMap.put("dtype", "json");
return query(URL_BALANCE, paramsMap);
}
/**
* 根据车牌前缀查城市参数
*/
public JuheResult<JuheCarPreInfo> queryCityByHphm(String hphm) {
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("key", KEY);
paramsMap.put("hphm", hphm);
return query(URL_CAR_PRE, paramsMap);
}
private JuheResult query(String url, Map<String, String> paramsMap) {
try {
String responseStr = restTemplate.getForObject(url, String.class, paramsMap);
return JSON.parseObject(responseStr, JuheResult.class);
} catch (RestClientException ex) {
JuheResult result = new JuheResult();
result.setReason("请求错误");
result.setResultcode("500");
return result;
}
}
}
server:
port: 8002
logging:
level:
com.xxfc.member: DEBUG
spring:
application:
name: xx-third-party
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
default-property-inclusion: non_null
datasource:
name: test
url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/ag_admin_v1?useUnicode=true&characterEncoding=UTF8
username: root
password: 123456
# 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
rabbitmq:
host: ${RABBIT_MQ_HOST:localhost}
port: ${RABBIT_MQ_PORT:5672}
username: guest
password: guest
sleuth:
enabled: true
http:
legacy:
enabled: true
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
sentinel:
transport:
dashboard: localhost:8080
sample:
zipkin:
# When enabled=false, traces log to the console. Comment to send to zipkin
enabled: false
mybatis:
# basepackage: com.github.wxiaoqi.security.admin.mapper
# xmlLocation: classpath:mapper/**/*.xml
mapper-locations: "classpath*:mapper/**/*.xml"
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
mapper:
mappers: com.github.wxiaoqi.security.common.mapper.MysqlMapper
# 必须配置
feign:
httpclient:
enabled: false
okhttp:
enabled: true
ribbon:
eureka:
enabled: true
ReadTimeout: 100000
ConnectTimeout: 100000
MaxAutoRetries: 0
MaxAutoRetriesNextServer: 1
OkToRetryOnAllOperations: false
hystrix:
threadpool:
default:
coreSize: 1000 ##并发执行的最大线程数,默认10
maxQueueSize: 1000 ##BlockingQueue的最大队列数
queueSizeRejectionThreshold: 500 ##即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 110000
# 配置swagger
swagger:
enabled: true
base-package: com.github.wxiaoqi.security.admin
title: ace-admin
version: 1.0.0.SNAPSHOT
description: 管理后端服务
contact:
name: admin
auth:
serviceId: xx-third-party
user:
token-header: Authorization
client:
id: xx-member
secret: 123456
token-header: x-client-token
#redis-cache 相关
redis:
pool:
maxActive: 300
maxIdle: 100
maxWait: 1000
host: ${REDIS_HOST:localhost}
port: ${REDIS_PORT:6379}
password:
timeout: 2000
# 服务或应用名
sysName: xx-member
enable: true
database: 0
management:
endpoints:
web:
exposure:
include: '*'
security:
enabled: false
juhe:
key: 714ac24873c6a8b76114dca575a3748b
\ No newline at end of file
spring:
application:
name: xx-third-party
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
# server-addr: 10.5.52.2:8848
file-extension: yaml
profiles:
active: dev
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="Mysql" targetRuntime="MyBatis3">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<property name="mergeable" value="false" />
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<!-- caseSensitive默认false,当数据库表名区分大小写时,可以将该属性设置为true -->
<property name="caseSensitive" value="false"/>
</plugin>
<!--去除注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/ag_admin_v1?useUnicode=true&amp;characterEncoding=UTF8&amp;nullCatalogMeansCurrent=true"
userId="root"
password="123456">
</jdbcConnection>
<!-- Model -->
<javaModelGenerator targetPackage="com.xxfc.member.entity"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- XML -->
<sqlMapGenerator targetPackage="com.xxfc.member.mapper"
targetProject="src/main/resources/mapper">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- Mapper -->
<javaClientGenerator targetPackage="com.xxfc.member.mapper"
targetProject="src/main/java"
type="XMLMAPPER">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- <table tableName="member_info" domainObjectName="MemberInfo" enableCountByExample="false"-->
<!-- enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"-->
<!-- selectByExampleQueryId="false"/>-->
<!-- <table tableName="member_family_info" domainObjectName="MemberFamilyInfo" enableCountByExample="false"-->
<!-- enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"-->
<!-- selectByExampleQueryId="false"/>-->
</context>
</generatorConfiguration>
\ No newline at end of file
package com.xxfc.thirdparty;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class ThirdPartyApplicationTests {
}
package com.xxfc.thirdparty.service;
import com.xxfc.thirdparty.ThirdPartyApplicationTests;
import com.xxfc.thirdparty.model.JuheResult;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
public class TrafficViolationsServiceTest extends ThirdPartyApplicationTests {
@Autowired
TrafficViolationsService service;
@Before
public void setUp() throws Exception {
}
@Test
public void getCity() {
JuheResult result = service.getCity(null);
System.out.println(result);
}
@Test
public void queryViolations() {
JuheResult result = service.queryViolations("GD_DG","粤S0634C","02",
"1615000569","LGWEF6A5XGH002066");
System.out.println(result);
}
@Test
public void queryBalance() {
JuheResult result = service.queryBalance();
System.out.println(result);
}
@Test
public void queryCityByHphm() {
JuheResult result = service.queryCityByHphm("粤S0634C");
System.out.println(result);
}
}
\ No newline at end of file
......@@ -842,11 +842,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
if(StrUtil.isNotBlank(dto.getStartDate()) && StrUtil.isNotBlank(dto.getEndDate())) {
initBookSearchParam(dto, params);
}
PageHelper.startPage(dto.getPage(), dto.getLimit());
List<UsableVehicleModelVO> lists = mapper.searchUsableModel(params);
PageInfo<UsableVehicleModelVO> usableVehicleModel = new PageInfo<>(lists);
return PageDataVO.pageInfo(usableVehicleModel);
//return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(params));
// PageHelper.startPage(dto.getPage(), dto.getLimit());
// List<UsableVehicleModelVO> lists = mapper.searchUsableModel(params);
// PageInfo<UsableVehicleModelVO> usableVehicleModel = new PageInfo<>(lists);
// return PageDataVO.pageInfo(usableVehicleModel);
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(params));
}
public PageDataVO<UsableVehicleModelVO> hotModel(HotVeicleDTO dto){
......
......@@ -24,6 +24,8 @@ spring:
nacos:
config:
server-addr: 127.0.0.1:8848
#共用配置,暂定一个
shared-dataids: common-dev.yaml
---
spring:
......
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