Commit da32937a by Water Wang

Merge remote-tracking branch 'refs/remotes/origin/master'

parents f24cfd1d 0e59d6cf
...@@ -144,6 +144,22 @@ ...@@ -144,6 +144,22 @@
<artifactId>commons-collections</artifactId> <artifactId>commons-collections</artifactId>
<version>3.2.2</version> <version>3.2.2</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.yd.api.practitioner; package com.yd.api.practitioner;
import com.yd.api.practitioner.service.PractitionerPolicyService; import com.yd.api.practitioner.service.PractitionerBasicInfoService;
import com.yd.api.practitioner.service.PractitionerService; import com.yd.api.practitioner.service.PractitionerService;
import com.yd.api.practitioner.vo.login.PractitionerLoginRequestVO; import com.yd.api.practitioner.vo.login.PractitionerLoginRequestVO;
import com.yd.api.practitioner.vo.login.PractitionerLoginResponseVO; import com.yd.api.practitioner.vo.login.PractitionerLoginResponseVO;
import com.yd.api.practitioner.vo.media.MediaGetReqVO; import com.yd.api.practitioner.vo.media.MediaGetReqVO;
import com.yd.api.practitioner.vo.media.MediaGetRespVO; import com.yd.api.practitioner.vo.media.MediaGetRespVO;
import com.yd.api.practitioner.vo.opportunity.*; import com.yd.api.practitioner.vo.opportunity.*;
import com.yd.api.practitioner.vo.payscale.PayScalePdfRequestVO;
import com.yd.api.practitioner.vo.payscale.PayScalePdfResponseVO;
import com.yd.api.practitioner.vo.payscale.PayScaleQueryRequestVO;
import com.yd.api.practitioner.vo.payscale.PayScaleQueryResponseVO;
import com.yd.api.practitioner.vo.policy.PolicyListQueryRequestVO; import com.yd.api.practitioner.vo.policy.PolicyListQueryRequestVO;
import com.yd.api.practitioner.vo.policy.PolicyListQueryResponseVO; import com.yd.api.practitioner.vo.policy.PolicyListQueryResponseVO;
import com.yd.api.practitioner.vo.policy.policyinfoquery.PolicyInfoQueryRequestVO; import com.yd.api.practitioner.vo.policy.policyinfoquery.PolicyInfoQueryRequestVO;
...@@ -21,9 +25,7 @@ import com.yd.api.practitioner.vo.subordinate.SubordinateSystemMemberQueryRespon ...@@ -21,9 +25,7 @@ import com.yd.api.practitioner.vo.subordinate.SubordinateSystemMemberQueryRespon
import com.yd.api.result.JsonResult; import com.yd.api.result.JsonResult;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Controller @Controller
@RestController @RestController
...@@ -33,7 +35,7 @@ public class PractitionerController { ...@@ -33,7 +35,7 @@ public class PractitionerController {
@Autowired @Autowired
private PractitionerService practitionerService; private PractitionerService practitionerService;
@Autowired @Autowired
private PractitionerPolicyService practitionerPolicyService; private PractitionerBasicInfoService practitionerBasicInfoService;
/** /**
* 经纪人登录 * 经纪人登录
...@@ -422,7 +424,7 @@ public class PractitionerController { ...@@ -422,7 +424,7 @@ public class PractitionerController {
@RequestMapping("/policyListQuery") @RequestMapping("/policyListQuery")
public Object practitionerPolicyListQuery(@RequestBody PolicyListQueryRequestVO requestVO){ public Object practitionerPolicyListQuery(@RequestBody PolicyListQueryRequestVO requestVO){
JsonResult result = new JsonResult(); JsonResult result = new JsonResult();
PolicyListQueryResponseVO responseVO = practitionerPolicyService.policyListQuery(requestVO); PolicyListQueryResponseVO responseVO = practitionerBasicInfoService.policyListQuery(requestVO);
result.setData(responseVO); result.setData(responseVO);
result.addResult(responseVO); result.addResult(responseVO);
return result; return result;
...@@ -436,7 +438,36 @@ public class PractitionerController { ...@@ -436,7 +438,36 @@ public class PractitionerController {
@RequestMapping("/policyInfoQuery") @RequestMapping("/policyInfoQuery")
public Object policyInfoQuery(@RequestBody PolicyInfoQueryRequestVO requestVO){ public Object policyInfoQuery(@RequestBody PolicyInfoQueryRequestVO requestVO){
JsonResult result = new JsonResult(); JsonResult result = new JsonResult();
PolicyInfoQueryResponseVO responseVO = practitionerPolicyService.policyInfoQuery(requestVO); PolicyInfoQueryResponseVO responseVO = practitionerBasicInfoService.policyInfoQuery(requestVO);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* 经纪人薪资表查询接口
* @param requestVO 请求信息
* @return PolicyInfoQueryResponseVO
*/
@RequestMapping("/payScaleListQuery")
public Object payScaleListQuery(@RequestBody PayScaleQueryRequestVO requestVO){
JsonResult result = new JsonResult();
PayScaleQueryResponseVO responseVO = practitionerBasicInfoService.payScaleListQuery(requestVO);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* 获取经纪人的薪资表
* @param requestVO 请求信息
* @return 返回信息
*/
@PostMapping(value = "/payScalePdf")
public Object payScalePdf(@RequestBody PayScalePdfRequestVO requestVO){
JsonResult result = new JsonResult();
PayScalePdfResponseVO responseVO = practitionerBasicInfoService.payScalePdf(requestVO);
result.setData(responseVO); result.setData(responseVO);
result.addResult(responseVO); result.addResult(responseVO);
return result; return result;
......
package com.yd.api.practitioner.service; package com.yd.api.practitioner.service;
import com.yd.api.practitioner.vo.payscale.PayScalePdfRequestVO;
import com.yd.api.practitioner.vo.payscale.PayScalePdfResponseVO;
import com.yd.api.practitioner.vo.payscale.PayScaleQueryRequestVO;
import com.yd.api.practitioner.vo.payscale.PayScaleQueryResponseVO;
import com.yd.api.practitioner.vo.policy.PolicyListQueryRequestVO; import com.yd.api.practitioner.vo.policy.PolicyListQueryRequestVO;
import com.yd.api.practitioner.vo.policy.PolicyListQueryResponseVO; import com.yd.api.practitioner.vo.policy.PolicyListQueryResponseVO;
import com.yd.api.practitioner.vo.policy.policyinfoquery.PolicyInfoQueryRequestVO; import com.yd.api.practitioner.vo.policy.policyinfoquery.PolicyInfoQueryRequestVO;
import com.yd.api.practitioner.vo.policy.policyinfoquery.PolicyInfoQueryResponseVO; import com.yd.api.practitioner.vo.policy.policyinfoquery.PolicyInfoQueryResponseVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service("practitionerPolicyService") @Service("practitionerBasicInfoService")
public interface PractitionerPolicyService { public interface PractitionerBasicInfoService {
/** /**
* 经纪人保单列表查询 * 经纪人保单列表查询
* @param requestVO 请求信息 * @param requestVO 请求信息
...@@ -21,4 +25,18 @@ public interface PractitionerPolicyService { ...@@ -21,4 +25,18 @@ public interface PractitionerPolicyService {
* @return PolicyInfoQueryResponseVO * @return PolicyInfoQueryResponseVO
*/ */
PolicyInfoQueryResponseVO policyInfoQuery(PolicyInfoQueryRequestVO requestVO); PolicyInfoQueryResponseVO policyInfoQuery(PolicyInfoQueryRequestVO requestVO);
/**
* eGolden -- 经纪人薪资表查询
* @param requestVO 请求信息
* @return 相应
*/
PayScaleQueryResponseVO payScaleListQuery(PayScaleQueryRequestVO requestVO);
/**
* 获取经纪人的薪资表
* @param requestVO 请求信息
* @return 响应信息
*/
PayScalePdfResponseVO payScalePdf(PayScalePdfRequestVO requestVO);
} }
...@@ -174,6 +174,7 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service. ...@@ -174,6 +174,7 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
isSpecial = mobileSpecials.contains(mobileNo); isSpecial = mobileSpecials.contains(mobileNo);
} }
if(28L == practitionerType || isSpecial){//只有寿险的经纪人和注册为经纪人的员工才能登录 if(28L == practitionerType || isSpecial){//只有寿险的经纪人和注册为经纪人的员工才能登录
PractitionerBasicInfo practitionerBasicInfo = aclPractitionerDALService.findByMobileNoE(mobileNo);
Long practitionerId = practitionerInfo.getPractitionerId(); Long practitionerId = practitionerInfo.getPractitionerId();
Long customerId = practitionerInfo.getCustomerId(); Long customerId = practitionerInfo.getCustomerId();
AclCustomer customer = aclCustomerDALService.findById(customerId); AclCustomer customer = aclCustomerDALService.findById(customerId);
...@@ -193,6 +194,9 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service. ...@@ -193,6 +194,9 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
basicInfo.setSubordinateLeader(subordinateInfo.getSubordinateLeader()); basicInfo.setSubordinateLeader(subordinateInfo.getSubordinateLeader());
} }
} }
if(practitionerBasicInfo != null){
responseVO.setPractitionerIdEG(practitionerBasicInfo.getPractitionerId());
}
//获取用户的登录次数 //获取用户的登录次数
List<AclCustomerLog> customerLogList = aclCustomerLogDALService.findLogInfoByCustomerId(customerId); List<AclCustomerLog> customerLogList = aclCustomerLogDALService.findLogInfoByCustomerId(customerId);
int logTimes = (customerLogList.isEmpty()) ? 0 : customerLogList.size(); int logTimes = (customerLogList.isEmpty()) ? 0 : customerLogList.size();
...@@ -225,7 +229,6 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service. ...@@ -225,7 +229,6 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
+ "appid=" + appId + "appid=" + appId
+ "&redirect_uri=" + redirectUri + "&redirect_uri=" + redirectUri
+ "&response_type=code&scope=snsapi_base&state=123#wechat_redirect"; + "&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
System.out.println(">>>>>url>>>>>>>:" + url);
responseVO.setGetOpenIdUrl(url); responseVO.setGetOpenIdUrl(url);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -6,6 +6,7 @@ import com.yd.api.result.CommonResult; ...@@ -6,6 +6,7 @@ import com.yd.api.result.CommonResult;
public class PractitionerLoginResponseVO { public class PractitionerLoginResponseVO {
private Long customerId; private Long customerId;
private Long practitionerId; private Long practitionerId;
private String practitionerIdEG;
private Integer loginTimes; private Integer loginTimes;
private String getOpenIdUrl; private String getOpenIdUrl;
private PractitionerLoginBasicInfo practitionerBasicInfo; private PractitionerLoginBasicInfo practitionerBasicInfo;
...@@ -43,6 +44,14 @@ public class PractitionerLoginResponseVO { ...@@ -43,6 +44,14 @@ public class PractitionerLoginResponseVO {
this.practitionerBasicInfo = practitionerBasicInfo; this.practitionerBasicInfo = practitionerBasicInfo;
} }
public String getPractitionerIdEG() {
return practitionerIdEG;
}
public void setPractitionerIdEG(String practitionerIdEG) {
this.practitionerIdEG = practitionerIdEG;
}
public String getGetOpenIdUrl() { public String getGetOpenIdUrl() {
return getOpenIdUrl; return getOpenIdUrl;
} }
......
package com.yd.api.practitioner.vo.payscale;
public class PayScaleInfo {
private Integer monShId;
private String salMstId;
private String drpTitleCode;
private String monDtlType;
private String monDtlItem;
private Integer monDtlPeriod;
private Double monDtlAmount;
private Double monDtlRAmount;
private String createDate;
private String createUser;
public Integer getMonShId() {
return monShId;
}
public void setMonShId(Integer monShId) {
this.monShId = monShId;
}
public String getSalMstId() {
return salMstId;
}
public void setSalMstId(String salMstId) {
this.salMstId = salMstId;
}
public String getDrpTitleCode() {
return drpTitleCode;
}
public void setDrpTitleCode(String drpTitleCode) {
this.drpTitleCode = drpTitleCode;
}
public String getMonDtlType() {
return monDtlType;
}
public void setMonDtlType(String monDtlType) {
this.monDtlType = monDtlType;
}
public String getMonDtlItem() {
return monDtlItem;
}
public void setMonDtlItem(String monDtlItem) {
this.monDtlItem = monDtlItem;
}
public Double getMonDtlAmount() {
return monDtlAmount;
}
public void setMonDtlAmount(Double monDtlAmount) {
this.monDtlAmount = monDtlAmount;
}
public Double getMonDtlRAmount() {
return monDtlRAmount;
}
public void setMonDtlRAmount(Double monDtlRAmount) {
this.monDtlRAmount = monDtlRAmount;
}
public String getCreateDate() {
return createDate;
}
public void setCreateDate(String createDate) {
this.createDate = createDate;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public Integer getMonDtlPeriod() {
return monDtlPeriod;
}
public void setMonDtlPeriod(Integer monDtlPeriod) {
this.monDtlPeriod = monDtlPeriod;
}
}
package com.yd.api.practitioner.vo.payscale;
public class PayScalePdfRequestVO {
private Integer monShId;
private Long practitionerId;
public Long getPractitionerId() {
return practitionerId;
}
public void setPractitionerId(Long practitionerId) {
this.practitionerId = practitionerId;
}
public Integer getMonShId() {
return monShId;
}
public void setMonShId(Integer monShId) {
this.monShId = monShId;
}
}
package com.yd.api.practitioner.vo.payscale;
import com.yd.api.result.CommonResult;
public class PayScalePdfResponseVO {
private String url;
private CommonResult commonResult;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
package com.yd.api.practitioner.vo.payscale;
public class PayScaleQueryRequestVO {
private String practitionerIdEG;
public String getPractitionerIdEG() {
return practitionerIdEG;
}
public void setPractitionerIdEG(String practitionerIdEG) {
this.practitionerIdEG = practitionerIdEG;
}
}
package com.yd.api.practitioner.vo.payscale;
import com.yd.api.result.CommonResult;
import java.util.List;
public class PayScaleQueryResponseVO {
private List<PayScaleInfo> payScaleInfos;
private CommonResult commonResult;
public List<PayScaleInfo> getPayScaleInfos() {
return payScaleInfos;
}
public void setPayScaleInfos(List<PayScaleInfo> payScaleInfos) {
this.payScaleInfos = payScaleInfos;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
...@@ -8,6 +8,7 @@ public class PractitionerBasicInfo { ...@@ -8,6 +8,7 @@ public class PractitionerBasicInfo {
private String titleCode; private String titleCode;
private String titleName; private String titleName;
private String gender; private String gender;
private String mobileNo;
public Long getCustomerId() { public Long getCustomerId() {
return customerId; return customerId;
...@@ -65,4 +66,11 @@ public class PractitionerBasicInfo { ...@@ -65,4 +66,11 @@ public class PractitionerBasicInfo {
this.gender = gender; this.gender = gender;
} }
public String getMobileNo() {
return mobileNo;
}
public void setMobileNo(String mobileNo) {
this.mobileNo = mobileNo;
}
} }
...@@ -6,6 +6,9 @@ public class OptionsEGolden { ...@@ -6,6 +6,9 @@ public class OptionsEGolden {
private String optName; private String optName;
private String optAttr; private String optAttr;
private String optOrder; private String optOrder;
private String titleCode;
private String titleName;
private String titleLevel;
public Integer getOptId() { public Integer getOptId() {
return optId; return optId;
...@@ -46,4 +49,28 @@ public class OptionsEGolden { ...@@ -46,4 +49,28 @@ public class OptionsEGolden {
public void setOptOrder(String optOrder) { public void setOptOrder(String optOrder) {
this.optOrder = optOrder; this.optOrder = optOrder;
} }
public String getTitleCode() {
return titleCode;
}
public void setTitleCode(String titleCode) {
this.titleCode = titleCode;
}
public String getTitleName() {
return titleName;
}
public void setTitleName(String titleName) {
this.titleName = titleName;
}
public String getTitleLevel() {
return titleLevel;
}
public void setTitleLevel(String titleLevel) {
this.titleLevel = titleLevel;
}
} }
...@@ -22,6 +22,7 @@ public class CustomerPolicyInfo implements Comparable<CustomerPolicyInfo>{ ...@@ -22,6 +22,7 @@ public class CustomerPolicyInfo implements Comparable<CustomerPolicyInfo>{
private Integer platform;//1、银盾在线,2、EGolden private Integer platform;//1、银盾在线,2、EGolden
private Long planId; private Long planId;
private Long productId; private Long productId;
private Long fortuneId;
public Long getOrderId() { public Long getOrderId() {
return orderId; return orderId;
...@@ -129,6 +130,14 @@ public class CustomerPolicyInfo implements Comparable<CustomerPolicyInfo>{ ...@@ -129,6 +130,14 @@ public class CustomerPolicyInfo implements Comparable<CustomerPolicyInfo>{
this.productId = productId; this.productId = productId;
} }
public Long getFortuneId() {
return fortuneId;
}
public void setFortuneId(Long fortuneId) {
this.fortuneId = fortuneId;
}
@Override @Override
public int compareTo(CustomerPolicyInfo o) { public int compareTo(CustomerPolicyInfo o) {
String orderDate1 = o.getOrderDate(); String orderDate1 = o.getOrderDate();
......
package com.yd.dal.entity.practitioner.payscale;
public class PayScaleBasicInfo {
private Integer monShId;
private String salMstId;
private String drpTitleCode;
private String monDtlType;
private String monDtlItem;
private Integer monDtlPeriod;
private Double monDtlAmount;
private Double monDtlRAmount;
private String createDate;
private String createUser;
private String uploadPath;
private String uploadTime;
public Integer getMonShId() {
return monShId;
}
public void setMonShId(Integer monShId) {
this.monShId = monShId;
}
public String getSalMstId() {
return salMstId;
}
public void setSalMstId(String salMstId) {
this.salMstId = salMstId;
}
public String getDrpTitleCode() {
return drpTitleCode;
}
public void setDrpTitleCode(String drpTitleCode) {
this.drpTitleCode = drpTitleCode;
}
public String getMonDtlType() {
return monDtlType;
}
public void setMonDtlType(String monDtlType) {
this.monDtlType = monDtlType;
}
public String getMonDtlItem() {
return monDtlItem;
}
public void setMonDtlItem(String monDtlItem) {
this.monDtlItem = monDtlItem;
}
public Double getMonDtlAmount() {
return monDtlAmount;
}
public void setMonDtlAmount(Double monDtlAmount) {
this.monDtlAmount = monDtlAmount;
}
public Double getMonDtlRAmount() {
return monDtlRAmount;
}
public void setMonDtlRAmount(Double monDtlRAmount) {
this.monDtlRAmount = monDtlRAmount;
}
public String getCreateDate() {
return createDate;
}
public void setCreateDate(String createDate) {
this.createDate = createDate;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public Integer getMonDtlPeriod() {
return monDtlPeriod;
}
public void setMonDtlPeriod(Integer monDtlPeriod) {
this.monDtlPeriod = monDtlPeriod;
}
public String getUploadPath() {
return uploadPath;
}
public void setUploadPath(String uploadPath) {
this.uploadPath = uploadPath;
}
public String getUploadTime() {
return uploadTime;
}
public void setUploadTime(String uploadTime) {
this.uploadTime = uploadTime;
}
}
...@@ -22,4 +22,6 @@ public interface AclFileUploadMapper { ...@@ -22,4 +22,6 @@ public interface AclFileUploadMapper {
CustomerFileUpload findByTargetTypeAndTargetUseForAndTargetId(@Param("targetType")Integer targetType, @Param("targetUseFor")Integer targetUseFor, @Param("practitionerId")Long practitionerId); CustomerFileUpload findByTargetTypeAndTargetUseForAndTargetId(@Param("targetType")Integer targetType, @Param("targetUseFor")Integer targetUseFor, @Param("practitionerId")Long practitionerId);
List<AclFileUpload> findByAclFileUpload(AclFileUpload fileUpload); List<AclFileUpload> findByAclFileUpload(AclFileUpload fileUpload);
AclFileUpload findByTargetIdAndRemark(@Param("type")Integer type, @Param("targetId")Long targetId, @Param("remark")String remark);
} }
\ No newline at end of file
package com.yd.dal.mapper.customer; package com.yd.dal.mapper.customer;
import com.yd.api.practitioner.vo.payscale.PayScaleInfo;
import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo; import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo;
import com.yd.dal.entity.customer.AclPractitioner; import com.yd.dal.entity.customer.AclPractitioner;
import com.yd.dal.entity.customer.practitioner.PractitionerBasicInfo; import com.yd.dal.entity.customer.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerInfo; import com.yd.dal.entity.customer.practitioner.PractitionerInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerRankInfo; import com.yd.dal.entity.customer.practitioner.PractitionerRankInfo;
import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo; import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo;
import com.yd.dal.entity.practitioner.payscale.PayScaleBasicInfo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -54,4 +56,10 @@ public interface AclPractitionerMapper { ...@@ -54,4 +56,10 @@ public interface AclPractitionerMapper {
PractitionerRankInfo getPractitionerRankInfoByPractitionerIdEG(@Param("practitionerIdEG") String practitionerIdEG, @Param("time") Integer time); PractitionerRankInfo getPractitionerRankInfoByPractitionerIdEG(@Param("practitionerIdEG") String practitionerIdEG, @Param("time") Integer time);
PractitionerRankInfo getPractitionerRankInfoByPractitionerIdYD(@Param("practitionerId")Long practitionerId, @Param("time")Integer time); PractitionerRankInfo getPractitionerRankInfoByPractitionerIdYD(@Param("practitionerId")Long practitionerId, @Param("time")Integer time);
List<PayScaleInfo> findPayScaleByPractitionerEG(@Param("practitionerIdEG")String practitionerIdEG);
PayScaleBasicInfo findFilePathByMonShId(@Param("monShId")Integer monShId);
PractitionerBasicInfo findByIdEG(@Param("practitionerIdEG")String practitionerIdEG);
} }
\ No newline at end of file
...@@ -31,4 +31,6 @@ public interface MdDropOptionsMapper { ...@@ -31,4 +31,6 @@ public interface MdDropOptionsMapper {
List<MdDropOptions> findByMasterCodeAndOptionsCode(@Param("masterCode")String masterCode, @Param("optionsCode")String optionsCode); List<MdDropOptions> findByMasterCodeAndOptionsCode(@Param("masterCode")String masterCode, @Param("optionsCode")String optionsCode);
List<OptionsEGolden> findByMasterIdsE(@Param("materIds")List<Integer> materIds); List<OptionsEGolden> findByMasterIdsE(@Param("materIds")List<Integer> materIds);
List<OptionsEGolden> findAllTitleEG();
} }
\ No newline at end of file
...@@ -42,4 +42,13 @@ public interface AclFileUploadDALService { ...@@ -42,4 +42,13 @@ public interface AclFileUploadDALService {
* @param aclFileUpload * @param aclFileUpload
*/ */
void saveFileUpload(AclFileUpload aclFileUpload); void saveFileUpload(AclFileUpload aclFileUpload);
/**
* 根据条件查询
* @param type 类型
* @param targetId id
* @param remark 备注
* @return
*/
AclFileUpload findByTargetIdAndRemark(Integer type, Long targetId, String remark);
} }
package com.yd.dal.service.customer; package com.yd.dal.service.customer;
import com.yd.api.practitioner.vo.payscale.PayScaleInfo;
import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo; import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo;
import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo; import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo;
import com.yd.dal.entity.customer.AclPractitioner; import com.yd.dal.entity.customer.AclPractitioner;
import com.yd.dal.entity.customer.practitioner.PractitionerBasicInfo; import com.yd.dal.entity.customer.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerInfo; import com.yd.dal.entity.customer.practitioner.PractitionerInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerRankInfo; import com.yd.dal.entity.customer.practitioner.PractitionerRankInfo;
import com.yd.dal.entity.practitioner.payscale.PayScaleBasicInfo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
...@@ -139,4 +141,25 @@ public interface AclPractitionerDALService { ...@@ -139,4 +141,25 @@ public interface AclPractitionerDALService {
* @return 返回结果 * @return 返回结果
*/ */
PractitionerRankInfo getPractitionerRankInfoByPractitionerIdYD(Long practitionerId, Integer time); PractitionerRankInfo getPractitionerRankInfoByPractitionerIdYD(Long practitionerId, Integer time);
/**
* eGolden -- 根据经纪人id获取薪资表列表
* @param practitionerIdEG 经纪人id
* @return 结果
*/
List<PayScaleInfo> findPayScaleByPractitionerEG(String practitionerIdEG);
/**
* 查询经纪人薪资文件路径
* @param monShId 流水号
* @return 结果
*/
PayScaleBasicInfo findFilePathByMonShId(Integer monShId);
/**
* 根据EGolden查询
* @param practitionerIdEG id
* @return 返回
*/
PractitionerBasicInfo findByIdEG(String practitionerIdEG);
} }
...@@ -6,6 +6,7 @@ import com.yd.dal.mapper.customer.AclFileUploadMapper; ...@@ -6,6 +6,7 @@ import com.yd.dal.mapper.customer.AclFileUploadMapper;
import com.yd.dal.service.customer.AclFileUploadDALService; import com.yd.dal.service.customer.AclFileUploadDALService;
import com.yd.util.intercept.annotation.TargetDataSource; import com.yd.util.intercept.annotation.TargetDataSource;
import com.yd.util.intercept.commons.DataSourceKey; import com.yd.util.intercept.commons.DataSourceKey;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -47,4 +48,9 @@ public class AclFileUploadDALServiceImpl implements AclFileUploadDALService { ...@@ -47,4 +48,9 @@ public class AclFileUploadDALServiceImpl implements AclFileUploadDALService {
public void saveFileUpload(AclFileUpload aclFileUpload) { public void saveFileUpload(AclFileUpload aclFileUpload) {
aclFileUploadMapper.insertSelective(aclFileUpload); aclFileUploadMapper.insertSelective(aclFileUpload);
} }
@Override
public AclFileUpload findByTargetIdAndRemark(Integer type,Long targetId, String remark ) {
return aclFileUploadMapper.findByTargetIdAndRemark(type,targetId,remark);
}
} }
package com.yd.dal.service.customer.impl; package com.yd.dal.service.customer.impl;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.yd.api.practitioner.vo.payscale.PayScaleInfo;
import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo; import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo;
import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo; import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo;
import com.yd.dal.entity.customer.AclPractitioner; import com.yd.dal.entity.customer.AclPractitioner;
import com.yd.dal.entity.customer.practitioner.PractitionerBasicInfo; import com.yd.dal.entity.customer.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerInfo; import com.yd.dal.entity.customer.practitioner.PractitionerInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerRankInfo; import com.yd.dal.entity.customer.practitioner.PractitionerRankInfo;
import com.yd.dal.entity.practitioner.payscale.PayScaleBasicInfo;
import com.yd.dal.mapper.customer.AclPractitionerMapper; import com.yd.dal.mapper.customer.AclPractitionerMapper;
import com.yd.dal.service.customer.AclPractitionerDALService; import com.yd.dal.service.customer.AclPractitionerDALService;
import com.yd.util.deshandler.DESTypeHandler; import com.yd.util.deshandler.DESTypeHandler;
...@@ -135,4 +137,22 @@ public class AclPractitionerDALServiceImpl implements AclPractitionerDALService ...@@ -135,4 +137,22 @@ public class AclPractitionerDALServiceImpl implements AclPractitionerDALService
public PractitionerRankInfo getPractitionerRankInfoByPractitionerIdYD(Long practitionerId, Integer time) { public PractitionerRankInfo getPractitionerRankInfoByPractitionerIdYD(Long practitionerId, Integer time) {
return aclPractitionerMapper.getPractitionerRankInfoByPractitionerIdYD(practitionerId,time); return aclPractitionerMapper.getPractitionerRankInfoByPractitionerIdYD(practitionerId,time);
} }
@Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_EGOLDEN)
public List<PayScaleInfo> findPayScaleByPractitionerEG(String practitionerIdEG) {
return aclPractitionerMapper.findPayScaleByPractitionerEG(practitionerIdEG);
}
@Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_EGOLDEN)
public PayScaleBasicInfo findFilePathByMonShId(Integer monShId) {
return aclPractitionerMapper.findFilePathByMonShId(monShId);
}
@Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_EGOLDEN)
public PractitionerBasicInfo findByIdEG(String practitionerIdEG) {
return aclPractitionerMapper.findByIdEG(practitionerIdEG);
}
} }
...@@ -21,4 +21,6 @@ public interface MdDropOptionsDALService { ...@@ -21,4 +21,6 @@ public interface MdDropOptionsDALService {
List<MdDropOptions> findByMasterCodeAndOptionsCode(String team_building_track, String s); List<MdDropOptions> findByMasterCodeAndOptionsCode(String team_building_track, String s);
List<OptionsEGolden> findByMasterIdsE(List<Integer> materIds); List<OptionsEGolden> findByMasterIdsE(List<Integer> materIds);
List<OptionsEGolden> findAllTitleEG();
} }
...@@ -61,4 +61,10 @@ public class MdDropOptionsDALServiceImpl implements MdDropOptionsDALService { ...@@ -61,4 +61,10 @@ public class MdDropOptionsDALServiceImpl implements MdDropOptionsDALService {
public List<OptionsEGolden> findByMasterIdsE(List<Integer> materIds) { public List<OptionsEGolden> findByMasterIdsE(List<Integer> materIds) {
return mdDropOptionsMapper.findByMasterIdsE(materIds); return mdDropOptionsMapper.findByMasterIdsE(materIds);
} }
@Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_EGOLDEN)
public List<OptionsEGolden> findAllTitleEG() {
return mdDropOptionsMapper.findAllTitleEG();
}
} }
package com.yd.rmi.ali.oss.service; package com.yd.rmi.ali.oss.service;
import com.yd.rmi.ali.oss.vo.OssRequestVO;
import com.yd.rmi.ali.oss.vo.OssResponseVO;
import java.io.InputStream; import java.io.InputStream;
public interface OssService { public interface OssService {
String putFileToOss(String string, String key, InputStream is) throws Exception; String putFileToOss(String string, String key, InputStream is) throws Exception;
OssResponseVO ossOperate(OssRequestVO ossRequestVO);
} }
...@@ -85,8 +85,8 @@ public class OssServiceImpl implements OssService { ...@@ -85,8 +85,8 @@ public class OssServiceImpl implements OssService {
} }
return url; return url;
} }
@Override
private OssResponseVO ossOperate(OssRequestVO ossRequestVO) { public OssResponseVO ossOperate(OssRequestVO ossRequestVO) {
OssResponseVO ossResponseVO = new OssResponseVO(); OssResponseVO ossResponseVO = new OssResponseVO();
boolean success = true; boolean success = true;
String message = ZHBErrorConfig.getErrorInfo("800000"); String message = ZHBErrorConfig.getErrorInfo("800000");
......
...@@ -17,10 +17,16 @@ multiple.datasource.master.username=devdbuser ...@@ -17,10 +17,16 @@ multiple.datasource.master.username=devdbuser
multiple.datasource.master.password=devdbpass1 multiple.datasource.master.password=devdbpass1
#egolden #egolden
#multiple.datasource.egolden.driver-class-name=com.mysql.jdbc.Driver
#multiple.datasource.egolden.url=jdbc:MySql://139.224.138.103:13308/stage_ydinsurance?characterEncoding=UTF-8&useSSL=false&useAffectedRows=true
#multiple.datasource.egolden.username=insurance_stage
#multiple.datasource.egolden.password=fWTauSswR2!$
#egolden
multiple.datasource.egolden.driver-class-name=com.mysql.jdbc.Driver multiple.datasource.egolden.driver-class-name=com.mysql.jdbc.Driver
multiple.datasource.egolden.url=jdbc:MySql://139.224.138.103:13308/stage_ydinsurance?characterEncoding=UTF-8&useSSL=false&useAffectedRows=true multiple.datasource.egolden.url=jdbc:MySql://139.224.94.140:13307/ydinsurance?characterEncoding=UTF-8&useSSL=false&useAffectedRows=true
multiple.datasource.egolden.username=insurance_stage multiple.datasource.egolden.username=stageuser
multiple.datasource.egolden.password=fWTauSswR2!$ multiple.datasource.egolden.password=AG@#$mstage234
#pagehelper分页插件配置 #pagehelper分页插件配置
pagehelper.helperDialect=mysql pagehelper.helperDialect=mysql
......
...@@ -17,10 +17,16 @@ multiple.datasource.master.username=devdbuser ...@@ -17,10 +17,16 @@ multiple.datasource.master.username=devdbuser
multiple.datasource.master.password=devdbpass1 multiple.datasource.master.password=devdbpass1
#egolden #egolden
#multiple.datasource.egolden.driver-class-name=com.mysql.jdbc.Driver
#multiple.datasource.egolden.url=jdbc:MySql://139.224.138.103:13308/stage_ydinsurance?characterEncoding=UTF-8&useSSL=false&useAffectedRows=true
#multiple.datasource.egolden.username=insurance_stage
#multiple.datasource.egolden.password=fWTauSswR2!$
#egolden
multiple.datasource.egolden.driver-class-name=com.mysql.jdbc.Driver multiple.datasource.egolden.driver-class-name=com.mysql.jdbc.Driver
multiple.datasource.egolden.url=jdbc:MySql://139.224.138.103:13308/stage_ydinsurance?characterEncoding=UTF-8&useSSL=false&useAffectedRows=true multiple.datasource.egolden.url=jdbc:MySql://139.224.94.140:13307/ydinsurance?characterEncoding=UTF-8&useSSL=false&useAffectedRows=true
multiple.datasource.egolden.username=insurance_stage multiple.datasource.egolden.username=stageuser
multiple.datasource.egolden.password=fWTauSswR2!$ multiple.datasource.egolden.password=AG@#$mstage234
#pagehelper分页插件配置 #pagehelper分页插件配置
pagehelper.helperDialect=mysql pagehelper.helperDialect=mysql
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
800000=执行成功! 800000=执行成功!
##系统提示信息 ##系统提示信息
810001=token无效或者错误! 810001=token无效或者错误!
820001=查询到相应结果。 820001=查询到相应结果。
830001=该用户非寿险经纪人。 830001=该用户非寿险经纪人。
830002=只有寿险经纪人才有权限进入! 830002=只有寿险经纪人才有权限进入!
......
...@@ -289,4 +289,10 @@ ...@@ -289,4 +289,10 @@
</where> </where>
</select> </select>
<select id="findByTargetIdAndRemark" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from ag_acl_file_upload
where target_type = #{type,jdbcType=INTEGER} and target_id = #{targetId,jdbcType=BIGINT} and remark = #{remark,jdbcType=VARCHAR} and is_active = 1
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -699,7 +699,7 @@ ...@@ -699,7 +699,7 @@
from ag_acl_customer c inner join ag_acl_practitioner p on c.id = p.customer_id from ag_acl_customer c inner join ag_acl_practitioner p on c.id = p.customer_id
left join ag_acl_insurer_branch b on p.insurer_branch_id = b.id left join ag_acl_insurer_branch b on p.insurer_branch_id = b.id
left join ag_acl_practitioner_setting s on p.id = s.practitioner_id left join ag_acl_practitioner_setting s on p.id = s.practitioner_id
inner join ag_md_drop_options o on s.practitioner_level = o.id left join ag_md_drop_options o on s.practitioner_level = o.id
where c.login = #{mobileNo}; where c.login = #{mobileNo};
</select> </select>
...@@ -870,4 +870,45 @@ ...@@ -870,4 +870,45 @@
</otherwise> </otherwise>
</choose> </choose>
</select> </select>
<select id="findPayScaleByPractitionerEG" resultType="com.yd.api.practitioner.vo.payscale.PayScaleInfo">
select
t.MON_SH_ID as monShId,
t.FK_SAL_MST_ID as salMstId,
t.FK_DRP_TITLE_CODE as drpTitleCode,
t.MON_DTL_TYPE as monDtlType,
t.MON_DTL_ITEM as monDtlItem,
t.MON_DTL_PERIOD as monDtlPeriod,
ifnull(t.MON_DTL_AMOUNT,0) as monDtlAmount,
ifnull(t.MON_DTL_RAMOUNT,0) as monDtlRAmount,
date_format(t.CREATE_DATE, '%Y-%m-%d %H:%i:%s') as createDate,
t.CREATE_USER as createUser
from mon011 t where FK_SAL_MST_ID = #{practitionerIdEG,jdbcType=VARCHAR};
</select>
<select id="findFilePathByMonShId" resultType="com.yd.dal.entity.practitioner.payscale.PayScaleBasicInfo">
select
t.MON_SH_ID as monShId,
t.FK_SAL_MST_ID as salMstId,
t.FK_DRP_TITLE_CODE as drpTitleCode,
t.MON_DTL_TYPE as monDtlType,
t.MON_DTL_ITEM as monDtlItem,
t.MON_DTL_PERIOD as monDtlPeriod,
ifnull(t.MON_DTL_AMOUNT,0) as monDtlAmount,
ifnull(t.MON_DTL_RAMOUNT,0) as monDtlRAmount,
date_format(t.CREATE_DATE, '%Y-%m-%d %H:%i:%s') as createDate,
t.CREATE_USER as createUser,
t.UPLOAD_PATH as uploadPath,
t.UPLOAD_TIME as uploadTime
from mon011 t where t.MON_SH_ID = #{monShId,jdbcType=INTEGER}
</select>
<select id="findByIdEG" resultMap="base_result_map_practitioner_info">
SELECT
p.SAL_MST_ID as practitionerId,
p.SAL_MST_NAME as name,
p.SAL_MST_GENDER as gender,
p.SAL_MST_MOBILE as mobileNo
FROM sal001 p
where p.SAL_MST_ID = #{practitionerIdEG,jdbcType=VARCHAR} limit 1
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -254,4 +254,11 @@ ...@@ -254,4 +254,11 @@
#{item} #{item}
</foreach> </foreach>
</select> </select>
<select id="findAllTitleEG" resultType="com.yd.dal.entity.meta.OptionsEGolden">
select
t.DRP_TITLE_CODE as titleCode,
t.DRP_TITLE_NAME as titleName,
t.DRP_TITLE_LEVEL as titleLevel
from drp003 t
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
<result column="insurer_pdf_url" jdbcType="VARCHAR" property="insurerPdfUrl" /> <result column="insurer_pdf_url" jdbcType="VARCHAR" property="insurerPdfUrl" />
<result column="is_msg_sent" jdbcType="INTEGER" property="isMsgSent" /> <result column="is_msg_sent" jdbcType="INTEGER" property="isMsgSent" />
<result column="is_car_tax" jdbcType="INTEGER" property="isCarTax" /> <result column="is_car_tax" jdbcType="INTEGER" property="isCarTax" />
<result column="yd_value_added_tax" jdbcType="DECIMAL" property="ydValueAddedTax" />
<result column="commission_rate" jdbcType="DECIMAL" property="commissionRate" /> <result column="commission_rate" jdbcType="DECIMAL" property="commissionRate" />
<result column="commission_amount" jdbcType="DECIMAL" property="commissionAmount" /> <result column="commission_amount" jdbcType="DECIMAL" property="commissionAmount" />
<result column="fyc_rate" jdbcType="DECIMAL" property="fycRate" /> <result column="fyc_rate" jdbcType="DECIMAL" property="fycRate" />
...@@ -91,7 +90,7 @@ ...@@ -91,7 +90,7 @@
quote_no, product_category_id, destination, destination_continent_id, destination_region_id, quote_no, product_category_id, destination, destination_continent_id, destination_region_id,
destination_country_id, effective_start_date, effective_end_date, cover_length, cover_adult_qty, destination_country_id, effective_start_date, effective_end_date, cover_length, cover_adult_qty,
cover_underage_qty, payment_method_id, pay_url, pay_from, insurer_pdf_url, is_msg_sent, cover_underage_qty, payment_method_id, pay_url, pay_from, insurer_pdf_url, is_msg_sent,
is_car_tax, yd_value_added_tax, commission_rate, commission_amount, fyc_rate, fyc_amount, is_car_tax, commission_rate, commission_amount, fyc_rate, fyc_amount,
b2c_rate, grade_commission_rate, referral_rate, referral_amount, policy_id, policy_no, b2c_rate, grade_commission_rate, referral_rate, referral_amount, policy_id, policy_no,
mkt_campaign, mkt_task, is_converted, `status`, payment_status, flag, customer_id, mkt_campaign, mkt_task, is_converted, `status`, payment_status, flag, customer_id,
referral_customer_id, share_code, insurer_id, data_source, is_social_insured, cover_term, referral_customer_id, share_code, insurer_id, data_source, is_social_insured, cover_term,
...@@ -124,7 +123,7 @@ ...@@ -124,7 +123,7 @@
effective_end_date, cover_length, cover_adult_qty, effective_end_date, cover_length, cover_adult_qty,
cover_underage_qty, payment_method_id, pay_url, cover_underage_qty, payment_method_id, pay_url,
pay_from, insurer_pdf_url, is_msg_sent, pay_from, insurer_pdf_url, is_msg_sent,
is_car_tax, yd_value_added_tax, commission_rate, is_car_tax, commission_rate,
commission_amount, fyc_rate, fyc_amount, commission_amount, fyc_rate, fyc_amount,
b2c_rate, grade_commission_rate, referral_rate, b2c_rate, grade_commission_rate, referral_rate,
referral_amount, policy_id, policy_no, referral_amount, policy_id, policy_no,
...@@ -247,9 +246,6 @@ ...@@ -247,9 +246,6 @@
<if test="isCarTax != null"> <if test="isCarTax != null">
is_car_tax, is_car_tax,
</if> </if>
<if test="ydValueAddedTax != null">
yd_value_added_tax,
</if>
<if test="commissionRate != null"> <if test="commissionRate != null">
commission_rate, commission_rate,
</if> </if>
...@@ -729,9 +725,6 @@ ...@@ -729,9 +725,6 @@
<if test="isCarTax != null"> <if test="isCarTax != null">
is_car_tax = #{isCarTax,jdbcType=INTEGER}, is_car_tax = #{isCarTax,jdbcType=INTEGER},
</if> </if>
<if test="ydValueAddedTax != null">
yd_value_added_tax = #{ydValueAddedTax,jdbcType=DECIMAL},
</if>
<if test="commissionRate != null"> <if test="commissionRate != null">
commission_rate = #{commissionRate,jdbcType=DECIMAL}, commission_rate = #{commissionRate,jdbcType=DECIMAL},
</if> </if>
...@@ -924,7 +917,6 @@ ...@@ -924,7 +917,6 @@
insurer_pdf_url = #{insurerPdfUrl,jdbcType=VARCHAR}, insurer_pdf_url = #{insurerPdfUrl,jdbcType=VARCHAR},
is_msg_sent = #{isMsgSent,jdbcType=INTEGER}, is_msg_sent = #{isMsgSent,jdbcType=INTEGER},
is_car_tax = #{isCarTax,jdbcType=INTEGER}, is_car_tax = #{isCarTax,jdbcType=INTEGER},
yd_value_added_tax = #{ydValueAddedTax,jdbcType=DECIMAL},
commission_rate = #{commissionRate,jdbcType=DECIMAL}, commission_rate = #{commissionRate,jdbcType=DECIMAL},
commission_amount = #{commissionAmount,jdbcType=DECIMAL}, commission_amount = #{commissionAmount,jdbcType=DECIMAL},
fyc_rate = #{fycRate,jdbcType=DECIMAL}, fyc_rate = #{fycRate,jdbcType=DECIMAL},
...@@ -1008,7 +1000,8 @@ ...@@ -1008,7 +1000,8 @@
f.referral_amount as referralAmount, f.referral_amount as referralAmount,
f.order_price as orderPrice, f.order_price as orderPrice,
o.plan_id as planId, o.plan_id as planId,
o.product_id as productId o.product_id as productId ,
f.id as fortuneId
FROM ag_acl_customer_fortune f INNER JOIN ag_po_order o ON f.order_id = o.id and o.status = 3 and o.order_price &gt; 0 and o.insurer_id != 888 FROM ag_acl_customer_fortune f INNER JOIN ag_po_order o ON f.order_id = o.id and o.status = 3 and o.order_price &gt; 0 and o.insurer_id != 888
inner JOIN ag_acl_policyholder p ON o.id = p.order_id and p.type = 2 inner JOIN ag_acl_policyholder p ON o.id = p.order_id and p.type = 2
WHERE f.customer_id = #{customerId,jdbcType=BIGINT} WHERE f.customer_id = #{customerId,jdbcType=BIGINT}
......
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