Commit ddef924c authored by 周健威's avatar 周健威

創建項目

parent 3aac0aa2
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
<module>xx-common</module> <module>xx-common</module>
<module>xx-order</module> <module>xx-order</module>
<module>xx-vehicle</module> <module>xx-vehicle</module>
<module>xx-universal</module>
</modules> </modules>
<packaging>pom</packaging> <packaging>pom</packaging>
<developers> <developers>
......
...@@ -24,7 +24,7 @@ import java.util.List; ...@@ -24,7 +24,7 @@ import java.util.List;
@Transactional @Transactional
public class MemberInfoService extends BaseBiz<MemberInfoMapper, MemberInfo> { public class MemberInfoService extends BaseBiz<MemberInfoMapper, MemberInfo> {
@Autowired //@Autowired
MemberFamilyInfoMapper memberFamilyInfoMapper; MemberFamilyInfoMapper memberFamilyInfoMapper;
public void insert(MemberInfoVo memberInfoVo) { public void insert(MemberInfoVo memberInfoVo) {
......
<?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-universal</artifactId>
<packaging>pom</packaging>
<modules>
<module>xx-universal-api</module>
<module>xx-universal-server</module>
</modules>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-universal-api</artifactId>
</project>
\ No newline at end of file
package com.xxfc.platform.universal.api;
import com.xxfc.platform.universal.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.platform.universal.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.platform.universal.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.platform.universal.model;
import lombok.Data;
@Data
public class JuheResult<T> {
String resultcode;
String reason;
T result;
Integer error_code;
}
package com.xxfc.platform.universal.model;
import lombok.Data;
/**
* 车辆违章查询剩余次数
*/
@Data
public class JuheTrafficViolationsBalanceInfo {
String surplus;
}
package com.xxfc.platform.universal.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.platform.universal.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.platform.universal.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.platform.universal.model;
import lombok.Data;
import java.util.List;
@Data
public class JuheTrafficViolationsProvinceInfo {
String province;
String province_code;
List<JuheTrafficViolationsCityInfo> citys;
}
package com.xxfc.platform.universal.vo;
import lombok.Data;
@Data
public class MemberFamilyInfoVo {
private Integer id;
/**
* 会员id
*/
private Integer memberId;
/**
* 姓名
*/
private String name;
/**
* 关系
*/
private String relationship;
}
package com.xxfc.platform.universal.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>xx-common-platform-web</artifactId>
<groupId>com.xxfc.common</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-universal-server</artifactId>
<dependencies>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-universal-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.xxfc.platform.universal;
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.platform.universal.mapper")
@EnableFeignClients({"com.github.wxiaoqi.security.auth.client.feign"})
public class UniversalApplication {
public static void main(String[] args) {
SpringApplication.run(UniversalApplication.class, args);
}
}
package com.xxfc.platform.universal.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.platform.universal.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.platform.universal.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.platform.universal.service.MemberInfoService;
import com.xxfc.platform.universal.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.platform.universal.controller;
import com.xxfc.platform.universal.api.ITrafficViolationsService;
import com.xxfc.platform.universal.model.JuheResult;
import com.xxfc.platform.universal.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.platform.universal.mapper;
import com.github.wxiaoqi.security.common.mapper.MysqlMapper;
import com.xxfc.platform.universal.entity.MemberFamilyInfo;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
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.platform.universal.mapper;
import com.xxfc.platform.universal.entity.MemberInfo;
import com.xxfc.platform.universal.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.platform.universal.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.platform.universal.entity.MemberFamilyInfo;
import com.xxfc.platform.universal.entity.MemberInfo;
import com.xxfc.platform.universal.mapper.MemberFamilyInfoMapper;
import com.xxfc.platform.universal.mapper.MemberInfoMapper;
import com.xxfc.platform.universal.vo.MemberFamilyInfoVo;
import com.xxfc.platform.universal.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());
}
}
}
package com.xxfc.platform.universal.service;
import com.alibaba.fastjson.JSON;
import com.xxfc.platform.universal.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;
}
}
}
#spring:
# application:
# name: vehicle
# cloud:
# nacos:
# config:
# server-addr: 127.0.0.1:8848
# file-extension: yaml
# profiles:
# active: dev
spring:
profiles:
active: dev
application:
name: xx-universal
cloud:
nacos:
config:
file-extension: yaml
---
spring:
profiles: dev
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
---
spring:
profiles: pro
cloud:
nacos:
config:
server-addr: 10.5.52.2:8848
\ 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.platform.universal.mapper.MemberFamilyInfoMapper">
<resultMap id="BaseResultMap" type="com.xxfc.platform.universal.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.platform.universal.mapper.MemberInfoMapper">
<resultMap id="BaseResultMap" type="com.xxfc.platform.universal.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.platform.universal.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.platform.universal.entity.MemberFamilyInfo" property="family" select="selectFamilyInfoByMemberId" />
</resultMap>
<select id="selectVoAll" resultMap="MemberInfoVoResultMap">
select * from member_info
</select>
<select id="selectFamilyInfoByMemberId" resultType="com.xxfc.platform.universal.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
package com.xxfc.platform.vehicle.vo; package com.xxfc.platform.vehicle.vo;
import com.xxfc.platform.vehicle.entity.BranchCompany; import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleModel; import com.xxfc.platform.vehicle.entity.VehicleModel;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@Data @Data
public class UsableVehicleVO extends VehicleModel { public class UsableVehicleVO {
//车辆id //车辆id
String vehicleId; // String vehicleId;
Vehicle vehicle;
BigDecimal distance;
VehicleModel vehicleModel;
// String companyName;
BranchCompany company; BranchCompany company;
} }
\ No newline at end of file
...@@ -3,6 +3,7 @@ package com.xxfc.platform.vehicle.vo; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.vehicle.vo;
import lombok.Data; import lombok.Data;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
@Data @Data
public class UsableVeicleDTO { public class UsableVeicleDTO {
...@@ -13,4 +14,7 @@ public class UsableVeicleDTO { ...@@ -13,4 +14,7 @@ public class UsableVeicleDTO {
String lat; String lat;
String startDate; String startDate;
String endDate; String endDate;
String priceStart;
String priceEnd;
List<Integer> catas;
} }
\ No newline at end of file
package com.xxfc.platform.vehicle.biz; package com.xxfc.platform.vehicle.biz;
import cn.hutool.core.bean.BeanUtil;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
...@@ -829,7 +830,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -829,7 +830,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
public List<UsableVehicleVO> searchUsable(UsableVeicleDTO dto){ public List<UsableVehicleVO> searchUsable(UsableVeicleDTO dto){
//adjustBookedInfoParam(params, ); //adjustBookedInfoParam(params, );
Map<String, Object> params = new HashMap<String, Object>(); Map<String, Object> params = BeanUtil.beanToMap(dto);
List<String> notBookedDates = Lists.newArrayList(); List<String> notBookedDates = Lists.newArrayList();
if(StringUtils.isNotBlank(dto.getStartDate())&& if(StringUtils.isNotBlank(dto.getStartDate())&&
StringUtils.isNotBlank(dto.getEndDate())) { StringUtils.isNotBlank(dto.getEndDate())) {
......
...@@ -57,8 +57,9 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> { ...@@ -57,8 +57,9 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
return RestResponse.data(baseBiz.getAll(page,limit,addrProvince, addrCity, addrTown, null)); return RestResponse.data(baseBiz.getAll(page,limit,addrProvince, addrCity, addrTown, null));
} }
@IgnoreUserToken
@RequestMapping(value ="/search",method = RequestMethod.GET) @RequestMapping(value ="/search",method = RequestMethod.GET)
@IgnoreUserToken
@IgnoreClientToken
public RestResponse<PageDataVO<BranchCompany>> search(@Validated CompanySearchDTO vo) { public RestResponse<PageDataVO<BranchCompany>> search(@Validated CompanySearchDTO vo) {
return RestResponse.data(baseBiz.search(vo)); return RestResponse.data(baseBiz.search(vo));
} }
......
...@@ -19,6 +19,8 @@ import com.xxfc.platform.vehicle.entity.VehicleBookInfo; ...@@ -19,6 +19,8 @@ import com.xxfc.platform.vehicle.entity.VehicleBookInfo;
import com.xxfc.platform.vehicle.feign.UserFeign; import com.xxfc.platform.vehicle.feign.UserFeign;
import com.xxfc.platform.vehicle.feign.dto.UserDTO; import com.xxfc.platform.vehicle.feign.dto.UserDTO;
import com.xxfc.platform.vehicle.vo.*; import com.xxfc.platform.vehicle.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormat;
...@@ -34,6 +36,7 @@ import java.util.List; ...@@ -34,6 +36,7 @@ import java.util.List;
@RequestMapping("/vehicleInfo") @RequestMapping("/vehicleInfo")
@Slf4j @Slf4j
@IgnoreClientToken @IgnoreClientToken
@Api(value = "车辆管理")
public class VehicleController extends BaseController<VehicleBiz> { public class VehicleController extends BaseController<VehicleBiz> {
@Autowired @Autowired
...@@ -252,7 +255,9 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -252,7 +255,9 @@ public class VehicleController extends BaseController<VehicleBiz> {
* @param dto * @param dto
* @return * @return
*/ */
@ApiOperation("可用车辆查询")
@RequestMapping(value = "/rent/usable-vehicle", method = RequestMethod.GET) @RequestMapping(value = "/rent/usable-vehicle", method = RequestMethod.GET)
@IgnoreUserToken
public ObjectRestResponse<PageDataVO<UsableVehicleVO>> rentUsableVehicle(UsableVeicleDTO dto) throws Exception { public ObjectRestResponse<PageDataVO<UsableVehicleVO>> rentUsableVehicle(UsableVeicleDTO dto) throws Exception {
//根据时间 获得 可用车辆 //根据时间 获得 可用车辆
//结合车型 //结合车型
......
...@@ -3,7 +3,10 @@ ...@@ -3,7 +3,10 @@
<mapper namespace="com.xxfc.platform.vehicle.mapper.VehicleMapper"> <mapper namespace="com.xxfc.platform.vehicle.mapper.VehicleMapper">
<resultMap id="searchUsableMap" type="com.xxfc.platform.vehicle.vo.UsableVehicleVO"> <resultMap id="searchUsableMap" type="com.xxfc.platform.vehicle.vo.UsableVehicleVO">
<!-- <collection column="company_id" property="company_id" ofType="com.xxfc.platform.vehicle" select="getAttribute" >--> <!-- <collection column="company_id" property="id" ofType="com.xxfc.platform.vehicle.entity.BranchCompany" select="com.xxfc.platform.vehicle.mapper.BranchCompanyMapper.selectByPrimaryKey" />-->
<result column="park_branch_company_id" property="companyId" jdbcType="VARCHAR" javaType="java.lang.Integer"/>
<association property="company" column="company_id" select="com.xxfc.platform.vehicle.mapper.BranchCompanyMapper.selectByPrimaryKey" />
<association property="vehicleModel" column="model_id" select="com.xxfc.platform.vehicle.mapper.VehicleModelMapper.selectByPrimaryKey" />
</resultMap> </resultMap>
<update id="updateStatusById" parameterType="java.util.Map"> <update id="updateStatusById" parameterType="java.util.Map">
...@@ -216,8 +219,11 @@ ...@@ -216,8 +219,11 @@
</select> </select>
<select id="searchUsable" parameterType="java.util.Map" <select id="searchUsable" parameterType="java.util.Map"
resultType="com.xxfc.platform.vehicle.vo.UsableVehicleVO"> resultMap="searchUsableMap">
select v.id as vehicleId, v.park_branch_company_id as company_id select distinct vm.id as model_id, bc.id as company_id
<if test="lon != null and lat != null">
,st_distance_sphere(point(#{lon}, #{lat}), point(bc.longitude, bc.latitude)) as distance
</if>
<if test=" yearMonthAndParam !=null "> <if test=" yearMonthAndParam !=null ">
,vbi.booked_date ,vbi.booked_date
</if> </if>
...@@ -226,7 +232,8 @@ ...@@ -226,7 +232,8 @@
left join left join
vehicle_book_info vbi on v.`id` = vbi.vehicle vehicle_book_info vbi on v.`id` = vbi.vehicle
</if> </if>
left join branch_company bc on v.`subordinate_branch` = bc.id left join vehicle_model vm on v.model_id = vm.id
left join branch_company bc on v.park_branch_company_id = bc.id
<where> <where>
<!-- 若需根据预定日期条件查询,针对换为位操作 --> <!-- 若需根据预定日期条件查询,针对换为位操作 -->
<if test=" yearMonthAndParam !=null "> <if test=" yearMonthAndParam !=null ">
...@@ -238,8 +245,10 @@ ...@@ -238,8 +245,10 @@
</foreach> </foreach>
</if> </if>
</where> </where>
<if test="lon != null and lat != null">
order by v.code order by
distance asc
</if>
</select> </select>
<select id="lockByCode" resultType="com.xxfc.platform.vehicle.entity.Vehicle" <select id="lockByCode" resultType="com.xxfc.platform.vehicle.entity.Vehicle"
......
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