Commit 8ff1e5dd by Simon Cheng

修改引用package名称

parent aec1667a
......@@ -23,7 +23,7 @@
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
......@@ -34,5 +34,7 @@
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.testng.TESTNG_CONTAINER"/>
<classpathentry kind="lib" path="D:/test/selenium/lib/client-combined-3.12.0.jar"/>
<classpathentry kind="lib" path="D:/test/selenium-server-standalone-3.12.0.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
......@@ -70,11 +70,11 @@
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<!-- <dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
</dependency> -->
<!--
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
......@@ -134,7 +134,11 @@
<artifactId>junit</artifactId>
<version> 4.12</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
</dependencies>
<!-- 打包spring boot应用 -->
<build>
......@@ -143,10 +147,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork : 如果没有该项配置,devtools不会起作用,即应用不会restart -->
<fork>true</fork>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
......
package com.ajb.web;
public interface APIProviderService {
//登录
public Object login(Object request);
//所有品牌
public Object getAllBrand(Object request);
//品牌型号列表查询
//品牌型号详细信息
//数据同步
}
......@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RestController;
*
*/
@RestController
@RequestMapping(value="/meta")
public class MetaDataController {
/**
* 输出省份,省份简称列表
......
......@@ -19,6 +19,7 @@ import com.ajb.web.quotation.AgPoQuotationWebService;
*
*/
@RestController
@RequestMapping(value="/order")
public class OrderController {
@Autowired
private AgPoQuotationWebService agPoOrderWebService;
......
......@@ -19,6 +19,7 @@ import com.ajb.web.quotation.AgPoQuotationWebService;
*
*/
@RestController
@RequestMapping(value="/quote")
public class QuotationController {
@Autowired
private AgPoQuotationWebService agPoQuotationWebService;
......@@ -49,7 +50,7 @@ public class QuotationController {
* @return
* @throws Exception
*/
@RequestMapping("/lastyearquotation")
@RequestMapping("/quotation/lastyearquotation")
public Object lastYearQuotation(@RequestBody QuotationRequestVO requestVO) throws Exception{
//ProvinceResponse quotationResponse = new ProvinceResponse();
......@@ -61,7 +62,7 @@ public class QuotationController {
* @return
* @throws Exception
*/
@RequestMapping("/recommendcoverages")
@RequestMapping("/quotation/recommendcoverages")
public Object recommendCoverages(@RequestBody QuotationRequestVO requestVO) throws Exception{
//ProvinceResponse quotationResponse = new ProvinceResponse();
......@@ -75,7 +76,7 @@ public class QuotationController {
* @return
* @throws Exception
*/
@RequestMapping("/postquotation")
@RequestMapping("/quotation/postquotation")
public Object postQuotation(@RequestBody QuotationRequestVO requestVO) throws Exception{
//ProvinceResponse quotationResponse = new ProvinceResponse();
......@@ -89,7 +90,7 @@ public class QuotationController {
* @return
* @throws Exception
*/
@RequestMapping("/modifyquotation")
@RequestMapping("/quotation/modifyquotation")
public Object modifyQuotation(@RequestBody QuotationRequestVO requestVO) throws Exception{
//ProvinceResponse quotationResponse = new ProvinceResponse();
......@@ -103,7 +104,7 @@ public class QuotationController {
* @return
* @throws Exception
*/
@RequestMapping("/confirmquotation")
@RequestMapping("/quotation/confirmquotation")
public Object confirmQuotation(@RequestBody QuotationRequestVO requestVO) throws Exception{
//ProvinceResponse quotationResponse = new ProvinceResponse();
......@@ -118,7 +119,7 @@ public class QuotationController {
* @return
* @throws Exception
*/
@RequestMapping("/postrecieveaddress")
@RequestMapping("/quotation/postrecieveaddress")
public Object postRecieveAddress(@RequestBody QuotationRequestVO requestVO) throws Exception{
//ProvinceResponse quotationResponse = new ProvinceResponse();
......@@ -133,7 +134,7 @@ public class QuotationController {
* @return
* @throws Exception
*/
@RequestMapping("/postinvoiceinfo")
@RequestMapping("/quotation/postinvoiceinfo")
public Object postInvoiceInfo(@RequestBody QuotationRequestVO requestVO) throws Exception{
//ProvinceResponse quotationResponse = new ProvinceResponse();
......
......@@ -14,6 +14,7 @@ import com.ajb.common.utils.encryption.JPACryptoConverter;
import com.ajb.web.user.UserdataWebService;
@RestController
@RequestMapping(value="/test")
public class UserDataController {
@Autowired
private UserdataWebService userdataWebService;
......
package com.ajb.web.metadata;
import com.ajb.car.vo.meta.AgMdVehicleBrandRequestVO;
import com.ajb.car.vo.meta.AgMdVehicleBrandResponseVO;
public interface AgMdVehicleBrandWebService {
public AgMdVehicleBrandResponseVO agMdVehicleBrandSave(AgMdVehicleBrandRequestVO agMdVehicleBrandRequestVO) throws Exception;
public AgMdVehicleBrandResponseVO agMdVehicleBrandUpdate(AgMdVehicleBrandRequestVO agMdVehicleBrandRequestVO);
public AgMdVehicleBrandResponseVO agMdVehicleBrandQuery(AgMdVehicleBrandRequestVO agMdVehicleBrandRequestVO);
//public boolean agMdVehicleBrandDelete(AgMdVehicleBrandDeleteRequestVO agMdVehicleBrandDeleteRequestVO);
}
\ No newline at end of file
......@@ -8,4 +8,6 @@ public interface MetaDataService {
public List<String> searchmodel1(String keyword);
public List<VehicleModels> searchmodel2(String modelNumber);
}
package com.ajb.web.metadata.impl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ajb.car.entity.meta.AgMdVehicleBrand;
import com.ajb.car.metadata.service.AgMdVehicleBrandService;
import com.ajb.car.vo.common.CommonResult;
import com.ajb.car.vo.meta.AgMdVehicleBrandRequestVO;
import com.ajb.car.vo.meta.AgMdVehicleBrandResponseVO;
import com.ajb.web.metadata.AgMdVehicleBrandWebService;
@Service("agMdVehicleBrandWebService")
public class AgMdVehicleBrandWebServiceImpl implements AgMdVehicleBrandWebService {
@Autowired
private AgMdVehicleBrandService agMdVehicleBrandService;
@Transactional
@Override
public AgMdVehicleBrandResponseVO agMdVehicleBrandSave(AgMdVehicleBrandRequestVO agMdVehicleBrandRequestVO) throws Exception {
AgMdVehicleBrandResponseVO result = new AgMdVehicleBrandResponseVO();
//TODO validate the user inputs
AgMdVehicleBrand tempEntity = new AgMdVehicleBrand();
//TODO validate the user inputs
BeanUtils.copyProperties(tempEntity,agMdVehicleBrandRequestVO);
//data persistence
tempEntity = agMdVehicleBrandService.save(tempEntity);
//fetch the sequence id the database returned
Long sequence = tempEntity.getId();
agMdVehicleBrandRequestVO.setId(sequence);
//return success info
Boolean success = true;
String message = "save success!";
result.setCommonResult(new CommonResult(success,message));
result.setRequestVO(agMdVehicleBrandRequestVO);
return result;
}
@Transactional
@Override
public AgMdVehicleBrandResponseVO agMdVehicleBrandUpdate(AgMdVehicleBrandRequestVO agMdVehicleBrandRequestVO) {
// TODO Auto-generated method stub
Boolean success = true;
String message = "save success!";
AgMdVehicleBrandResponseVO result = new AgMdVehicleBrandResponseVO();
result.setCommonResult(new CommonResult(success,message));
return result;
}
@Transactional
@Override
public AgMdVehicleBrandResponseVO agMdVehicleBrandQuery(AgMdVehicleBrandRequestVO agMdVehicleBrandRequestVO) {
// TODO Auto-generated method stub
Boolean success = true;
String message = "save success!";
AgMdVehicleBrandResponseVO result = new AgMdVehicleBrandResponseVO();
result.setCommonResult(new CommonResult(success,message));
return result;
}
}
\ No newline at end of file
......@@ -148,7 +148,7 @@ public class AgPoQuotationWebServiceImpl implements AgPoQuotationWebService {
agPoQuotationCover = new AgPoQuotationCover();
agPoQuotationCover.setCount(priceinfo.getBzCoverages().getDamageLossCoverage().getCount());
agPoQuotationCover.setCoverAmount(priceinfo.getBzCoverages().getDamageLossCoverage().getSumInsured());
agPoQuotationCover.setCoverName(priceinfo.getBzCoverages().getDamageLossCoverage().getKind());
agPoQuotationCover.setCoverName("机动车损失保险");
//agPoQuotationCover.setDiscountRate(priceinfo.getBzCoverages().getDamageLossCoverage().get);
agPoQuotationCover.setFloatingRate(BigDecimal.valueOf(priceinfo.getBzCoverages().getDamageLossCoverage().getFloatingRate()));
agPoQuotationCover.setPremium(BigDecimal.valueOf(priceinfo.getBzCoverages().getDamageLossCoverage().getPolicyPremium()));
......@@ -187,7 +187,7 @@ public class AgPoQuotationWebServiceImpl implements AgPoQuotationWebService {
agPoQuotationCover = new AgPoQuotationCover();
agPoQuotationCover.setCount(priceinfo.getBzCoverages().getCarBodyPaintCoverage().getCount());
agPoQuotationCover.setCoverAmount(priceinfo.getBzCoverages().getCarBodyPaintCoverage().getSumInsured());
agPoQuotationCover.setCoverName(priceinfo.getBzCoverages().getCarBodyPaintCoverage().getKind());
agPoQuotationCover.setCoverName("车身划痕损失险");
//agPoQuotationCover.setDiscountRate(priceinfo.getBzCoverages().getCarBodyPaintCoverage().get);
agPoQuotationCover.setFloatingRate(BigDecimal.valueOf(priceinfo.getBzCoverages().getCarBodyPaintCoverage().getFloatingRate()));
agPoQuotationCover.setPremium(BigDecimal.valueOf(priceinfo.getBzCoverages().getCarBodyPaintCoverage().getPolicyPremium()));
......@@ -211,7 +211,7 @@ public class AgPoQuotationWebServiceImpl implements AgPoQuotationWebService {
agPoQuotationCover = new AgPoQuotationCover();
agPoQuotationCover.setCount(priceinfo.getBzCoverages().getCarBodyPaintExemptDeductibleSpecialClause().getCount());
agPoQuotationCover.setCoverAmount(priceinfo.getBzCoverages().getCarBodyPaintExemptDeductibleSpecialClause().getSumInsured());
agPoQuotationCover.setCoverName(priceinfo.getBzCoverages().getCarBodyPaintExemptDeductibleSpecialClause().getKind());
agPoQuotationCover.setCoverName("车身划痕损失险免赔");
//agPoQuotationCover.setDiscountRate(priceinfo.getBzCoverages().getCarBodyPaintCoverage().get);
agPoQuotationCover.setFloatingRate(BigDecimal.valueOf(priceinfo.getBzCoverages().getCarBodyPaintExemptDeductibleSpecialClause().getFloatingRate()));
agPoQuotationCover.setPremium(BigDecimal.valueOf(priceinfo.getBzCoverages().getCarBodyPaintExemptDeductibleSpecialClause().getPolicyPremium()));
......@@ -235,7 +235,7 @@ public class AgPoQuotationWebServiceImpl implements AgPoQuotationWebService {
agPoQuotationCover = new AgPoQuotationCover();
agPoQuotationCover.setCount(priceinfo.getBzCoverages().getDamageLossExemptDeductibleSpecialClause().getCount());
agPoQuotationCover.setCoverAmount(priceinfo.getBzCoverages().getDamageLossExemptDeductibleSpecialClause().getSumInsured());
agPoQuotationCover.setCoverName(priceinfo.getBzCoverages().getDamageLossExemptDeductibleSpecialClause().getKind());
agPoQuotationCover.setCoverName("机动车损失不计免赔保险");
//agPoQuotationCover.setDiscountRate(priceinfo.getBzCoverages().getDamageLossExemptDeductibleSpecialClause().get);
agPoQuotationCover.setFloatingRate(BigDecimal.valueOf(priceinfo.getBzCoverages().getDamageLossExemptDeductibleSpecialClause().getFloatingRate()));
agPoQuotationCover.setPremium(BigDecimal.valueOf(priceinfo.getBzCoverages().getDamageLossExemptDeductibleSpecialClause().getPolicyPremium()));
......@@ -244,7 +244,7 @@ public class AgPoQuotationWebServiceImpl implements AgPoQuotationWebService {
agPoQuotationCover.setQuotationId(quotationId);
agPoQuotationCover.setQuotationVehicleId(quotationVehicleId);
agPoQuotationCover.setVehicleClauseId(6L);
agPoQuotationCover.setClauseCategory("M");
agPoQuotationCover.setClauseCategory("A");
agPoQuotationCover.setClauseCode(priceinfo.getBzCoverages().getDamageLossExemptDeductibleSpecialClause().getKind());
agPoQuotationCover.setClauseDescription("机动车损失不计免赔保险");
agPoQuotationCover.setCreatedAt(new Date());
......@@ -258,7 +258,7 @@ public class AgPoQuotationWebServiceImpl implements AgPoQuotationWebService {
agPoQuotationCover = new AgPoQuotationCover();
agPoQuotationCover.setCount(priceinfo.getBzCoverages().getThirdPartyLiabilityCoverage().getCount());
agPoQuotationCover.setCoverAmount(priceinfo.getBzCoverages().getThirdPartyLiabilityCoverage().getSumInsured());
agPoQuotationCover.setCoverName(priceinfo.getBzCoverages().getThirdPartyLiabilityCoverage().getKind());
agPoQuotationCover.setCoverName("机动车第三者责任保险");
//agPoQuotationCover.setDiscountRate(priceinfo.getBzCoverages().getThirdPartyLiabilityCoverage().get);
agPoQuotationCover.setFloatingRate(BigDecimal.valueOf(priceinfo.getBzCoverages().getThirdPartyLiabilityCoverage().getFloatingRate()));
agPoQuotationCover.setPremium(BigDecimal.valueOf(priceinfo.getBzCoverages().getThirdPartyLiabilityCoverage().getPolicyPremium()));
......@@ -281,7 +281,7 @@ public class AgPoQuotationWebServiceImpl implements AgPoQuotationWebService {
agPoQuotationCover = new AgPoQuotationCover();
agPoQuotationCover.setCount(priceinfo.getBzCoverages().getThirdPartyLiabilityExemptDeductibleSpecialClause().getCount());
agPoQuotationCover.setCoverAmount(priceinfo.getBzCoverages().getThirdPartyLiabilityExemptDeductibleSpecialClause().getSumInsured());
agPoQuotationCover.setCoverName(priceinfo.getBzCoverages().getThirdPartyLiabilityExemptDeductibleSpecialClause().getKind());
agPoQuotationCover.setCoverName("机动车第三者责任保险");
//agPoQuotationCover.setDiscountRate(priceinfo.getBzCoverages().getThirdPartyLiabilityExemptDeductibleSpecialClause().get);
agPoQuotationCover.setFloatingRate(BigDecimal.valueOf(priceinfo.getBzCoverages().getThirdPartyLiabilityExemptDeductibleSpecialClause().getFloatingRate()));
agPoQuotationCover.setPremium(BigDecimal.valueOf(priceinfo.getBzCoverages().getThirdPartyLiabilityExemptDeductibleSpecialClause().getPolicyPremium()));
......@@ -306,7 +306,7 @@ public class AgPoQuotationWebServiceImpl implements AgPoQuotationWebService {
BeanUtils.copyProperties(tcCoverages.getTRAFFICCOMPULSORYPRODUCT(),agPoQuotationCover);
agPoQuotationCover.setCount(tcCoverages.getTRAFFICCOMPULSORYPRODUCT().getCount());
agPoQuotationCover.setCoverAmount(tcCoverages.getTRAFFICCOMPULSORYPRODUCT().getSumInsured());
agPoQuotationCover.setCoverName(tcCoverages.getTRAFFICCOMPULSORYPRODUCT().getKind());
agPoQuotationCover.setCoverName("交通强制险");
//agPoQuotationCover.setDiscountRate(tcCoverages.getTRAFFICCOMPULSORYPRODUCT().get);
agPoQuotationCover.setFloatingRate(BigDecimal.valueOf(tcCoverages.getTRAFFICCOMPULSORYPRODUCT().getFloatingRate()));
agPoQuotationCover.setPremium(BigDecimal.valueOf(tcCoverages.getTRAFFICCOMPULSORYPRODUCT().getPolicyPremium()));
......@@ -315,9 +315,9 @@ public class AgPoQuotationWebServiceImpl implements AgPoQuotationWebService {
agPoQuotationCover.setQuotationId(quotationId);
agPoQuotationCover.setQuotationVehicleId(quotationVehicleId);
agPoQuotationCover.setVehicleClauseId(18L);
agPoQuotationCover.setClauseCategory("A");
agPoQuotationCover.setClauseCategory("T");
agPoQuotationCover.setClauseCode(tcCoverages.getTRAFFICCOMPULSORYPRODUCT().getKind());
agPoQuotationCover.setClauseDescription("机动车第三者责任不计免赔率险");
agPoQuotationCover.setClauseDescription("交通强制险");
agPoQuotationCover.setCreatedAt(new Date());
agPoQuotationCover.setCreatedBy(-1L);
......
......@@ -4,6 +4,8 @@ import java.util.Date;
import com.ajb.car.vo.zhima.quotation.QuotationResponse;
public interface ZhimaDataSyncService {
public interface ZhimaDataSyncService //extends APIProviderService
{
public QuotationResponse synchQuotaion(Date begin,Date end) throws InterruptedException;
}
......@@ -6,7 +6,7 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
......
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8
package com.ajb.car.entity.meta;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
/**
车品牌列表
*/
@Entity
@Table(name="ag_md_vehicle_brand")
public class AgMdVehicleBrand implements java.io.Serializable {
private static final long serialVersionUID = 1L;
// serial id
private Long id;
// 车品牌名
private String brandName;
// 车品牌英文名
private String brandNameEn;
// 车品牌英文缩写
private String brandNameAbbre;
// 0=No, 1=Yes热门品牌
private Integer isPopular;
// 0=No, 1=Yes
private Integer isActive;
private Date createdAt;
private Integer createdBy;
/** ?? serial id,???? ag_md_vehicle_brand.id */
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
public Long getId(){
return this.id;
}
/** ?? serial id,???? ag_md_vehicle_brand.id */
public void setId(Long id){
this.id = id;
}
/** ?? 车品牌名,???? ag_md_vehicle_brand.brand_name */
@Column(name="brand_name")
public String getBrandName(){
return this.brandName;
}
/** ?? 车品牌名,???? ag_md_vehicle_brand.brand_name */
public void setBrandName(String brandName){
this.brandName = brandName;
}
/** ?? 车品牌英文名,???? ag_md_vehicle_brand.brand_name_en */
@Column(name="brand_name_en")
public String getBrandNameEn(){
return this.brandNameEn;
}
/** ?? 车品牌英文名,???? ag_md_vehicle_brand.brand_name_en */
public void setBrandNameEn(String brandNameEn){
this.brandNameEn = brandNameEn;
}
/** ?? 车品牌英文缩写,???? ag_md_vehicle_brand.brand_name_abbre */
@Column(name="brand_name_abbre")
public String getBrandNameAbbre(){
return this.brandNameAbbre;
}
/** ?? 车品牌英文缩写,???? ag_md_vehicle_brand.brand_name_abbre */
public void setBrandNameAbbre(String brandNameAbbre){
this.brandNameAbbre = brandNameAbbre;
}
/** ?? 0=No, 1=Yes热门品牌,???? ag_md_vehicle_brand.is_popular */
@Column(name="is_popular")
public Integer getIsPopular(){
return this.isPopular;
}
/** ?? 0=No, 1=Yes热门品牌,???? ag_md_vehicle_brand.is_popular */
public void setIsPopular(Integer isPopular){
this.isPopular = isPopular;
}
/** ?? 0=No, 1=Yes,???? ag_md_vehicle_brand.is_active */
@Column(name="is_active")
public Integer getIsActive(){
return this.isActive;
}
/** ?? 0=No, 1=Yes,???? ag_md_vehicle_brand.is_active */
public void setIsActive(Integer isActive){
this.isActive = isActive;
}
@Column(name="created_at")
public Date getCreatedAt(){
return this.createdAt;
}
public void setCreatedAt(Date createdAt){
this.createdAt = createdAt;
}
@Column(name="created_by")
public Integer getCreatedBy(){
return this.createdBy;
}
public void setCreatedBy(Integer createdBy){
this.createdBy = createdBy;
}
}
\ No newline at end of file
......@@ -8,6 +8,8 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import com.ajb.common.utils.encryption.JPACryptoConverter;
@Entity
@Table(name="userdata")
public class Userdata implements java.io.Serializable {
......@@ -27,15 +29,15 @@ private static final long serialVersionUID = 1L;
private String pasword;
@Column(name="encryptedpassword")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
private String encryptedpassword;
@Column(name="telephone")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
private String telephone;
@Column(name="idnumber")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
private String idnumber;
public String getUsername(){
......
package com.ajb.car.entity.quotation;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
......@@ -9,6 +10,8 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import com.ajb.common.utils.encryption.JPACryptoConverter;
import org.hibernate.annotations.ColumnTransformer;
/**
......@@ -252,7 +255,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 客户手机,???? ag_po_quotation.customer_mobile */
@Column(name="customer_mobile")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getCustomerMobile(){
return this.customerMobile;
}
......
......@@ -9,6 +9,7 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import com.ajb.common.utils.encryption.JPACryptoConverter;
@Entity
@Table(name="ag_po_quotation_confirm")
......@@ -149,7 +150,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 投保人证件号,???? ag_po_quotation_confirm.applicant_certcode */
@Column(name="applicant_certcode")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getApplicantCertcode(){
return this.applicantCertcode;
}
......@@ -159,7 +160,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 投保人,???? ag_po_quotation_confirm.applicant_tel */
@Column(name="applicant_tel")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getApplicantTel(){
return this.applicantTel;
}
......@@ -187,7 +188,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 被保人证件号,???? ag_po_quotation_confirm.insured_certcode */
@Column(name="insured_certcode")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getInsuredCertcode(){
return this.insuredCertcode;
}
......@@ -215,7 +216,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 权益人证件号,???? ag_po_quotation_confirm.claimant_certcode */
@Column(name="claimant_certcode")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getClaimantCertcode(){
return this.claimantCertcode;
}
......@@ -261,7 +262,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 银行账户,???? ag_po_quotation_confirm.invoice_bankcard_id */
@Column(name="invoice_bankcard_id")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getInvoiceBankcardId(){
return this.invoiceBankcardId;
}
......@@ -280,7 +281,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 登记电话,???? ag_po_quotation_confirm.invoice_tel */
@Column(name="invoice_tel")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getInvoiceTel(){
return this.invoiceTel;
}
......@@ -299,7 +300,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 收件人电话,???? ag_po_quotation_confirm.receiver_tel */
@Column(name="receiver_tel")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getReceiverTel(){
return this.receiverTel;
}
......
......@@ -10,6 +10,8 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import com.ajb.common.utils.encryption.JPACryptoConverter;
/**
车船税
*/
......@@ -138,7 +140,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 电话,???? ag_po_quotation_tax.telephone */
@Column(name="telephone")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getTelephone(){
return this.telephone;
}
......@@ -189,7 +191,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 证件号码,???? ag_po_quotation_tax.cert_code */
@Column(name="cert_code")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getCertCode(){
return this.certCode;
}
......
......@@ -9,6 +9,8 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import com.ajb.common.utils.encryption.JPACryptoConverter;
/**
报价车辆
*/
......@@ -310,7 +312,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 发动机号,???? ag_po_quotation_vehicle.engine_no */
@Column(name="engine_no")
//@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getEngineNo(){
return this.engineNo;
}
......@@ -320,7 +322,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? VIN编号,???? ag_po_quotation_vehicle.vin_no */
@Column(name="vin_no")
//@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getVinNo(){
return this.vinNo;
}
......@@ -330,7 +332,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 车架号,???? ag_po_quotation_vehicle.frame_number */
@Column(name="frame_number")
//@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getFrameNumber(){
return this.frameNumber;
}
......@@ -520,7 +522,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 证件号,???? ag_po_quotation_vehicle.owner_certi_code */
@Column(name="owner_certi_code")
//@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getOwnerCertiCode(){
return this.ownerCertiCode;
}
......@@ -645,7 +647,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 平台型号编码,???? ag_po_quotation_vehicle.platform_model_code */
@Column(name="platform_model_code")
//@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getPlatformModelCode(){
return this.platformModelCode;
}
......
......@@ -9,6 +9,7 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import com.ajb.common.utils.encryption.JPACryptoConverter;
@Entity
@Table(name="ag_po_quotation_vehicle_relation")
......@@ -170,7 +171,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 移动电话,???? ag_po_quotation_vehicle_relation.mobile_phone */
@Column(name="mobile_phone")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getMobilePhone(){
return this.mobilePhone;
}
......@@ -243,7 +244,7 @@ private static final long serialVersionUID = 1L;
}
/** ?? 固定电话,???? ag_po_quotation_vehicle_relation.telephone */
@Column(name="telephone")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getTelephone(){
return this.telephone;
}
......@@ -282,7 +283,7 @@ private static final long serialVersionUID = 1L;
this.versionNo = versionNo;
}
@Column(name="email")
@Convert(converter = com.ajb.common.utils.encryption.JPACryptoConverter.class)
@Convert(converter = JPACryptoConverter.class)
public String getEmail(){
return this.email;
}
......
......@@ -18,7 +18,7 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
......
......@@ -39,6 +39,7 @@
<factorypathentry kind="VARJAR" id="M2_REPO/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-aspects/4.3.8.RELEASE/spring-aspects-4.3.8.RELEASE.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="EXTJAR" id="D:\test\mysql\pinyin4j-2.5.0.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.2.Final/hibernate-jpa-2.1-api-1.0.2.Final.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-web/1.5.3.RELEASE/spring-boot-starter-web-1.5.3.RELEASE.jar" enabled="true" runInBatchMode="false"/>
......
package com.ajb.car.metadata.repositories;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import com.ajb.car.entity.meta.AgMdVehicleBrand;
@Repository
public interface AgMdVehicleBrandRepository extends JpaRepository<AgMdVehicleBrand, Long>,JpaSpecificationExecutor<AgMdVehicleBrand> {
/***
* mock find 10
*/
@Query(value="select * from ${context.tableName} t limit 10 ", nativeQuery=true)
List<AgMdVehicleBrand> findAll();
}
\ No newline at end of file
package com.ajb.car.metadata.service;
import java.util.List;
import org.springframework.data.domain.Sort;
import com.ajb.car.entity.meta.AgMdVehicleBrand;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
public interface AgMdVehicleBrandService {
AgMdVehicleBrand save(AgMdVehicleBrand agmdvehiclebrand);
Boolean delete (Long id);
AgMdVehicleBrand update(AgMdVehicleBrand agmdvehiclebrand);
AgMdVehicleBrand findById(Long id);
Page<AgMdVehicleBrand> findByObjPageable(AgMdVehicleBrand agmdvehiclebrand,Pageable pageable);
List<AgMdVehicleBrand> findByObjSortable(AgMdVehicleBrand agmdvehiclebrand,Sort sort);
}
\ No newline at end of file
package com.ajb.car.metadata.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import com.ajb.car.entity.meta.AgMdVehicleBrand;
import com.ajb.car.metadata.repositories.AgMdVehicleBrandRepository;
import com.ajb.car.metadata.service.AgMdVehicleBrandService;
@Service("agMdVehicleBrandService")
public class AgMdVehicleBrandServiceImpl implements AgMdVehicleBrandService{
@Autowired
private AgMdVehicleBrandRepository agMdVehicleBrandRepo;
public AgMdVehicleBrand save(AgMdVehicleBrand obj){
return agMdVehicleBrandRepo.save(obj);
}
public Boolean delete(Long id) {
try {
agMdVehicleBrandRepo .delete(id);
} catch (Exception e) {
return false;
}
return true;
}
public AgMdVehicleBrand update(AgMdVehicleBrand obj) {
return agMdVehicleBrandRepo.saveAndFlush(obj);
}
public AgMdVehicleBrand findById(Long id){
return agMdVehicleBrandRepo.findOne(id);
}
public Page<AgMdVehicleBrand> findByObjPageable(AgMdVehicleBrand obj,Pageable pageable){
ExampleMatcher matcher = ExampleMatcher.matching();
Example<AgMdVehicleBrand> ex = Example.of(obj, matcher);
return agMdVehicleBrandRepo.findAll(ex,pageable);
}
public List<AgMdVehicleBrand> findByObjSortable(AgMdVehicleBrand obj,Sort sort){
ExampleMatcher matcher = ExampleMatcher.matching();
Example<AgMdVehicleBrand> ex = Example.of(obj, matcher);
return agMdVehicleBrandRepo.findAll(ex,sort);
}
}
\ No newline at end of file
......@@ -23,5 +23,6 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="D:/test/mysql/pinyin4j-2.5.0.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/java/com/ajb/common/utils/string/ChinesePinyinUtil.java=UTF-8
encoding//src/main/java/com/ajb/common/utils/string/StringUtil.java=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8
......@@ -83,6 +83,13 @@
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
<build>
<plugins>
......
package com.ajb.common.utils.encryption;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
/**
* jwt安全验证设置 head tag,seal封条,过期时间,发行,bypass
* @author Simon Cheng
*/
@Service
public class JPASensitiveSetting {
@Value("${jpa.sensitivekey}")
public String sensitivekey;
}
package com.ajb.common.utils.string;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/**
* @author zk
* @Description: ����ƴ��������
* @date 2018-05-21 14:52
*/
public class ChinesePinyinUtil {
public static String captureName(String name) {
char[] cs=name.toCharArray();
cs[0]-=32;
return String.valueOf(cs);
}
/**
* �õ� ���ֵ�ȫƴ
* @param src �����ַ���
* @return
*/
public static String getPingYin(String src) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
StringBuilder sb = new StringBuilder();
char[] srcArray = src.toCharArray();
try {
for (int i = 0; i < srcArray.length; i++) {
// �ж��Ƿ�Ϊ�����ַ�
if (java.lang.Character.toString(srcArray[i]).matches("[\\u4E00-\\u9FA5]+")) {
String[] targetArray = PinyinHelper.toHanyuPinyinStringArray(srcArray[i], format);
sb.append(targetArray[0]);
} else {
sb.append(java.lang.Character.toString(srcArray[i]));
}
}
return sb.toString();
} catch (BadHanyuPinyinOutputFormatCombination e1) {
e1.printStackTrace();
}
return captureName(sb.toString());
}
/**
* �õ���������ĸ,����"ר��"�õ�zk����
* @param str �����ַ���
* @return
*/
public static String getPinYinHeadChar(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char word = str.charAt(i);
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray != null) {
sb.append(pinyinArray[0].charAt(0));
} else {
sb.append(word);
}
}
return sb.toString();
}
/**
* ���ַ���ת��ΪASCII��
* @param cnStr �����ַ���
* @return
*/
public static String getCnASCII(String cnStr) {
StringBuilder sb = new StringBuilder();
byte[] bGBK = cnStr.getBytes();
for (int i = 0; i < bGBK.length; i++) {
sb.append(Integer.toHexString(bGBK[i] & 0xff));
}
return sb.toString();
}
public static void main(String[] args) {
String cnStr = "����,�����Ѿ���չ(ר��)��-������";
System.out.println(getPingYin(cnStr));
System.out.println(getPinYinHeadChar(cnStr));
System.out.println(getCnASCII("ר��"));
}
}
\ No newline at end of file
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/java/com/ajb/car/vo/common/JsonResult.java=UTF-8
encoding//src/main/java/com/ajb/car/vo/meta/AgMdVehicleBrandDeleteRequestVO.java=UTF-8
encoding//src/main/java/com/ajb/car/vo/meta/AgMdVehicleBrandRequestVO.java=UTF-8
encoding//src/main/java/com/ajb/car/vo/meta/AgMdVehicleBrandResponseVO.java=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8
package com.ajb.car.vo.meta;
import java.util.Date;
import java.math.BigDecimal;
/**
车品牌列表
*/
public class AgMdVehicleBrandDeleteRequestVO implements java.io.Serializable {
private static final long serialVersionUID = 1L;
// serial id
private Long id;
// 车品牌名
private String brandName;
// 车品牌英文名
private String brandNameEn;
// 车品牌英文缩写
private String brandNameAbbre;
// 0=No, 1=Yes热门品牌
private Integer isPopular;
// 0=No, 1=Yes
private Integer isActive;
private Date createdAt;
private Integer createdBy;
/** ?? serial id,???? ag_md_vehicle_brand.id */
public void setId(Long id){
this.id = id;
}
/** ?? serial id,???? ag_md_vehicle_brand.id */
public Long getId(){
return this.id;
}
/** ?? 车品牌名,???? ag_md_vehicle_brand.brand_name */
public void setBrandName(String brandName){
this.brandName = brandName;
}
/** ?? 车品牌名,???? ag_md_vehicle_brand.brand_name */
public String getBrandName(){
return this.brandName;
}
/** ?? 车品牌英文名,???? ag_md_vehicle_brand.brand_name_en */
public void setBrandNameEn(String brandNameEn){
this.brandNameEn = brandNameEn;
}
/** ?? 车品牌英文名,???? ag_md_vehicle_brand.brand_name_en */
public String getBrandNameEn(){
return this.brandNameEn;
}
/** ?? 车品牌英文缩写,???? ag_md_vehicle_brand.brand_name_abbre */
public void setBrandNameAbbre(String brandNameAbbre){
this.brandNameAbbre = brandNameAbbre;
}
/** ?? 车品牌英文缩写,???? ag_md_vehicle_brand.brand_name_abbre */
public String getBrandNameAbbre(){
return this.brandNameAbbre;
}
/** ?? 0=No, 1=Yes热门品牌,???? ag_md_vehicle_brand.is_popular */
public void setIsPopular(Integer isPopular){
this.isPopular = isPopular;
}
/** ?? 0=No, 1=Yes热门品牌,???? ag_md_vehicle_brand.is_popular */
public Integer getIsPopular(){
return this.isPopular;
}
/** ?? 0=No, 1=Yes,???? ag_md_vehicle_brand.is_active */
public void setIsActive(Integer isActive){
this.isActive = isActive;
}
/** ?? 0=No, 1=Yes,???? ag_md_vehicle_brand.is_active */
public Integer getIsActive(){
return this.isActive;
}
public void setCreatedAt(Date createdAt){
this.createdAt = createdAt;
}
public Date getCreatedAt(){
return this.createdAt;
}
public void setCreatedBy(Integer createdBy){
this.createdBy = createdBy;
}
public Integer getCreatedBy(){
return this.createdBy;
}
}
\ No newline at end of file
package com.ajb.car.vo.meta;
import java.util.Date;
import java.math.BigDecimal;
/**
车品牌列表
*/
public class AgMdVehicleBrandRequestVO implements java.io.Serializable {
private static final long serialVersionUID = 1L;
// serial id
private Long id;
// 车品牌名
private String brandName;
// 车品牌英文名
private String brandNameEn;
// 车品牌英文缩写
private String brandNameAbbre;
// 0=No, 1=Yes热门品牌
private Integer isPopular;
// 0=No, 1=Yes
private Integer isActive;
private Date createdAt;
private Integer createdBy;
/** ?? serial id,???? ag_md_vehicle_brand.id */
public void setId(Long id){
this.id = id;
}
/** ?? serial id,???? ag_md_vehicle_brand.id */
public Long getId(){
return this.id;
}
/** ?? 车品牌名,???? ag_md_vehicle_brand.brand_name */
public void setBrandName(String brandName){
this.brandName = brandName;
}
/** ?? 车品牌名,???? ag_md_vehicle_brand.brand_name */
public String getBrandName(){
return this.brandName;
}
/** ?? 车品牌英文名,???? ag_md_vehicle_brand.brand_name_en */
public void setBrandNameEn(String brandNameEn){
this.brandNameEn = brandNameEn;
}
/** ?? 车品牌英文名,???? ag_md_vehicle_brand.brand_name_en */
public String getBrandNameEn(){
return this.brandNameEn;
}
/** ?? 车品牌英文缩写,???? ag_md_vehicle_brand.brand_name_abbre */
public void setBrandNameAbbre(String brandNameAbbre){
this.brandNameAbbre = brandNameAbbre;
}
/** ?? 车品牌英文缩写,???? ag_md_vehicle_brand.brand_name_abbre */
public String getBrandNameAbbre(){
return this.brandNameAbbre;
}
/** ?? 0=No, 1=Yes热门品牌,???? ag_md_vehicle_brand.is_popular */
public void setIsPopular(Integer isPopular){
this.isPopular = isPopular;
}
/** ?? 0=No, 1=Yes热门品牌,???? ag_md_vehicle_brand.is_popular */
public Integer getIsPopular(){
return this.isPopular;
}
/** ?? 0=No, 1=Yes,???? ag_md_vehicle_brand.is_active */
public void setIsActive(Integer isActive){
this.isActive = isActive;
}
/** ?? 0=No, 1=Yes,???? ag_md_vehicle_brand.is_active */
public Integer getIsActive(){
return this.isActive;
}
public void setCreatedAt(Date createdAt){
this.createdAt = createdAt;
}
public Date getCreatedAt(){
return this.createdAt;
}
public void setCreatedBy(Integer createdBy){
this.createdBy = createdBy;
}
public Integer getCreatedBy(){
return this.createdBy;
}
}
\ No newline at end of file
package com.ajb.car.vo.meta;
import com.ajb.car.vo.common.CommonResult;
public class AgMdVehicleBrandResponseVO implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private CommonResult commonResult;
private AgMdVehicleBrandRequestVO vo;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
public AgMdVehicleBrandRequestVO getRequestVO() {
return vo;
}
public void setRequestVO(AgMdVehicleBrandRequestVO vo) {
this.vo = vo;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment