Commit 36d734f4 by yao.xiao

解决冲突-merge dev

parents b3d10881 cbefadda
...@@ -14,7 +14,7 @@ import com.yd.dal.entity.commission.CommissionEGolden; ...@@ -14,7 +14,7 @@ import com.yd.dal.entity.commission.CommissionEGolden;
import com.yd.dal.service.commission.CommissionEGoldenDA; import com.yd.dal.service.commission.CommissionEGoldenDA;
import com.yd.dal.service.commission.CommissionServiceDA; import com.yd.dal.service.commission.CommissionServiceDA;
@Service("commissionServiceImpl") @Service("commissionService")
public class CommissionServiceImpl implements CommissionService{ public class CommissionServiceImpl implements CommissionService{
@Autowired @Autowired
......
...@@ -7,6 +7,8 @@ import com.yd.api.customer.vo.CustomerFortuneResponseVO; ...@@ -7,6 +7,8 @@ import com.yd.api.customer.vo.CustomerFortuneResponseVO;
import com.yd.api.customer.vo.CustomerQueryRequestVO; import com.yd.api.customer.vo.CustomerQueryRequestVO;
import com.yd.api.customer.vo.CustomerQueryResponseVO; import com.yd.api.customer.vo.CustomerQueryResponseVO;
import com.yd.api.customer.vo.CustomerVO; import com.yd.api.customer.vo.CustomerVO;
import com.yd.api.customer.vo.register.RegisterRequestVO;
import com.yd.api.customer.vo.register.RegisterResponseVO;
public interface CustomerService { public interface CustomerService {
...@@ -15,4 +17,6 @@ public interface CustomerService { ...@@ -15,4 +17,6 @@ public interface CustomerService {
CustomerQueryResponseVO findByPage(CustomerQueryRequestVO customerQueryRequestVO); CustomerQueryResponseVO findByPage(CustomerQueryRequestVO customerQueryRequestVO);
CustomerFortuneResponseVO selectByCustomerId(CustomerFortuneRequestVO customer); CustomerFortuneResponseVO selectByCustomerId(CustomerFortuneRequestVO customer);
RegisterResponseVO register(RegisterRequestVO register);
} }
package com.yd.api.customer.service; package com.yd.api.customer.service;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import com.google.common.base.Strings;
import com.yd.api.customer.vo.register.RegisterRequestVO;
import com.yd.api.customer.vo.register.RegisterResponseVO;
import com.yd.api.result.CommonResult;
import com.yd.dal.entity.customer.AclCustomer;
import com.yd.dal.service.customer.AclCustomerDALService;
import com.yd.dal.service.customer.CustomerDALService; import com.yd.dal.service.customer.CustomerDALService;
import com.yd.util.EncryptUtil;
import com.yd.util.config.ZHBErrorConfig;
import com.yd.util.deshandler.DESTypeHandler;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -16,7 +27,6 @@ import com.yd.api.customer.vo.CustomerQueryResponseVO; ...@@ -16,7 +27,6 @@ import com.yd.api.customer.vo.CustomerQueryResponseVO;
import com.yd.api.customer.vo.CustomerVO; import com.yd.api.customer.vo.CustomerVO;
import com.yd.dal.entity.customer.Customer; import com.yd.dal.entity.customer.Customer;
import com.yd.dal.entity.customer.CustomerFortune; import com.yd.dal.entity.customer.CustomerFortune;
import com.yd.dal.mapper.customer.CustomerFortuneMapper;
@Service("customerServiceImpl") @Service("customerServiceImpl")
public class CustomerServiceImpl implements CustomerService{ public class CustomerServiceImpl implements CustomerService{
...@@ -25,12 +35,12 @@ public class CustomerServiceImpl implements CustomerService{ ...@@ -25,12 +35,12 @@ public class CustomerServiceImpl implements CustomerService{
private CustomerDALService customerServiceDA; private CustomerDALService customerServiceDA;
@Autowired @Autowired
private CustomerFortuneMapper customerFortuneMapper; private AclCustomerDALService aclCustomerDALService;
@Override @Override
public List<CustomerVO> listAllCustomer() { public List<CustomerVO> listAllCustomer() {
List<CustomerVO> listTo =new ArrayList<CustomerVO>(); List<CustomerVO> listTo =new ArrayList<>();
List<Customer> list = new ArrayList<Customer>(); List<Customer> list ;
list = customerServiceDA.listAllCustomers(); list = customerServiceDA.listAllCustomers();
CustomerVO oneDestVO; CustomerVO oneDestVO;
for(Customer oneSrc:list) for(Customer oneSrc:list)
...@@ -74,5 +84,71 @@ public class CustomerServiceImpl implements CustomerService{ ...@@ -74,5 +84,71 @@ public class CustomerServiceImpl implements CustomerService{
return customerQueryResponseVO; return customerQueryResponseVO;
} }
@Override
public RegisterResponseVO register(RegisterRequestVO requestVO) {
RegisterResponseVO registerResponseVO = new RegisterResponseVO();
String mobileNo = requestVO.getMobileNo();
String checkResult = paramCheck(mobileNo);
//入参校验
if(Strings.isNullOrEmpty(checkResult)){
String accountId = createAccountId(mobileNo);
List<AclCustomer> aclCustomerList = aclCustomerDALService.findByLogin(mobileNo);
if(aclCustomerList.isEmpty()){
DESTypeHandler jpaCryptoConverter = new DESTypeHandler();
AclCustomer aclCustomer = new AclCustomer();
aclCustomer.setRole(2);//1= Staff 2=Customer 3=Partner
aclCustomer.setAccountId(accountId);
aclCustomer.setLogin(mobileNo);
aclCustomer.setMobileNo(jpaCryptoConverter.encode(mobileNo));
aclCustomer.setPassword(EncryptUtil.encrypt(requestVO.getPassword(),null));
aclCustomer.setEmail(requestVO.getEmail());
aclCustomer.setCusLevel(1);
aclCustomer.setName(requestVO.getName());
aclCustomer.setIsActive(1);
aclCustomer.setRoleId(3L);
aclCustomer.setWithdrawType(0);
aclCustomer.setCreatedAt(new Date());
aclCustomer.setCreatedBy(-1L);
aclCustomer.setUpdatedAt(new Date());
aclCustomer.setUpdatedBy(-1L);
aclCustomer.setChannelReferralRateId(3L);
aclCustomerDALService.save(aclCustomer);
//202003对新注册的客户还需保存至ag_mkt_leads_pool
// saveLeadsPool(aclCustomer);
registerResponseVO.setCustomerId(aclCustomer.getId());
registerResponseVO.setCommonResult(new CommonResult(true,ZHBErrorConfig.getErrorInfo("800000")));
}else{
String [] params = {mobileNo};
registerResponseVO.setCommonResult(new CommonResult(false,ZHBErrorConfig.getErrorInfo("630002",params)));
registerResponseVO.setCustomerId(aclCustomerList.get(0).getId());
}
}else{
registerResponseVO.setCommonResult(new CommonResult(false,checkResult));
}
return registerResponseVO;
}
private String createAccountId(String mobileNo) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String sub = null;
if(mobileNo != null && !"".equals(mobileNo)){
sub = mobileNo.substring(mobileNo.length()-6);
}
return "C_"+sub+"_"+sdf.format(new Date());
}
private String paramCheck(String mobileNo) {
if(Strings.isNullOrEmpty(mobileNo)){
String[] params ={"mobileNo"};
return ZHBErrorConfig.getErrorInfo("610002", params);
}else{
if(mobileNo.length() != 11 || !mobileNo.startsWith("1")){
String[] params = {mobileNo};
return ZHBErrorConfig.getErrorInfo("630001", params);
}
}
return null;
}
} }
package com.yd.api.customer.vo.register;
public class RegisterRequestVO {
private String name;
private String mobileNo;
private String email;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobileNo() {
return mobileNo;
}
public void setMobileNo(String mobileNo) {
this.mobileNo = mobileNo;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.yd.api.customer.vo.register;
import com.yd.api.result.CommonResult;
public class RegisterResponseVO {
private Long customerId;
private CommonResult commonResult;
public Long getCustomerId() {
return customerId;
}
public void setCustomerId(Long customerId) {
this.customerId = customerId;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
...@@ -11,6 +11,7 @@ import com.yd.api.practitioner.vo.opportunity.OwnOpportunityQueryRequestVO; ...@@ -11,6 +11,7 @@ import com.yd.api.practitioner.vo.opportunity.OwnOpportunityQueryRequestVO;
import com.yd.api.practitioner.vo.opportunity.OwnOpportunityQueryResponseVO; import com.yd.api.practitioner.vo.opportunity.OwnOpportunityQueryResponseVO;
import com.yd.api.practitioner.vo.rank.PractitionerRankRequestVO; import com.yd.api.practitioner.vo.rank.PractitionerRankRequestVO;
import com.yd.api.practitioner.vo.rank.PractitionerRankResponseVO; import com.yd.api.practitioner.vo.rank.PractitionerRankResponseVO;
import com.yd.api.practitioner.vo.recruit.*;
import com.yd.api.practitioner.vo.setting.*; import com.yd.api.practitioner.vo.setting.*;
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;
...@@ -29,8 +30,8 @@ public class PractitionerController { ...@@ -29,8 +30,8 @@ public class PractitionerController {
/** /**
* 经纪人登录 * 经纪人登录
* @param requestVO * @param requestVO 请求数据
* @return * @return 响应数据
*/ */
@RequestMapping("/login") @RequestMapping("/login")
public Object practitionerLogin(@RequestBody PractitionerLoginRequestVO requestVO){ public Object practitionerLogin(@RequestBody PractitionerLoginRequestVO requestVO){
...@@ -43,7 +44,7 @@ public class PractitionerController { ...@@ -43,7 +44,7 @@ public class PractitionerController {
/** /**
* 经纪人(排行榜) + (保费+佣金+件数)查询 * 经纪人(排行榜) + (保费+佣金+件数)查询
* @param requestVO * @param requestVO 请求数据
* @return Object * @return Object
*/ */
@RequestMapping("/rank") @RequestMapping("/rank")
...@@ -57,7 +58,7 @@ public class PractitionerController { ...@@ -57,7 +58,7 @@ public class PractitionerController {
/** /**
* 查询经纪人的个人设置 * 查询经纪人的个人设置
* @param requestVO * @param requestVO 请求数据
* @return responseVO * @return responseVO
*/ */
@RequestMapping("/settingQuery") @RequestMapping("/settingQuery")
...@@ -71,7 +72,7 @@ public class PractitionerController { ...@@ -71,7 +72,7 @@ public class PractitionerController {
/** /**
* 保存经纪人的个人设置 * 保存经纪人的个人设置
* @param requestVO * @param requestVO 请求数据
* @return responseVO * @return responseVO
*/ */
@RequestMapping("/settingSave") @RequestMapping("/settingSave")
...@@ -96,7 +97,7 @@ public class PractitionerController { ...@@ -96,7 +97,7 @@ public class PractitionerController {
} }
@RequestMapping("/mediaGet") @RequestMapping("/mediaGet")
public Object mediaGet(@RequestBody MediaGetReqVO requestVO) throws Exception{ public Object mediaGet(@RequestBody MediaGetReqVO requestVO){
JsonResult result = new JsonResult(); JsonResult result = new JsonResult();
MediaGetRespVO responseVO = practitionerService.mediaGet(requestVO); MediaGetRespVO responseVO = practitionerService.mediaGet(requestVO);
result.addResult(responseVO); result.addResult(responseVO);
...@@ -117,6 +118,19 @@ public class PractitionerController { ...@@ -117,6 +118,19 @@ public class PractitionerController {
result.setData(responseVO); result.setData(responseVO);
return result; return result;
} }
/**
* 团队长--新增增员
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/recruit")
public Object recruit(@RequestBody RecruitRequestVO requestVO){
JsonResult result = new JsonResult();
RecruitResponseVO responseVO = practitionerService.recruit(requestVO);
result.addResult(responseVO);
result.setData(responseVO);
return result;
}
/*** /***
* 经纪人查询自己的商机详情查询 * 经纪人查询自己的商机详情查询
...@@ -131,4 +145,45 @@ public class PractitionerController { ...@@ -131,4 +145,45 @@ public class PractitionerController {
result.setData(responseVO); result.setData(responseVO);
return result; return result;
} }
/**
* 团队长--新增增员记录
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/addRecruitTrack")
public Object addRecruitTrack(@RequestBody AddRecruitTrackRequestVO requestVO){
JsonResult result = new JsonResult();
AddRecruitTrackResponseVO responseVO = practitionerService.addRecruitTrack(requestVO);
result.addResult(responseVO);
result.setData(responseVO);
return result;
}
/**
* 团队长--增员记录查询
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/recruitTrackQuery")
public Object recruitTrackQuery(@RequestBody RecruitTrackQueryRequestVO requestVO){
JsonResult result = new JsonResult();
RecruitTrackQueryResponseVO responseVO = practitionerService.recruitTrackQuery(requestVO);
result.addResult(responseVO);
result.setData(responseVO);
return result;
}
/**
* 团队长--增员列表查询
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/recruitListQuery")
public Object recruitListQuery(@RequestBody RecruitListRequestVO requestVO){
JsonResult result = new JsonResult();
RecruitListResponseVO responseVO = practitionerService.recruitListQuery(requestVO);
result.addResult(responseVO);
result.setData(responseVO);
return result;
}
} }
...@@ -10,6 +10,7 @@ import com.yd.api.practitioner.vo.opportunity.OwnOpportunityQueryRequestVO; ...@@ -10,6 +10,7 @@ import com.yd.api.practitioner.vo.opportunity.OwnOpportunityQueryRequestVO;
import com.yd.api.practitioner.vo.opportunity.OwnOpportunityQueryResponseVO; import com.yd.api.practitioner.vo.opportunity.OwnOpportunityQueryResponseVO;
import com.yd.api.practitioner.vo.rank.PractitionerRankRequestVO; import com.yd.api.practitioner.vo.rank.PractitionerRankRequestVO;
import com.yd.api.practitioner.vo.rank.PractitionerRankResponseVO; import com.yd.api.practitioner.vo.rank.PractitionerRankResponseVO;
import com.yd.api.practitioner.vo.recruit.*;
import com.yd.api.practitioner.vo.setting.*; import com.yd.api.practitioner.vo.setting.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -71,4 +72,30 @@ public interface PractitionerService { ...@@ -71,4 +72,30 @@ public interface PractitionerService {
* @return * @return
*/ */
OwnOpportunityDetailQueryResponseVO ownOpportunityDetailQuery(OwnOpportunityDetailQueryRequestVO requestVO); OwnOpportunityDetailQueryResponseVO ownOpportunityDetailQuery(OwnOpportunityDetailQueryRequestVO requestVO);
/**
* 团队长--增员
* @param requestVO 请求信息
* @return responseVO
*/
RecruitResponseVO recruit(RecruitRequestVO requestVO);
/**
* 团队长--新增增员记录
* @param requestVO 请求信息
* @return responseVO
*/
AddRecruitTrackResponseVO addRecruitTrack(AddRecruitTrackRequestVO requestVO);
/**
* 团队长--增员记录查询
* @param requestVO 请求信息
* @return responseVO
*/
RecruitTrackQueryResponseVO recruitTrackQuery(RecruitTrackQueryRequestVO requestVO);
/**
* 团队长--增员列表查询
* @param requestVO 请求信息
* @return responseVO
*/
RecruitListResponseVO recruitListQuery(RecruitListRequestVO requestVO);
} }
package com.yd.api.practitioner.vo.login; package com.yd.api.practitioner.vo.login;
public class PractitionerBasicInfo { public class PractitionerLoginBasicInfo {
private String name;//姓名 private String name;//姓名
private String headImagePath;//头像 private String headImagePath;//头像
private String levelCode;//级别code private String levelCode;//级别code
......
...@@ -7,7 +7,8 @@ public class PractitionerLoginResponseVO { ...@@ -7,7 +7,8 @@ public class PractitionerLoginResponseVO {
private Long customerId; private Long customerId;
private Long practitionerId; private Long practitionerId;
private Integer loginTimes; private Integer loginTimes;
private PractitionerBasicInfo practitionerBasicInfo; private String getOpenIdUrl;
private PractitionerLoginBasicInfo practitionerBasicInfo;
private CommonResult commonResult; private CommonResult commonResult;
public Long getCustomerId() { public Long getCustomerId() {
...@@ -34,14 +35,22 @@ public class PractitionerLoginResponseVO { ...@@ -34,14 +35,22 @@ public class PractitionerLoginResponseVO {
this.loginTimes = loginTimes; this.loginTimes = loginTimes;
} }
public PractitionerBasicInfo getPractitionerBasicInfo() { public PractitionerLoginBasicInfo getPractitionerBasicInfo() {
return practitionerBasicInfo; return practitionerBasicInfo;
} }
public void setPractitionerBasicInfo(PractitionerBasicInfo practitionerBasicInfo) { public void setPractitionerBasicInfo(PractitionerLoginBasicInfo practitionerBasicInfo) {
this.practitionerBasicInfo = practitionerBasicInfo; this.practitionerBasicInfo = practitionerBasicInfo;
} }
public String getGetOpenIdUrl() {
return getOpenIdUrl;
}
public void setGetOpenIdUrl(String getOpenIdUrl) {
this.getOpenIdUrl = getOpenIdUrl;
}
public CommonResult getCommonResult() { public CommonResult getCommonResult() {
return commonResult; return commonResult;
} }
......
...@@ -3,7 +3,7 @@ package com.yd.api.practitioner.vo.rank; ...@@ -3,7 +3,7 @@ package com.yd.api.practitioner.vo.rank;
public class PractitionerRankRequestVO { public class PractitionerRankRequestVO {
private String mobileNo; private String mobileNo;
private Integer platform;//1-online,2-offline private Integer platform;//1-online,2-offline
private Integer time;//1-month,2-year private Integer time;//1-month,2-year,3-quarter
private Integer type;//1-保费,2-佣金,3-件数 private Integer type;//1-保费,2-佣金,3-件数
public String getMobileNo() { public String getMobileNo() {
......
package com.yd.api.practitioner.vo.recruit;
public class AddRecruitTrackRequestVO {
private Long trackId;
private Long trackStatusId;
private String notice;
private Integer isActive;
public Long getTrackId() {
return trackId;
}
public void setTrackId(Long trackId) {
this.trackId = trackId;
}
public Long getTrackStatusId() {
return trackStatusId;
}
public void setTrackStatusId(Long trackStatusId) {
this.trackStatusId = trackStatusId;
}
public String getNotice() {
return notice;
}
public void setNotice(String notice) {
this.notice = notice;
}
public Integer getIsActive() {
return isActive;
}
public void setIsActive(Integer isActive) {
this.isActive = isActive;
}
}
package com.yd.api.practitioner.vo.recruit;
import com.yd.api.result.CommonResult;
public class AddRecruitTrackResponseVO {
private Long trackId;
private Integer isActive;
private CommonResult commonResult;
public Long getTrackId() {
return trackId;
}
public void setTrackId(Long trackId) {
this.trackId = trackId;
}
public Integer getIsActive() {
return isActive;
}
public void setIsActive(Integer isActive) {
this.isActive = isActive;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
package com.yd.api.practitioner.vo.recruit;
public class PractitionerPotentialInfo {
private Long potentialId;
private String name;
private Integer gender;
private Long age;
private String mobileNo;
private String wechatId;
private String qqId;
private String othersContacts;
private String educationLevel;
private Long resourceDropMasterId;
private String resourceDropMasterName;
private String introducer;
private String tag;
private String remark;
private String ossPathResume;
private String assignedId;
private String assignedName;
private Long trackStatusId;
private String trackStatus;
private Long trackId;
private Long operateUserId;
private String operateUserName;
private String createdAt;
public Long getPotentialId() {
return potentialId;
}
public void setPotentialId(Long potentialId) {
this.potentialId = potentialId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getGender() {
return gender;
}
public void setGender(Integer gender) {
this.gender = gender;
}
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
public String getMobileNo() {
return mobileNo;
}
public void setMobileNo(String mobileNo) {
this.mobileNo = mobileNo;
}
public String getWechatId() {
return wechatId;
}
public void setWechatId(String wechatId) {
this.wechatId = wechatId;
}
public String getQqId() {
return qqId;
}
public void setQqId(String qqId) {
this.qqId = qqId;
}
public String getOthersContacts() {
return othersContacts;
}
public void setOthersContacts(String othersContacts) {
this.othersContacts = othersContacts;
}
public String getEducationLevel() {
return educationLevel;
}
public void setEducationLevel(String educationLevel) {
this.educationLevel = educationLevel;
}
public Long getResourceDropMasterId() {
return resourceDropMasterId;
}
public void setResourceDropMasterId(Long resourceDropMasterId) {
this.resourceDropMasterId = resourceDropMasterId;
}
public String getResourceDropMasterName() {
return resourceDropMasterName;
}
public void setResourceDropMasterName(String resourceDropMasterName) {
this.resourceDropMasterName = resourceDropMasterName;
}
public String getIntroducer() {
return introducer;
}
public void setIntroducer(String introducer) {
this.introducer = introducer;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getOssPathResume() {
return ossPathResume;
}
public void setOssPathResume(String ossPathResume) {
this.ossPathResume = ossPathResume;
}
public String getAssignedId() {
return assignedId;
}
public void setAssignedId(String assignedId) {
this.assignedId = assignedId;
}
public String getAssignedName() {
return assignedName;
}
public void setAssignedName(String assignedName) {
this.assignedName = assignedName;
}
public Long getTrackStatusId() {
return trackStatusId;
}
public void setTrackStatusId(Long trackStatusId) {
this.trackStatusId = trackStatusId;
}
public String getTrackStatus() {
return trackStatus;
}
public void setTrackStatus(String trackStatus) {
this.trackStatus = trackStatus;
}
public Long getTrackId() {
return trackId;
}
public void setTrackId(Long trackId) {
this.trackId = trackId;
}
public Long getOperateUserId() {
return operateUserId;
}
public void setOperateUserId(Long operateUserId) {
this.operateUserId = operateUserId;
}
public String getOperateUserName() {
return operateUserName;
}
public void setOperateUserName(String operateUserName) {
this.operateUserName = operateUserName;
}
public String getCreatedAt() {
return createdAt;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
}
package com.yd.api.practitioner.vo.recruit;
public class RecruitListRequestVO {
private Long assignedId;
private Integer status;//1-待跟进,2-跟进中,3-以完成
public Long getAssignedId() {
return assignedId;
}
public void setAssignedId(Long assignedId) {
this.assignedId = assignedId;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
}
package com.yd.api.practitioner.vo.recruit;
import com.github.pagehelper.PageInfo;
import com.yd.api.result.CommonResult;
import com.yd.dal.entity.customer.Customer;
import java.util.List;
public class RecruitListResponseVO {
private List<PractitionerPotentialInfo> practitionerPotentialInfoList;
private PageInfo<PractitionerPotentialInfo> page;
private CommonResult commonResult;
public List<PractitionerPotentialInfo> getPractitionerPotentialInfoList() {
return practitionerPotentialInfoList;
}
public void setPractitionerPotentialInfoList(List<PractitionerPotentialInfo> practitionerPotentialInfoList) {
this.practitionerPotentialInfoList = practitionerPotentialInfoList;
}
public PageInfo<PractitionerPotentialInfo> getPage() {
return page;
}
public void setPage(PageInfo<PractitionerPotentialInfo> page) {
this.page = page;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
package com.yd.api.practitioner.vo.recruit;
public class RecruitRequestVO {
private Long potentialId;
private String name;
private Integer gender;
private Long age;
private String mobileNo;
private String wechatId;
private String qqId;
private String othersContacts;
private String educationLevel;
private Long resourceDropMasterId;
private String introducer;
private String tag;
private String remark;
private String ossPathResume;
private Long practitionerId;
public Long getPotentialId() {
return potentialId;
}
public void setPotentialId(Long potentialId) {
this.potentialId = potentialId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getGender() {
return gender;
}
public void setGender(Integer gender) {
this.gender = gender;
}
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
public String getMobileNo() {
return mobileNo;
}
public void setMobileNo(String mobileNo) {
this.mobileNo = mobileNo;
}
public String getWechatId() {
return wechatId;
}
public void setWechatId(String wechatId) {
this.wechatId = wechatId;
}
public String getQqId() {
return qqId;
}
public void setQqId(String qqId) {
this.qqId = qqId;
}
public String getOthersContacts() {
return othersContacts;
}
public void setOthersContacts(String othersContacts) {
this.othersContacts = othersContacts;
}
public String getEducationLevel() {
return educationLevel;
}
public void setEducationLevel(String educationLevel) {
this.educationLevel = educationLevel;
}
public Long getResourceDropMasterId() {
return resourceDropMasterId;
}
public void setResourceDropMasterId(Long resourceDropMasterId) {
this.resourceDropMasterId = resourceDropMasterId;
}
public String getIntroducer() {
return introducer;
}
public void setIntroducer(String introducer) {
this.introducer = introducer;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getOssPathResume() {
return ossPathResume;
}
public void setOssPathResume(String ossPathResume) {
this.ossPathResume = ossPathResume;
}
public Long getPractitionerId() {
return practitionerId;
}
public void setPractitionerId(Long practitionerId) {
this.practitionerId = practitionerId;
}
}
package com.yd.api.practitioner.vo.recruit;
import com.yd.api.result.CommonResult;
public class RecruitResponseVO {
private Long potentialCustomerId;
private Long potentialId;
private CommonResult commonResult;
public Long getPotentialCustomerId() {
return potentialCustomerId;
}
public void setPotentialCustomerId(Long potentialCustomerId) {
this.potentialCustomerId = potentialCustomerId;
}
public Long getPotentialId() {
return potentialId;
}
public void setPotentialId(Long potentialId) {
this.potentialId = potentialId;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
package com.yd.api.practitioner.vo.recruit;
public class RecruitTrackQueryRequestVO {
private Long potentialId;
private Long assignedId;
public Long getPotentialId() {
return potentialId;
}
public void setPotentialId(Long potentialId) {
this.potentialId = potentialId;
}
public Long getAssignedId() {
return assignedId;
}
public void setAssignedId(Long assignedId) {
this.assignedId = assignedId;
}
}
package com.yd.api.practitioner.vo.recruit;
public class RecruitTrackQueryResponseVO {
private Long trackId;
private Long trackStatusId;
private String trackStatus;
private String notice;
private String createAt;
private Long operateUserId;
private String operateUserName;
public Long getTrackId() {
return trackId;
}
public void setTrackId(Long trackId) {
this.trackId = trackId;
}
public Long getTrackStatusId() {
return trackStatusId;
}
public void setTrackStatusId(Long trackStatusId) {
this.trackStatusId = trackStatusId;
}
public String getTrackStatus() {
return trackStatus;
}
public void setTrackStatus(String trackStatus) {
this.trackStatus = trackStatus;
}
public String getNotice() {
return notice;
}
public void setNotice(String notice) {
this.notice = notice;
}
public String getCreateAt() {
return createAt;
}
public void setCreateAt(String createAt) {
this.createAt = createAt;
}
public Long getOperateUserId() {
return operateUserId;
}
public void setOperateUserId(Long operateUserId) {
this.operateUserId = operateUserId;
}
public String getOperateUserName() {
return operateUserName;
}
public void setOperateUserName(String operateUserName) {
this.operateUserName = operateUserName;
}
}
package com.yd.dal.entity.customer;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* ag_acl_practitioner
* @author
*/
@Data
public class AclPractitioner implements Serializable {
/**
* serial id
*/
private Long id;
/**
* FK ag_acl_insurer.id
*/
private Long insurerId;
/**
* FK ag_acl_insurer_branch.id
*/
private Long insurerBranchId;
/**
* FK ag_acl_insurer_branch_dept.id 所属部门id
*/
private Long deptId;
/**
* FK ag_acl_practitioner_subordinate_system.id 所属部门id
*/
private Long subordinateSystemId;
/**
* 从业人员编号
*/
private String practitionerCode;
/**
* 从业人员姓名
*/
private String name;
/**
* 从业人员电话
*/
private String mobileNo;
/**
* FK ag_md_id_type.id
*/
private Long idTypeId;
/**
* 从业人员证件类型
*/
private String idType;
/**
* 从业人员证件号
*/
private String idNo;
/**
* 从业人员生日
*/
private Date practitionerBirthdate;
/**
* 从业人员执业证编号
*/
private String practitionerRegNo;
/**
* 从业人员所属公司
*/
private String practitionerRegCompany;
/**
* 有效起日
*/
private Date effectiveStartDate;
/**
* 有效终日
*/
private Date effectiveEndDate;
/**
* 备注
*/
private String remark;
/**
* FK ag_acl_customer.id
*/
private Long customerId;
/**
* 公司员工编码
*/
private String employeeNo;
/**
* 0=No, 1=Yes
*/
private Integer isActive;
/**
* 建置日
*/
private Date createdAt;
/**
* 建置者
*/
private Long createdBy;
/**
* 更新日
*/
private Date updatedAt;
private Long updatedBy;
/**
* 从业人员所属区域-省份 FK ag_md_province.id
*/
private Long provinceId;
/**
* 所属区域省份名
*/
private String provinceName;
/**
* 从业人员所属区域-城市 FK ag_md_city.id
*/
private Long cityId;
/**
* 所属区域城市名
*/
private String cityName;
/**
* 从业人员证照/荣誉列 FK ag_md_certificate.id
*/
private String certList;
/**
* 从业人员自我简介
*/
private String bioIntro;
/**
* 从业人员微信号
*/
private String wechatId;
/**
* 从业人员QQ号
*/
private String qqId;
/**
* 查询是否显示 0=No=不显示 1=Yes=显示
*/
private Integer isProfileShow;
/**
* 姓名是否显示 0=No=不显示 1=Yes=显示
*/
private Integer isNameShow;
/**
* 电话是否显示 0=No=不显示 1=Yes=显示
*/
private Integer isMobileShow;
/**
* 教育程度
*/
private String educationLevel;
/**
* FK ag_acl_practitioner.id 辅导人
*/
private Long mentorId;
/**
* FK ag_acl_practitioner.id 介绍人
*/
private Long introducerId;
/**
* 1=Male, 2=Female
*/
private Integer gender;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.yd.dal.entity.customer;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* ag_acl_practitioner_potential
* @author
*/
@Data
public class AclPractitionerPotential implements Serializable {
/**
* serial id
*/
private Long id;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Long age;
/**
* 1=Male, 2=Female
*/
private Integer gender;
/**
* 从业人员电话
*/
private String mobileNo;
/**
* 从业人员微信号
*/
private String wechatId;
/**
* 从业人员QQ号
*/
private String qqId;
/**
* 其他联系方式
*/
private String othersContacts;
/**
* 教育程度
*/
private String educationLevel;
/**
* 介绍人
*/
private String introducer;
/**
* 标签
*/
private String tag;
/**
* 备注
*/
private String remark;
/**
* FK ag_drop_master.id 来源
*/
private Long resourceDropMasterId;
/**
* 简历附件
*/
private String ossPathResume;
/**
* FK ag_acl_practitioner.id 指派团队长
*/
private String practitionerAssignedIds;
/**
* 0=No, 1=Yes
*/
private Integer isActive;
/**
* 分析建置时间
*/
private Date createdAt;
/**
* 建置者 FK ag_acl_user.id
*/
private Long createdBy;
/**
* 更新时间
*/
private Date updatedAt;
/**
* 更新者 FK ag_acl_user.id
*/
private Long updatedBy;
private static final long serialVersionUID = 1L;
private Integer creatorType;
private Integer updatorType;
private Long customerId;
}
\ No newline at end of file
package com.yd.dal.entity.customer;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* ag_acl_practitioner_potential_assigned_track
* @author
*/
@Data
public class AclPractitionerPotentialAssignedTrack implements Serializable {
/**
* serial id
*/
private Long id;
/**
* FK ag_mkt_practitioner_potential.id 线索指派表
*/
private Long practitionerPotentialId;
/**
* FK ag_acl_practitioner.id 指派团队长id
*/
private Long practitionerAssignedId;
/**
* FK ag_md_drop_options.id 团队长增员状态
*/
private Long trackStatusId;
/**
* 潜在经纪人增员(团队长)类似回访记录
*/
private String notice;
/**
* 0=No, 1=Yes
*/
private Integer isActive;
/**
* 分析建置时间
*/
private Date createdAt;
/**
* 建置者 FK ag_acl_user.id
*/
private Long createdBy;
/**
* 更新时间
*/
private Date updatedAt;
/**
* 更新者 FK ag_acl_user.id
*/
private Long updatedBy;
private Integer creatorType;
private Integer updatorType;
private Integer isLasted;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.yd.dal.entity.customer;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* ag_acl_practitioner_subordinate_system
* @author
*/
@Data
public class AclPractitionerSubordinateSystem implements Serializable {
/**
* serial id
*/
private Long id;
/**
* FK ag_acl_insurer.id
*/
private Long insurerId;
/**
* FK ag_acl_insurer.id
*/
private Long insurerBranchId;
/**
* FK ag_acl_insurer_branch_dept.id 所属部门id
*/
private Long deptId;
/**
* 编码
*/
private String subordinateSystemCode;
/**
* dept name
*/
private String name;
/**
* dept english name
*/
private String nameEn;
/**
* FK ag_acl_practitioner.id,体系主管
*/
private Long ownerPractitionerId;
/**
* 联系人
*/
private String contactName;
/**
* 联系电话
*/
private String contactNo;
/**
* memo or tips
*/
private String remark;
/**
* 0=No, 1=Yes
*/
private Integer isActive;
private Date createdAt;
/**
* FK ag_acl_user.id
*/
private Long createdBy;
private Date updatedAt;
/**
* FK ag_acl_user.id
*/
private Long updatedBy;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.yd.dal.entity.practitioner; package com.yd.dal.entity.customer.practitioner;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
......
package com.yd.dal.entity.practitioner; package com.yd.dal.entity.customer.practitioner;
public class PractitionerBasicInfo { public class PractitionerBasicInfo {
private Long customerId; private Long customerId;
......
package com.yd.dal.entity.practitioner; package com.yd.dal.entity.customer.practitioner;
public class PractitionerInfo { public class PractitionerInfo {
private Long customerId; private Long customerId;
......
package com.yd.dal.entity.practitioner; package com.yd.dal.entity.customer.practitioner;
public class PractitionerRankInfo { public class PractitionerRankInfo {
private Long customerId; private Long customerId;
......
package com.yd.dal.entity.practitioner; package com.yd.dal.entity.customer.practitioner;
public class PractitionerSubordinateInfo { public class PractitionerSubordinateInfo {
private Long subordinateId; private Long subordinateId;
......
...@@ -2,6 +2,8 @@ package com.yd.dal.mapper.customer; ...@@ -2,6 +2,8 @@ package com.yd.dal.mapper.customer;
import com.yd.dal.entity.customer.AclCustomer; import com.yd.dal.entity.customer.AclCustomer;
import java.util.List;
public interface AclCustomerMapper { public interface AclCustomerMapper {
int deleteByPrimaryKey(Long id); int deleteByPrimaryKey(Long id);
...@@ -14,4 +16,6 @@ public interface AclCustomerMapper { ...@@ -14,4 +16,6 @@ public interface AclCustomerMapper {
int updateByPrimaryKeySelective(AclCustomer record); int updateByPrimaryKeySelective(AclCustomer record);
int updateByPrimaryKey(AclCustomer record); int updateByPrimaryKey(AclCustomer record);
List<AclCustomer> findByLogin(String mobileNo);
} }
\ No newline at end of file
package com.yd.dal.mapper.practitioner; package com.yd.dal.mapper.customer;
import com.yd.dal.entity.customer.AclPractitioner;
import com.yd.dal.entity.customer.practitioner.AclPractitionerInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerInfo;
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.PractitionerBasicInfo;
import com.yd.dal.entity.practitioner.PractitionerInfo;
import com.yd.dal.entity.practitioner.PractitionerRankInfo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface PractitionerMapper { public interface AclPractitionerMapper {
int deleteByPrimaryKey(Long id);
int insert(AclPractitioner record);
int insertSelective(AclPractitioner record);
AclPractitioner selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(AclPractitioner record);
int updateByPrimaryKey(AclPractitioner record);
PractitionerBasicInfo getPractitionerInfoByMobileNoForOffline(String mobileNo); PractitionerBasicInfo getPractitionerInfoByMobileNoForOffline(String mobileNo);
List<PractitionerRankInfo> getPractitionerRankInfoForOffline(@Param("time") Integer time); List<PractitionerRankInfo> getPractitionerRankInfoForOffline(@Param("time") Integer time);
...@@ -21,5 +35,7 @@ public interface PractitionerMapper { ...@@ -21,5 +35,7 @@ public interface PractitionerMapper {
PractitionerInfo findPractitionerInfoByLogin(@Param("mobileNo")String mobileNo); PractitionerInfo findPractitionerInfoByLogin(@Param("mobileNo")String mobileNo);
List<OwnOpportunityInfo> ownOpportunityQuery(@Param("practitionerId") Long practitionerId); AclPractitioner findByCustomerIdIsActive(@Param("customerId") Long customerId, @Param("isActive")int isActive);
List<OwnOpportunityInfo> ownOpportunityQuery(Long practitionerId);
} }
\ No newline at end of file
package com.yd.dal.mapper.customer;
import com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface AclPractitionerPotentialAssignedTrackMapper {
int deleteByPrimaryKey(Long id);
int insert(AclPractitionerPotentialAssignedTrack record);
int insertSelective(AclPractitionerPotentialAssignedTrack record);
AclPractitionerPotentialAssignedTrack selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(AclPractitionerPotentialAssignedTrack record);
int updateByPrimaryKey(AclPractitionerPotentialAssignedTrack record);
void insertList(@Param("potentialAssignedTrackList") List<AclPractitionerPotentialAssignedTrack> potentialAssignedTrackList);
}
\ No newline at end of file
package com.yd.dal.mapper.customer;
import com.yd.dal.entity.customer.AclPractitionerPotential;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface AclPractitionerPotentialMapper {
int deleteByPrimaryKey(Long id);
int insert(AclPractitionerPotential record);
int insertSelective(AclPractitionerPotential record);
AclPractitionerPotential selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(AclPractitionerPotential record);
int updateByPrimaryKey(AclPractitionerPotential record);
List<AclPractitionerPotential> findByMobileNo(@Param("mobileNo") String mobileNo, @Param("isActive") Integer isActive);
}
\ No newline at end of file
package com.yd.dal.mapper.customer;
import com.yd.dal.entity.customer.AclPractitionerSubordinateSystem;
import com.yd.dal.entity.customer.practitioner.PractitionerSubordinateInfo;
public interface AclPractitionerSubordinateSystemMapper {
int deleteByPrimaryKey(Long id);
int insert(AclPractitionerSubordinateSystem record);
int insertSelective(AclPractitionerSubordinateSystem record);
AclPractitionerSubordinateSystem selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(AclPractitionerSubordinateSystem record);
int updateByPrimaryKey(AclPractitionerSubordinateSystem record);
PractitionerSubordinateInfo findSubordinateInfo(Long subordinateId);
}
\ No newline at end of file
package com.yd.dal.mapper.practitioner;
import com.yd.dal.entity.practitioner.AclPractitionerInfo;
public interface AclPractitionerMapper {
int deleteByPrimaryKey(Long id);
int insert(AclPractitionerInfo record);
int insertSelective(AclPractitionerInfo record);
AclPractitionerInfo selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(AclPractitionerInfo record);
int updateByPrimaryKey(AclPractitionerInfo record);
}
\ No newline at end of file
package com.yd.dal.mapper.practitioner;
import com.yd.dal.entity.practitioner.PractitionerSubordinateInfo;
import org.apache.ibatis.annotations.Param;
public interface PractitionerSubordinateMapper {
PractitionerSubordinateInfo findSubordinateInfo(@Param("subordinateId") Long subordinateId);
}
...@@ -19,4 +19,8 @@ public interface TenInterfRecordMapper { ...@@ -19,4 +19,8 @@ public interface TenInterfRecordMapper {
int updateByPrimaryKey(TenInterfRecord record); int updateByPrimaryKey(TenInterfRecord record);
List<TenInterfRecord> findByTenInterfRecordOrderBy(@Param("info") TenInterfRecord tencentInterfRecord, @Param("orderBy")String orderBy); List<TenInterfRecord> findByTenInterfRecordOrderBy(@Param("info") TenInterfRecord tencentInterfRecord, @Param("orderBy")String orderBy);
List<TenInterfRecord> findByAppIdAndGrantType(@Param("appId")String appId, @Param("grantType")String grantType, @Param("type")String type);
List<TenInterfRecord> findByAccessTokenAndIType(@Param("accessToken")String accessToken, @Param("pType")String pType,@Param("type")String type);
} }
\ No newline at end of file
...@@ -17,7 +17,7 @@ import java.util.List; ...@@ -17,7 +17,7 @@ import java.util.List;
* @author Simon * @author Simon
* @version 1.0 * @version 1.0
*/ */
@Service("commissionEGoldenDAImpl") @Service("commissionEGoldenDA")
public class CommissionEGoldenDAImpl implements CommissionEGoldenDA { public class CommissionEGoldenDAImpl implements CommissionEGoldenDA {
private static final Logger LOG = Logger.getLogger(CommissionEGoldenDAImpl.class); private static final Logger LOG = Logger.getLogger(CommissionEGoldenDAImpl.class);
......
...@@ -20,7 +20,7 @@ import java.util.List; ...@@ -20,7 +20,7 @@ import java.util.List;
* @author Simon * @author Simon
* @version 1.0 * @version 1.0
*/ */
@Service("commissionServiceDAImpl") @Service("commissionServiceDA")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class CommissionServiceDAImpl implements CommissionServiceDA { public class CommissionServiceDAImpl implements CommissionServiceDA {
......
...@@ -2,6 +2,33 @@ package com.yd.dal.service.customer; ...@@ -2,6 +2,33 @@ package com.yd.dal.service.customer;
import com.yd.dal.entity.customer.AclCustomer; import com.yd.dal.entity.customer.AclCustomer;
import java.util.List;
public interface AclCustomerDALService { public interface AclCustomerDALService {
/**
* 通过登录号进行查找
* @param mobileNo 手机号
* @return
*/
List<AclCustomer> findByLogin(String mobileNo);
/**
* 保存数据
* @param aclCustomer
* @return
*/
void update(AclCustomer aclCustomer);
/**
* 获取用户信息
* @param customerId
* @return
*/
AclCustomer findById(Long customerId);
void save(AclCustomer aclCustomer);
AclCustomer findByCustomerId(Long customerId); AclCustomer findByCustomerId(Long customerId);
} }
package com.yd.dal.service.practitioner; package com.yd.dal.service.customer;
import com.yd.dal.entity.customer.AclFileUpload;
import com.yd.dal.entity.practitioner.AclPractitionerInfo;
import com.yd.dal.entity.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.practitioner.PractitionerInfo;
import com.yd.dal.entity.practitioner.PractitionerRankInfo;
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.practitioner.AclPractitionerInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerRankInfo;
import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
public interface PractitionerDALService { @Service("aclPractitionerDALService")
public interface AclPractitionerDALService {
/**
* 通过customerId 和is_active 获取用户
* @param customerId
* @param i
* @return
*/
AclPractitioner findByCustomerIdIsActive(Long customerId, int i);
/** /**
* 线下--通过手机号码获取经纪人的基础信息 * 线下--通过手机号码获取经纪人的基础信息
* @param mobileNo * @param mobileNo
...@@ -56,13 +66,7 @@ public interface PractitionerDALService { ...@@ -56,13 +66,7 @@ public interface PractitionerDALService {
* @param practitionerId * @param practitionerId
* @return * @return
*/ */
AclPractitionerInfo findPractitionerById(Long practitionerId); AclPractitioner findPractitionerById(Long practitionerId);
/**
* 通过id更新practitioner
* @param practitioner
*/
void updatePractitioner(AclPractitionerInfo practitioner);
/** /**
* 经纪人查询自己的商机 * 经纪人查询自己的商机
...@@ -70,4 +74,5 @@ public interface PractitionerDALService { ...@@ -70,4 +74,5 @@ public interface PractitionerDALService {
* @return * @return
*/ */
List<OwnOpportunityInfo> ownOpportunityQuery(Long practitionerId); List<OwnOpportunityInfo> ownOpportunityQuery(Long practitionerId);
void updatePractitioner(AclPractitioner practitioner);
} }
package com.yd.dal.service.customer;
import com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("aclPractitionerPotentialAssignedTrackDALService")
public interface AclPractitionerPotentialAssignedTrackDALService {
void saveAll(List<AclPractitionerPotentialAssignedTrack> potentialAssignedTrackList);
}
package com.yd.dal.service.customer;
import com.yd.dal.entity.customer.AclPractitionerPotential;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("aclPractitionerPotentialDALService")
public interface AclPractitionerPotentialDALService {
/**
* 根据手机号查询
* @param mobileNo
* @return
*/
List<AclPractitionerPotential> findByMobileNo(String mobileNo,Integer isActive);
/**
* 保存
* @param practitionerPotential
* @return
*/
int save(AclPractitionerPotential practitionerPotential);
}
package com.yd.dal.service.customer;
import com.yd.dal.entity.customer.practitioner.PractitionerSubordinateInfo;
import org.springframework.stereotype.Service;
@Service("aclPractitionerSubordinateSystemDALService")
public interface AclPractitionerSubordinateSystemDALService {
PractitionerSubordinateInfo findSubordinateInfo(Long subordinateId);
}
...@@ -6,14 +6,39 @@ import com.yd.dal.service.customer.AclCustomerDALService; ...@@ -6,14 +6,39 @@ import com.yd.dal.service.customer.AclCustomerDALService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("aclCustomerDALService") @Service("aclCustomerDalService")
public class AclCustomerDALServiceImpl implements AclCustomerDALService { public class AclCustomerDALServiceImpl implements AclCustomerDALService {
@Resource
@Autowired
private AclCustomerMapper aclCustomerMapper; private AclCustomerMapper aclCustomerMapper;
@Override
public List<AclCustomer> findByLogin(String mobileNo) {
return aclCustomerMapper.findByLogin(mobileNo);
}
@Override
public void update(AclCustomer aclCustomer) {
aclCustomerMapper.updateByPrimaryKeySelective(aclCustomer);
}
@Override
public AclCustomer findById(Long customerId) {
return aclCustomerMapper.selectByPrimaryKey(customerId);
}
@Override
public void save(AclCustomer aclCustomer) {
aclCustomerMapper.insertSelective(aclCustomer);
}
@Override @Override
public AclCustomer findByCustomerId(Long customerId) { public AclCustomer findByCustomerId(Long customerId) {
return aclCustomerMapper.selectByPrimaryKey(customerId); return aclCustomerMapper.selectByPrimaryKey(customerId);
} }
} }
package com.yd.dal.service.practitioner.impl; package com.yd.dal.service.customer.impl;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.yd.dal.entity.practitioner.AclPractitionerInfo; import com.yd.dal.entity.customer.practitioner.AclPractitionerInfo;
import com.yd.dal.entity.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.practitioner.PractitionerInfo;
import com.yd.dal.entity.practitioner.PractitionerRankInfo;
import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo; import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo;
import com.yd.dal.mapper.practitioner.AclPractitionerMapper; import com.yd.dal.entity.customer.AclPractitioner;
import com.yd.dal.mapper.practitioner.PractitionerMapper; import com.yd.dal.entity.customer.practitioner.PractitionerBasicInfo;
import com.yd.dal.service.customer.impl.CustomerDALServiceImpl; import com.yd.dal.entity.customer.practitioner.PractitionerInfo;
import com.yd.dal.service.practitioner.PractitionerDALService; import com.yd.dal.entity.customer.practitioner.PractitionerRankInfo;
import com.yd.dal.mapper.customer.AclPractitionerMapper;
import com.yd.dal.service.customer.AclPractitionerDALService;
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.log4j.Logger; import org.apache.log4j.Logger;
...@@ -17,19 +16,21 @@ import org.springframework.stereotype.Service; ...@@ -17,19 +16,21 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
@Service("aclPractitionerDALService")
@Service("practitionerServiceDAL") public class AclPractitionerDALServiceImpl implements AclPractitionerDALService {
public class PractitionerDALServiceImpl implements PractitionerDALService { private static final Logger LOG = Logger.getLogger(AclPractitionerDALServiceImpl.class);
private static final Logger LOG = Logger.getLogger(CustomerDALServiceImpl.class);
@Resource
private PractitionerMapper practitionerMapper;
@Resource @Resource
private AclPractitionerMapper aclPractitionerMapper; private AclPractitionerMapper aclPractitionerMapper;
@Override @Override
public AclPractitioner findByCustomerIdIsActive(Long customerId, int isActive) {
return aclPractitionerMapper.findByCustomerIdIsActive(customerId,isActive);
}
@Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_EGOLDEN) @TargetDataSource(dataSourceKey = DataSourceKey.DB_EGOLDEN)
public PractitionerBasicInfo getPractitionerBasicInfoForOffline(String mobileNo) { public PractitionerBasicInfo getPractitionerBasicInfoForOffline(String mobileNo) {
if(!Strings.isNullOrEmpty(mobileNo)){ if(!Strings.isNullOrEmpty(mobileNo)){
return practitionerMapper.getPractitionerInfoByMobileNoForOffline(mobileNo); return aclPractitionerMapper.getPractitionerInfoByMobileNoForOffline(mobileNo);
}else{ }else{
LOG.error("mobileNo is null!"); LOG.error("mobileNo is null!");
} }
...@@ -39,7 +40,7 @@ public class PractitionerDALServiceImpl implements PractitionerDALService { ...@@ -39,7 +40,7 @@ public class PractitionerDALServiceImpl implements PractitionerDALService {
@Override @Override
public PractitionerBasicInfo getPractitionerBasicInfoForOnline(String mobileNo) { public PractitionerBasicInfo getPractitionerBasicInfoForOnline(String mobileNo) {
if(!Strings.isNullOrEmpty(mobileNo)){ if(!Strings.isNullOrEmpty(mobileNo)){
return practitionerMapper.getPractitionerInfoByMobileNoForOnline(mobileNo); return aclPractitionerMapper.getPractitionerInfoByMobileNoForOnline(mobileNo);
}else{ }else{
LOG.error("mobileNo is null!"); LOG.error("mobileNo is null!");
} }
...@@ -49,38 +50,38 @@ public class PractitionerDALServiceImpl implements PractitionerDALService { ...@@ -49,38 +50,38 @@ public class PractitionerDALServiceImpl implements PractitionerDALService {
@Override @Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_EGOLDEN) @TargetDataSource(dataSourceKey = DataSourceKey.DB_EGOLDEN)
public List<PractitionerRankInfo> getPractitionerRankInfoForOffline(Integer time) { public List<PractitionerRankInfo> getPractitionerRankInfoForOffline(Integer time) {
return practitionerMapper.getPractitionerRankInfoForOffline(time); return aclPractitionerMapper.getPractitionerRankInfoForOffline(time);
} }
@Override @Override
public List<PractitionerRankInfo> getPractitionerRankInfoForOnline(Integer time,Long practitionerTypeId) { public List<PractitionerRankInfo> getPractitionerRankInfoForOnline(Integer time,Long practitionerTypeId) {
return practitionerMapper.getPractitionerRankInfoForOnline(time,practitionerTypeId); return aclPractitionerMapper.getPractitionerRankInfoForOnline(time,practitionerTypeId);
} }
@Override @Override
public List<PractitionerRankInfo> getPractitionerRankInfoForSpecials(List<String> mobileSpecials,Integer time) { public List<PractitionerRankInfo> getPractitionerRankInfoForSpecials(List<String> mobileSpecials,Integer time) {
return practitionerMapper.getPractitionerRankInfoForSpecials(mobileSpecials,time); return aclPractitionerMapper.getPractitionerRankInfoForSpecials(mobileSpecials,time);
} }
@Override @Override
public PractitionerInfo findPractitionerInfoByLogin(String mobileNo) { public PractitionerInfo findPractitionerInfoByLogin(String mobileNo) {
return practitionerMapper.findPractitionerInfoByLogin(mobileNo); return aclPractitionerMapper.findPractitionerInfoByLogin(mobileNo);
} }
@Override @Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_MASTER) @TargetDataSource(dataSourceKey = DataSourceKey.DB_MASTER)
public AclPractitionerInfo findPractitionerById(Long practitionerId) { public AclPractitioner findPractitionerById(Long practitionerId) {
return aclPractitionerMapper.selectByPrimaryKey(practitionerId); return aclPractitionerMapper.selectByPrimaryKey(practitionerId);
} }
@Override @Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_MASTER) @TargetDataSource(dataSourceKey = DataSourceKey.DB_MASTER)
public void updatePractitioner(AclPractitionerInfo practitioner) { public void updatePractitioner(AclPractitioner practitioner) {
aclPractitionerMapper.updateByPrimaryKeySelective(practitioner); aclPractitionerMapper.updateByPrimaryKeySelective(practitioner);
} }
@Override @Override
public List<OwnOpportunityInfo> ownOpportunityQuery(Long practitionerId) { public List<OwnOpportunityInfo> ownOpportunityQuery(Long practitionerId) {
return practitionerMapper.ownOpportunityQuery(practitionerId); return aclPractitionerMapper.ownOpportunityQuery(practitionerId);
} }
} }
package com.yd.dal.service.customer.impl;
import com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack;
import com.yd.dal.mapper.customer.AclPractitionerPotentialAssignedTrackMapper;
import com.yd.dal.service.customer.AclPractitionerPotentialAssignedTrackDALService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("aclPractitionerPotentialAssignedTrackDALService")
public class AclPractitionerPotentialAssignedTrackDALServiceImpl implements AclPractitionerPotentialAssignedTrackDALService {
@Autowired
private AclPractitionerPotentialAssignedTrackMapper aclPractitionerPotentialAssignedTrackMapper;
@Override
public void saveAll(List<AclPractitionerPotentialAssignedTrack> potentialAssignedTrackList) {
aclPractitionerPotentialAssignedTrackMapper.insertList(potentialAssignedTrackList);
}
}
package com.yd.dal.service.customer.impl;
import com.yd.dal.entity.customer.AclPractitionerPotential;
import com.yd.dal.mapper.customer.AclPractitionerPotentialMapper;
import com.yd.dal.service.customer.AclPractitionerPotentialDALService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("aclPractitionerPotentialDALService")
public class AclPractitionerPotentialDALServiceImpl implements AclPractitionerPotentialDALService {
@Autowired
private AclPractitionerPotentialMapper aclPractitionerPotentialMapper;
@Override
public List<AclPractitionerPotential> findByMobileNo(String mobileNo, Integer isActive) {
return aclPractitionerPotentialMapper.findByMobileNo(mobileNo,isActive);
}
@Override
public int save(AclPractitionerPotential practitionerPotential) {
return aclPractitionerPotentialMapper.insert(practitionerPotential);
}
}
package com.yd.dal.service.practitioner.impl; package com.yd.dal.service.customer.impl;
import com.yd.dal.entity.practitioner.PractitionerSubordinateInfo; import com.yd.dal.entity.customer.practitioner.PractitionerSubordinateInfo;
import com.yd.dal.mapper.practitioner.PractitionerSubordinateMapper; import com.yd.dal.mapper.customer.AclPractitionerSubordinateSystemMapper;
import com.yd.dal.service.practitioner.PractitionerSubordinateDALService; import com.yd.dal.service.customer.AclPractitionerSubordinateSystemDALService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service("practitionerSubordinateDALService") import javax.annotation.Resource;
public class PractitionerSubordinateDALServiceImpl implements PractitionerSubordinateDALService {
@Autowired @Service("aclPractitionerSubordinateSystemDALService")
private PractitionerSubordinateMapper practitionerSubordinateMapper; public class AclPractitionerSubordinateSystemDALServiceImpl implements AclPractitionerSubordinateSystemDALService {
@Resource
private AclPractitionerSubordinateSystemMapper aclPractitionerSubordinateSystemMapper;
/** /**
* 根据体系ID获取体系相关信息 * 根据体系ID获取体系相关信息
* @param subordinateId 体系ID * @param subordinateId 体系ID
...@@ -19,7 +20,7 @@ public class PractitionerSubordinateDALServiceImpl implements PractitionerSubord ...@@ -19,7 +20,7 @@ public class PractitionerSubordinateDALServiceImpl implements PractitionerSubord
public PractitionerSubordinateInfo findSubordinateInfo(Long subordinateId) { public PractitionerSubordinateInfo findSubordinateInfo(Long subordinateId) {
PractitionerSubordinateInfo subordinateInfo = null; PractitionerSubordinateInfo subordinateInfo = null;
if(subordinateId != null){ if(subordinateId != null){
subordinateInfo = practitionerSubordinateMapper.findSubordinateInfo(subordinateId); subordinateInfo = aclPractitionerSubordinateSystemMapper.findSubordinateInfo(subordinateId);
} }
return subordinateInfo; return subordinateInfo;
} }
......
package com.yd.dal.service.practitioner;
import com.yd.dal.entity.practitioner.PractitionerSubordinateInfo;
import org.springframework.stereotype.Service;
@Service("practitionerSubordinateDALService")
public interface PractitionerSubordinateDALService {
PractitionerSubordinateInfo findSubordinateInfo(Long subordinateId);
}
...@@ -23,4 +23,14 @@ public class TenInterfRecordDALServiceImpl implements TenInterfRecordDALService ...@@ -23,4 +23,14 @@ public class TenInterfRecordDALServiceImpl implements TenInterfRecordDALService
public List<TenInterfRecord> findByTenInterfRecordOrderBy(TenInterfRecord tencentInterfRecord, String orderBy) { public List<TenInterfRecord> findByTenInterfRecordOrderBy(TenInterfRecord tencentInterfRecord, String orderBy) {
return tenInterfRecordMapper.findByTenInterfRecordOrderBy(tencentInterfRecord, orderBy); return tenInterfRecordMapper.findByTenInterfRecordOrderBy(tencentInterfRecord, orderBy);
} }
@Override
public List<TenInterfRecord> findByAppIdAndGrantType(String appId, String grantType) {
return tenInterfRecordMapper.findByAppIdAndGrantType(appId,grantType,"TOKEN");
}
@Override
public List<TenInterfRecord> findByAccessTokenAndIType(String accessToken, String pType) {
return tenInterfRecordMapper.findByAccessTokenAndIType(accessToken,pType,"TICKET");
}
} }
...@@ -8,4 +8,8 @@ public interface TenInterfRecordDALService { ...@@ -8,4 +8,8 @@ public interface TenInterfRecordDALService {
void saveTenInterfRecord(TenInterfRecord tencentInterfRecord); void saveTenInterfRecord(TenInterfRecord tencentInterfRecord);
List<TenInterfRecord> findByTenInterfRecordOrderBy(TenInterfRecord tencentInterfRecord, String orderBy); List<TenInterfRecord> findByTenInterfRecordOrderBy(TenInterfRecord tencentInterfRecord, String orderBy);
List<TenInterfRecord> findByAppIdAndGrantType(String appId, String grantType);
List<TenInterfRecord> findByAccessTokenAndIType(String accessToken, String pType);
} }
package com.yd.rmi.tencent.wechat; package com.yd.rmi.tencent.wechat;
import com.google.common.base.Strings;
import com.yd.api.result.JsonResult; import com.yd.api.result.JsonResult;
import com.yd.dal.entity.customer.AclCustomer;
import com.yd.dal.entity.customer.AclCustomerLog;
import com.yd.dal.service.customer.AclCustomerDALService;
import com.yd.dal.service.customer.AclCustomerLogDALService;
import com.yd.rmi.cache.SystemConfigService; import com.yd.rmi.cache.SystemConfigService;
import com.yd.rmi.tencent.wechat.service.WechatService; import com.yd.rmi.tencent.wechat.service.WechatService;
import com.yd.rmi.tencent.wechat.vo.accesstoken.AccessTokenByCodeRequest;
import com.yd.rmi.tencent.wechat.vo.accesstoken.AccessTokenByCodeResponse;
import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketRequest; import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.token.TokenRequest; import com.yd.rmi.tencent.wechatinterf.pojo.token.TokenRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.wechatpay.WxConfigRequestVO; import com.yd.rmi.tencent.wechatinterf.pojo.wechatpay.WxConfigRequestVO;
import com.yd.rmi.tencent.wechatinterf.pojo.wechatpay.WxConfigResponseVO; import com.yd.rmi.tencent.wechatinterf.pojo.wechatpay.WxConfigResponseVO;
import com.yd.rmi.tencent.wechatinterf.service.WechatInterfService;
import com.yd.util.SpringContextUtil; import com.yd.util.SpringContextUtil;
import com.yd.util.config.ZHBErrorConfig; import com.yd.util.config.ZHBErrorConfig;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -15,9 +23,15 @@ import org.springframework.web.bind.annotation.CrossOrigin; ...@@ -15,9 +23,15 @@ import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.util.List;
import java.util.Map; import java.util.Map;
@Controller @Controller
...@@ -27,6 +41,12 @@ public class WechatController { ...@@ -27,6 +41,12 @@ public class WechatController {
private WechatService wechatService; private WechatService wechatService;
@Autowired @Autowired
private SystemConfigService systemConfigService; private SystemConfigService systemConfigService;
@Autowired
private AclCustomerDALService aclCustomerDALService;
@Autowired
private WechatInterfService wechatInterfService;
@Autowired
private AclCustomerLogDALService aclCustomerLogDALService;
/** /**
* 微信分享时授权 * 微信分享时授权
* @param wxConfigRequestVO * @param wxConfigRequestVO
...@@ -58,4 +78,66 @@ public class WechatController { ...@@ -58,4 +78,66 @@ public class WechatController {
result.setMessage(ZHBErrorConfig.getErrorInfo("800000")); result.setMessage(ZHBErrorConfig.getErrorInfo("800000"));
return result; return result;
} }
/**
* 获取用户的openID
* @param request
* @return
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/getOpenId")
@ResponseBody
public Object getOpenId(HttpServletRequest request) {
String code = request.getParameter("code");
String info = request.getParameter("info");
System.out.println(">>>>>>code>>>>>>" + code);
System.out.println(">>>>>>info>>>>>>" + info);
String jumpUrl = systemConfigService.getSingleConfigValue("YdLifeIndex");//https://mdev.zuihuibi.cn/ydLife/my
if (!Strings.isNullOrEmpty(code) && !Strings.isNullOrEmpty(info)) {
String[] infoArr = info.split(",");
String appId = infoArr[0];
String customerIdStr = infoArr[1];
AccessTokenByCodeResponse accessTokenByCodeResponse = getAccessTokenByCode(code, appId);
if (!Strings.isNullOrEmpty(customerIdStr) && accessTokenByCodeResponse != null) {
Long customerId = Long.parseLong(customerIdStr);
String openId = accessTokenByCodeResponse.getOpenid();
AclCustomer customer = aclCustomerDALService.findById(customerId);
customer.setYdWechatOpenid(openId);
aclCustomerDALService.update(customer);
List<AclCustomerLog> customerLogList = aclCustomerLogDALService.findLogInfoByCustomerId(customerId);
int logTimes = (customerLogList.isEmpty()) ? 0 : customerLogList.size();
jumpUrl = (logTimes < 2) ? systemConfigService.getSingleConfigValue("YdLifeThanksPage") : jumpUrl;
}
}
return new ModelAndView(new RedirectView(jumpUrl));
}
private AccessTokenByCodeResponse getAccessTokenByCode(String code, String appId) {
AccessTokenByCodeResponse accessTokenByCodeResponse = null;
String appIdZHB = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_APPID");//最惠比公众账号id
String appIdYD = systemConfigService.getSingleConfigValue("YD-TENCENT_WECHAT_APPID");//银盾公众账号id
String appIdAJB = systemConfigService.getSingleConfigValue("AJB-TENCENT_WECHAT_APPID");//安吉保公众账号id
String appIdYD2 = systemConfigService.getSingleConfigValue("YD2-TENCENT_WECHAT_MINIPRO_APPID");//银盾公众账号id--小程序福利产品
String secret = null;
if(appId.equals(appIdYD)){//银盾
secret = systemConfigService.getSingleConfigValue("YD-TENCENT_WECHAT_APP_SECRET");//第三方用户唯一凭证密钥
}else if(appId.equals(appIdAJB)){//安吉保
secret = systemConfigService.getSingleConfigValue("AJB-TENCENT_WECHAT_APP_SECRET");//第三方用户唯一凭证密钥
}else if(appId.equals(appIdYD2)){//银盾2--福利产品支付
secret = systemConfigService.getSingleConfigValue("YD2-TENCENT_WECHAT_APP_SECRET");//第三方用户唯一凭证密钥
}else if(appId.equals(appIdZHB)){//最惠比--appid
secret = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_APP_SECRET");//第三方用户唯一凭证密钥
}
if(!Strings.isNullOrEmpty(secret)){
String grantType = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_ACCESS_TOKEN_GRANT_TYPE");
AccessTokenByCodeRequest accessTokenByCodeRequest = new AccessTokenByCodeRequest();
accessTokenByCodeRequest.setCode(code);
accessTokenByCodeRequest.setAppid(appId);
accessTokenByCodeRequest.setSecret(secret);
accessTokenByCodeRequest.setGrant_type(grantType);
accessTokenByCodeResponse = wechatInterfService.getAccessTokenByCode(accessTokenByCodeRequest);
}
return accessTokenByCodeResponse;
}
} }
package com.yd.rmi.tencent.wechat.service; package com.yd.rmi.tencent.wechat.service;
import com.yd.rmi.tencent.wechat.vo.WeChatInfoByENV;
import com.yd.rmi.tencent.wechat.vo.WxNATIVEPayQueryReqVO; import com.yd.rmi.tencent.wechat.vo.WxNATIVEPayQueryReqVO;
import com.yd.rmi.tencent.wechat.vo.WxNATIVEPayQueryRespVO; import com.yd.rmi.tencent.wechat.vo.WxNATIVEPayQueryRespVO;
import com.yd.rmi.tencent.wechat.vo.WxUserInfo; import com.yd.rmi.tencent.wechat.vo.WxUserInfo;
import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenResponse; import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenResponse;
import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketRequest; import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.token.TokenRequest; import com.yd.rmi.tencent.wechatinterf.pojo.token.TokenRequest;
...@@ -11,6 +13,15 @@ import com.yd.rmi.tencent.wechatinterf.pojo.unifiedorder.UnifiedorderResponse; ...@@ -11,6 +13,15 @@ import com.yd.rmi.tencent.wechatinterf.pojo.unifiedorder.UnifiedorderResponse;
import java.util.Map; import java.util.Map;
public interface WechatService { public interface WechatService {
/**
* 微信接口交互 -- access_token
* access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。
* 注意这和网页授权部分的access_token不是一回事!该接口有调用次数限制,且独立(不依赖于authorize接口)
* @param accessTokenRequest
* @return
*/
String getAccessToken(AccessTokenRequest accessTokenRequest);
public String obtainToken(TokenRequest tokenRequest); public String obtainToken(TokenRequest tokenRequest);
public String obtainTicket(TicketRequest ticketRequest); public String obtainTicket(TicketRequest ticketRequest);
public UnifiedorderResponse unifiedorder(String appId, String openId, String wCpayMethod, String timeExpire, String mchId, Double orderPrice, String planName, String orderNo, String notifyUrl); public UnifiedorderResponse unifiedorder(String appId, String openId, String wCpayMethod, String timeExpire, String mchId, Double orderPrice, String planName, String orderNo, String notifyUrl);
...@@ -69,4 +80,13 @@ public interface WechatService { ...@@ -69,4 +80,13 @@ public interface WechatService {
*/ */
public WxUserInfo getWxUserInfo(String openId, String accessToken); public WxUserInfo getWxUserInfo(String openId, String accessToken);
/**
* 通过环境来获取公众号的access_token
* 在正式环境有两个公众号,银盾保险在线--YDZX 银盾保险经纪--YDBJ
* 测试环境只有一个公众号
* @param gzhName 在正式环境有两个公众号,银盾保险在线--YDZX 银盾保险经纪--YDBJ
* @return
*/
WeChatInfoByENV getWeChatInfoByENV(String gzhName, boolean getAccessToken);
} }
package com.yd.rmi.tencent.wechat.service.impl; package com.yd.rmi.tencent.wechat.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Strings;
import com.yd.api.result.CommonResult; import com.yd.api.result.CommonResult;
import com.yd.rmi.cache.SystemConfigService; import com.yd.rmi.cache.SystemConfigService;
import com.yd.dal.entity.tencent.TenInterfRecord; import com.yd.dal.entity.tencent.TenInterfRecord;
...@@ -7,9 +10,11 @@ import com.yd.dal.entity.transaction.TranLog; ...@@ -7,9 +10,11 @@ import com.yd.dal.entity.transaction.TranLog;
import com.yd.dal.service.tencent.TenInterfRecordDALService; import com.yd.dal.service.tencent.TenInterfRecordDALService;
import com.yd.dal.service.transaction.TranLogDALService; import com.yd.dal.service.transaction.TranLogDALService;
import com.yd.rmi.tencent.wechat.service.WechatService; import com.yd.rmi.tencent.wechat.service.WechatService;
import com.yd.rmi.tencent.wechat.vo.WeChatInfoByENV;
import com.yd.rmi.tencent.wechat.vo.WxNATIVEPayQueryReqVO; import com.yd.rmi.tencent.wechat.vo.WxNATIVEPayQueryReqVO;
import com.yd.rmi.tencent.wechat.vo.WxNATIVEPayQueryRespVO; import com.yd.rmi.tencent.wechat.vo.WxNATIVEPayQueryRespVO;
import com.yd.rmi.tencent.wechat.vo.WxUserInfo; import com.yd.rmi.tencent.wechat.vo.WxUserInfo;
import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenResponse; import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenResponse;
import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketRequest; import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketResponse; import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketResponse;
...@@ -571,6 +576,142 @@ public class WechatServiceImpl implements WechatService { ...@@ -571,6 +576,142 @@ public class WechatServiceImpl implements WechatService {
} }
@Override @Override
public WeChatInfoByENV getWeChatInfoByENV(String gzhName, boolean getAccessToken) {
WeChatInfoByENV weChatInfoByENV = new WeChatInfoByENV();
boolean isProd = SpringContextUtil.isProd();
boolean isLocal = SpringContextUtil.isLocal();
String appId,secret,accessToken;
String grantType = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TOKEN_GRANT_TYPE");
//根据不同环境和不同公众号获取公众号的appId和secret
if("YDBJ".equals(gzhName)){
appId = systemConfigService.getSingleConfigValue("YD-TENCENT_WECHAT_APPID");
secret = systemConfigService.getSingleConfigValue("YD-TENCENT_WECHAT_APP_SECRET");
}else{
if(isProd){
appId = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_APPID");
secret = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_APP_SECRET");
}else{
appId = systemConfigService.getSingleConfigValue("AJB-TENCENT_WECHAT_APPID");
secret = systemConfigService.getSingleConfigValue("AJB-TENCENT_WECHAT_APP_SECRET");
}
}
// if(isProd){
// if("YDBJ".equals(gzhName)){
// appId = systemConfigService.getSingleConfigValue("YD-TENCENT_WECHAT_APPID");
// secret = systemConfigService.getSingleConfigValue("YD-TENCENT_WECHAT_APP_SECRET");
// }else{
// appId = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_APPID");
// secret = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_APP_SECRET");
// }
// }else{
// appId = systemConfigService.getSingleConfigValue("AJB-TENCENT_WECHAT_APPID");
// secret = systemConfigService.getSingleConfigValue("AJB-TENCENT_WECHAT_APP_SECRET");
// }
if(getAccessToken){
AccessTokenRequest accessTokenRequest = new AccessTokenRequest();
accessTokenRequest.setAppid(appId);
accessTokenRequest.setSecret(secret);
accessTokenRequest.setGrant_type(grantType);
//本地环境需要通过dev环境去获取
accessToken = isLocal ? getAccessTokenByDEV(accessTokenRequest) : getAccessToken(accessTokenRequest);
weChatInfoByENV.setAccessToken(accessToken);
}
weChatInfoByENV.setAppId(appId);
weChatInfoByENV.setSecret(secret);
return weChatInfoByENV;
}
/**
* 在本地开发时,通过dev去获取access_token
* @param accessTokenRequest
* @return
*/
private String getAccessTokenByDEV(AccessTokenRequest accessTokenRequest) {
String requestJson = JsonUtil.objToJson(accessTokenRequest);
String responseJson = HttpUtil.postForJson("https://mdev.zuihuibi.cn/api/getAccessToken",requestJson);
JSONObject result = JSON.parseObject(responseJson);
return result.getString("data");
}
@Override
public String getAccessToken(AccessTokenRequest accessTokenRequest) {
refactorRequest(accessTokenRequest);
String grantType = accessTokenRequest.getGrant_type();
String appId = accessTokenRequest.getAppid();
String secret = accessTokenRequest.getSecret();
//1、查询数据库是否存在
String accessToken = getAccessTokenOrTicketByDB(grantType,appId,secret,null,null,"TOKEN");
//2、如果不存在则重新生成
if(Strings.isNullOrEmpty(accessToken)){
AccessTokenResponse accessTokenResponse = wechatInterfService.getAccessToken(accessTokenRequest);
accessToken = accessTokenResponse.getAccess_token();
//保存数据进数据库
String expiresInStr = accessTokenResponse.getExpires_in();
Long expiresIn = Strings.isNullOrEmpty(expiresInStr) ? null : Long.parseLong(expiresInStr);
TenInterfRecord tenCentRecord = new TenInterfRecord();
tenCentRecord.setInterfType("TOKEN");
tenCentRecord.setGrantType(grantType);
tenCentRecord.setAppid(appId);
tenCentRecord.setSecret(secret);
tenCentRecord.setAccessToken(accessToken);
tenCentRecord.setExpiresIn(expiresIn);
tenCentRecord.setErrcode(accessTokenResponse.getErrcode());
tenCentRecord.setErrmsg(accessTokenResponse.getErrmsg());
tenCentRecord.setCreatedAt(new Date());
tenInterfRecordDALService.saveTenInterfRecord(tenCentRecord);
}
return accessToken;
}
private void refactorRequest(AccessTokenRequest accessTokenRequest) {
String appId = accessTokenRequest.getAppid();
String secret = accessTokenRequest.getSecret();
if (Strings.isNullOrEmpty(appId) || Strings.isNullOrEmpty(secret)) {
appId = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_APPID");
secret = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_APP_SECRET");
String grantType = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TOKEN_GRANT_TYPE");
accessTokenRequest.setAppid(appId);
accessTokenRequest.setGrant_type(grantType);
accessTokenRequest.setSecret(secret);
}
}
/**
* 获取获取access_token或者ticket时 查询数据库是否存在相关记录
* @param grantType
* @param appId
* @param secret
* @param pType
* @param accessToken
* @param type "TOKEN":获取access_token TICKET:获取ticket
* @return
*/
private String getAccessTokenOrTicketByDB(String grantType, String appId, String secret, String pType, String accessToken, String type) {
String result = null;
TenInterfRecord tenCentRecord = new TenInterfRecord();
tenCentRecord.setInterfType(type);
List<TenInterfRecord> tenCentInterfaceRecordList = null;
/** 查询最近一天(24H)内 有效期(expires_in)不为空的数据(倒序) **/
if("TOKEN".equals(type)){
tenCentInterfaceRecordList = tenInterfRecordDALService.findByAppIdAndGrantType(appId,grantType);
}else if("TICKET".equals(type)){
tenCentInterfaceRecordList = tenInterfRecordDALService.findByAccessTokenAndIType(accessToken,pType);
}
if(tenCentInterfaceRecordList != null && tenCentInterfaceRecordList.size() >0){
tenCentRecord = tenCentInterfaceRecordList.get(0);
Long expiresIn = tenCentRecord.getExpiresIn();
Date createAt = tenCentRecord.getCreatedAt();
if(expiresIn != null){
Date overdueDate = CommonUtil.dateOperation(createAt, "ADD", "S", expiresIn.intValue());
if(new Date().compareTo(overdueDate) < 0){
result = ("TOKEN".equals(type)) ? tenCentRecord.getAccessToken() : ("TICKET".equals(type)) ? tenCentRecord.getTicket() : null;
}
}
}
return result;
}
@Override
public Map<String, String> jsapiTicketSign(String jsapiTicket, String url) { public Map<String, String> jsapiTicketSign(String jsapiTicket, String url) {
Map<String, String> ret = new HashMap<String, String>(); Map<String, String> ret = new HashMap<String, String>();
String nonceStr = createNonceStr(); String nonceStr = createNonceStr();
...@@ -613,6 +754,11 @@ public class WechatServiceImpl implements WechatService { ...@@ -613,6 +754,11 @@ public class WechatServiceImpl implements WechatService {
return Long.toString(System.currentTimeMillis() / 1000); return Long.toString(System.currentTimeMillis() / 1000);
} }
// private String transaction(String httpURL,String requestXML,String requestMethod){ // private String transaction(String httpURL,String requestXML,String requestMethod){
// HttpsURLConnection conn = null; // HttpsURLConnection conn = null;
// OutputStream out = null; // OutputStream out = null;
......
package com.yd.rmi.tencent.wechat.vo;
public class WeChatInfoByENV {
private String appId;
private String secret;
private String accessToken;
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public String getSecret() {
return secret;
}
public void setSecret(String secret) {
this.secret = secret;
}
public String getAccessToken() {
return accessToken;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
}
package com.yd.rmi.tencent.wechat.vo.accesstoken;
/**
* https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318590&token=&lang=zh_CN
* 代公众号发起网页授权
简介
在公众号授权托管给第三方平台后,第三方平台可以根据本文档相关说明,代替授权公众号发起网页授权。关于OAuth2.0的详细介绍,可以参考OAuth2.0协议标准
作为第三方平台开发商,需要拥有自己的appid以及secret(在创建第三方平台并获得审核成功后可以获取),以及确保授权的公众号具备授权作用域的权限,以及用于回调的域名。
授权流程
微信目前支持Authorization code授权模式,主要流程分为两步:
1. 获取code
2. 通过code换取accesstoken
*
*/
public class AccessTokenByCodeRequest {
/*
!!! 开放平台的文档中对于这个接口的描述和公众平台有差异!下面是开放平台中截取的(在公众平台中入参没有component_appid和component_access_token,有secret)
第二步:通过code换取access_token
请求方法
获取第一步的code后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/component/access_token?appid=APPID&code=CODE&grant_type=authorization_code&component_appid=COMPONENT_APPID&component_access_token=COMPONENT_ACCESS_TOKEN
需要注意的是,由于安全方面的考虑,对访问该链接的客户端有IP白名单的要求。
参数说明
参数 是否必须 说明
appid 是 公众号的appid
code 是 填写第一步获取的code参数
grant_type 是 填authorization_code
component_appid 是 服务开发方的appid
component_access_token 是 服务开发方的access_token
返回说明
正确的返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
参数 说明
access_token 接口调用凭证
expires_in access_token接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token
openid 授权用户唯一标识
scope 用户授权的作用域,使用逗号(,)分隔
错误返回样例:
{"errcode":40029,"errmsg":"invalid code"}
*/
private String appid;
private String secret;
private String code;
private String grant_type;
private String component_appid;
private String component_access_token;
public String getAppid() {
return appid;
}
public void setAppid(String appid) {
this.appid = appid;
}
public String getSecret() {
return secret;
}
public void setSecret(String secret) {
this.secret = secret;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getGrant_type() {
return grant_type;
}
public void setGrant_type(String grant_type) {
this.grant_type = grant_type;
}
public String getComponent_appid() {
return component_appid;
}
public void setComponent_appid(String component_appid) {
this.component_appid = component_appid;
}
public String getComponent_access_token() {
return component_access_token;
}
public void setComponent_access_token(String component_access_token) {
this.component_access_token = component_access_token;
}
}
\ No newline at end of file
package com.yd.rmi.tencent.wechat.vo.accesstoken;
public class AccessTokenByCodeResponse {
// {
// "access_token":"ACCESS_TOKEN",
// "expires_in":7200,
// "refresh_token":"REFRESH_TOKEN",
// "openid":"OPENID",
// "scope":"SCOPE",
// "unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"
// }
private String access_token;
private String expires_in;
private String refresh_token;
private String openid;
private String scope;
private String unionid;
private String errcode;
private String errmsg;
public String getAccess_token() {
return access_token;
}
public void setAccess_token(String access_token) {
this.access_token = access_token;
}
public String getExpires_in() {
return expires_in;
}
public void setExpires_in(String expires_in) {
this.expires_in = expires_in;
}
public String getRefresh_token() {
return refresh_token;
}
public void setRefresh_token(String refresh_token) {
this.refresh_token = refresh_token;
}
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
public String getScope() {
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
public String getUnionid() {
return unionid;
}
public void setUnionid(String unionid) {
this.unionid = unionid;
}
public String getErrcode() {
return errcode;
}
public void setErrcode(String errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
}
package com.yd.rmi.tencent.wechatinterf.service; package com.yd.rmi.tencent.wechatinterf.service;
import com.yd.rmi.tencent.wechat.vo.accesstoken.AccessTokenByCodeRequest;
import com.yd.rmi.tencent.wechat.vo.accesstoken.AccessTokenByCodeResponse;
import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenRequest; import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenResponse; import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenResponse;
import com.yd.rmi.tencent.wechatinterf.pojo.authorize.AuthorizeRequest; import com.yd.rmi.tencent.wechatinterf.pojo.authorize.AuthorizeRequest;
...@@ -63,4 +65,29 @@ public interface WechatInterfService { ...@@ -63,4 +65,29 @@ public interface WechatInterfService {
public String transaction(String url, String object, String object2); public String transaction(String url, String object, String object2);
/**
* 微信接口交互 -- 获取access_token
* 获取公众号的access_token
* 注意这和网页授权部分的access_token不是一回事!该接口有调用次数限制,且独立(不依赖于authorize接口)
* @param accessTokenRequest
* @return
*/
AccessTokenResponse getAccessToken(AccessTokenRequest accessTokenRequest);
/**
* 微信交互接口
* @param url 交互地址
* @param requestInfo 请求报文
* @return
*/
String weChatTransaction(String url, String requestInfo);
/**
* 公众号支付时网页授权 -- 通过code获取accessToken
* 这里返回值包含openid
* @param accessTokenByCodeRequest
* @return
*/
AccessTokenByCodeResponse getAccessTokenByCode(AccessTokenByCodeRequest accessTokenByCodeRequest);
} }
...@@ -2,6 +2,8 @@ package com.yd.rmi.tencent.wechatinterf.service.impl; ...@@ -2,6 +2,8 @@ package com.yd.rmi.tencent.wechatinterf.service.impl;
import com.yd.rmi.cache.SystemConfigService; import com.yd.rmi.cache.SystemConfigService;
import com.yd.dal.service.transaction.TranLogDALService; import com.yd.dal.service.transaction.TranLogDALService;
import com.yd.rmi.tencent.wechat.vo.accesstoken.AccessTokenByCodeRequest;
import com.yd.rmi.tencent.wechat.vo.accesstoken.AccessTokenByCodeResponse;
import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenRequest; import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenResponse; import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenResponse;
import com.yd.rmi.tencent.wechatinterf.pojo.authorize.AuthorizeRequest; import com.yd.rmi.tencent.wechatinterf.pojo.authorize.AuthorizeRequest;
...@@ -26,6 +28,7 @@ import javax.net.ssl.SSLSession; ...@@ -26,6 +28,7 @@ import javax.net.ssl.SSLSession;
import java.io.*; import java.io.*;
import java.net.URL; import java.net.URL;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
import java.util.Map.Entry; import java.util.Map.Entry;
...@@ -325,4 +328,142 @@ public class WechatInterfServiceImpl implements WechatInterfService { ...@@ -325,4 +328,142 @@ public class WechatInterfServiceImpl implements WechatInterfService {
} }
return sbf.toString(); return sbf.toString();
} }
/**
* 获取access_token:access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token
*/
@Override
public AccessTokenResponse getAccessToken(AccessTokenRequest accessTokenRequest) {
String appId = accessTokenRequest.getAppid();
String grantType = accessTokenRequest.getGrant_type();
String secret = accessTokenRequest.getSecret();
String url = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TOKEN_URL")+"?"
+"grant_type="+ grantType
+"&appid="+appId
+"&secret="+ secret;
System.out.println("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》【微信分享 --4--token-url】"+url+"】");
tranLogDALService.logDB("wechat", "accessToken", "in", accessTokenRequest.getAppid(), url, null, null);
String responseStr = weChatTransaction(url,null);
tranLogDALService.logDB("wechat", "accessToken", "out", accessTokenRequest.getAppid(), responseStr, null, null);
return (AccessTokenResponse)JsonUtil.jsonToObj(responseStr, AccessTokenResponse.class);
}
/**
* 通过code换取accessToken,公众号支付时网页授权,这里返回值有openid
*/
@Override
public AccessTokenByCodeResponse getAccessTokenByCode(AccessTokenByCodeRequest accessTokenByCodeRequest) {
String appId = accessTokenByCodeRequest.getAppid();
String secret = accessTokenByCodeRequest.getSecret();
String grantType = accessTokenByCodeRequest.getGrant_type();
String url = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_ACCESS_TOKEN_URL")+"?"
+"appid="+ appId
+"&secret="+ secret
+"&code="+ accessTokenByCodeRequest.getCode()
+"&grant_type="+ grantType;
tranLogDALService.logDB("wechat", "accessTokenByCode", "in", accessTokenByCodeRequest.getCode(), url, null, null);
String responseStr = weChatTransaction(url,null);
tranLogDALService.logDB("wechat", "accessTokenByCode", "out", accessTokenByCodeRequest.getCode(), responseStr, null, null);
return (AccessTokenByCodeResponse)JsonUtil.jsonToObj(responseStr, AccessTokenByCodeResponse.class);
}
/**
* 微信接口交互
*/
@Override
public String weChatTransaction(String httpURL, String requestXML){
String responseXML;
OutputStream output = null;
InputStream input = null;
try {
URL url = new URL(httpURL);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setReadTimeout(30000);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setAllowUserInteraction(true);
connection.setRequestProperty("Accept-Charset", "utf-8");
connection.setRequestProperty("contentType", "utf-8");
connection.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
connection.connect();
if (requestXML != null && !"".equals(requestXML)) {
output = connection.getOutputStream();
output.write(requestXML.getBytes(StandardCharsets.UTF_8));
}
input = connection.getInputStream();
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
if (output != null) {
output.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
StringBuilder stringBuffer = new StringBuilder();
if (input != null) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));
String string ;
while ((string = reader.readLine()) != null) {
stringBuffer.append(string);
}
} catch (Exception e) {
e.printStackTrace();
}
}
responseXML = stringBuffer.toString();
return responseXML;
/*
InputStream in = null;
String responseXML = null;
try {
URL url = new URL(httpURL);
StringBuilder sbf = new StringBuilder();
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setReadTimeout(30000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setAllowUserInteraction(true);
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setHostnameVerifier((arg0, arg1) -> true);
conn.connect();
in = conn.getInputStream();
if(in != null){
BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
String str;
while((str = reader.readLine()) != null){
sbf.append(str);
}
responseXML = sbf.toString();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(in != null){in.close();}
} catch (Exception e3) {
e3.printStackTrace();
}
}
return responseXML;
*/
}
} }
\ No newline at end of file
package com.yd.util; package com.yd.util;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
...@@ -8,6 +16,8 @@ import java.util.HashMap; ...@@ -8,6 +16,8 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class HttpUtil { public class HttpUtil {
public static String defaultEncoding= "utf-8";
/** /**
* 通过url取得文件返回InputStream类型数据 * 通过url取得文件返回InputStream类型数据
* *
...@@ -35,4 +45,30 @@ public class HttpUtil { ...@@ -35,4 +45,30 @@ public class HttpUtil {
return resp; return resp;
} }
} }
/**
* http交互方法---post请求 json类型
* @param url 地址
* @param json json字符串
* @return
*/
public static String postForJson(String url, String json) {
String responseJson = null;
HttpPost httpPost = new HttpPost(url);
CloseableHttpClient client = HttpClients.createDefault();
StringEntity entity = new StringEntity(json,defaultEncoding);
entity.setContentEncoding(defaultEncoding);
entity.setContentType("application/json");
httpPost.setEntity(entity);
try {
HttpResponse response = client.execute(httpPost);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity httpEntity = response.getEntity();
responseJson = EntityUtils.toString(httpEntity,defaultEncoding);
}
} catch (Exception e) {
e.printStackTrace();
}
return responseJson;
}
} }
...@@ -3,7 +3,11 @@ ...@@ -3,7 +3,11 @@
600000=参数检验成功! 600000=参数检验成功!
610001=入参中[{0}]不能为空! 610001=入参中[{0}]不能为空!
610002=入参中[{0}]不能同时为空! 610002=入参中[{0}]不能同时为空!
##用户信息校验
630001=用户的手机号码[{0}]格式不正确!
630002=手机号[{0}]已被注册,请勿重复注册!
######################用户提示信息########################
800000=执行成功! 800000=执行成功!
##系统提示信息 ##系统提示信息
810001=token无效或者错误! 810001=token无效或者错误!
...@@ -17,5 +21,7 @@ ...@@ -17,5 +21,7 @@
830007=上传头像失败,请重新上传! 830007=上传头像失败,请重新上传!
830008=上传生活照失败,请重新上传! 830008=上传生活照失败,请重新上传!
830009=上传微信二维码失败,请重新上传! 830009=上传微信二维码失败,请重新上传!
830010=该用户已经注册为银盾经纪人
830011=该增员已存在!
900003=保险公司响应报文为空! 900003=保险公司响应报文为空!
\ No newline at end of file
...@@ -726,4 +726,10 @@ ...@@ -726,4 +726,10 @@
age = #{age,jdbcType=BIGINT} age = #{age,jdbcType=BIGINT}
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
</update> </update>
<select id="findByLogin" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from ag_acl_customer
where login = #{mobileNo,jdbcType=VARCHAR}
</select>
</mapper> </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.yd.dal.mapper.customer.AclPractitionerPotentialAssignedTrackMapper">
<resultMap id="BaseResultMap" type="com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="practitioner_potential_id" jdbcType="BIGINT" property="practitionerPotentialId" />
<result column="practitioner_assigned_id" jdbcType="BIGINT" property="practitionerAssignedId" />
<result column="track_status_id" jdbcType="BIGINT" property="trackStatusId" />
<result column="notice" jdbcType="VARCHAR" property="notice" />
<result column="is_active" jdbcType="INTEGER" property="isActive" />
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="created_by" jdbcType="BIGINT" property="createdBy" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="updated_by" jdbcType="BIGINT" property="updatedBy" />
<result column="updator_type" jdbcType="INTEGER" property="updatorType" />
<result column="creator_type" jdbcType="INTEGER" property="creatorType" />
<result column="is_lasted" jdbcType="INTEGER" property="isLasted" />
</resultMap>
<sql id="Base_Column_List">
id, practitioner_potential_id, practitioner_assigned_id, track_status_id, notice,
is_active, created_at, created_by, updated_at, updated_by, creator_type, updator_type,is_lasted
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from ag_acl_practitioner_potential_assigned_track
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from ag_acl_practitioner_potential_assigned_track
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack" useGeneratedKeys="true">
insert into ag_acl_practitioner_potential_assigned_track (practitioner_potential_id, practitioner_assigned_id,
track_status_id, notice, is_active,
created_at, created_by, updated_at,
updated_by, updator_type,creator_type,is_lasted )
values (#{practitionerPotentialId,jdbcType=BIGINT}, #{practitionerAssignedId,jdbcType=BIGINT},
#{trackStatusId,jdbcType=BIGINT}, #{notice,jdbcType=VARCHAR}, #{isActive,jdbcType=INTEGER},
#{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=BIGINT}, #{updatedAt,jdbcType=TIMESTAMP},
#{updatedBy,jdbcType=BIGINT},#{updatorType,jdbcType=INTEGER}, #{creatorType,jdbcType=INTEGER},#{isLasted,jdbcType=INTEGER})
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack" useGeneratedKeys="true">
insert into ag_acl_practitioner_potential_assigned_track
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="practitionerPotentialId != null">
practitioner_potential_id,
</if>
<if test="practitionerAssignedId != null">
practitioner_assigned_id,
</if>
<if test="trackStatusId != null">
track_status_id,
</if>
<if test="notice != null">
notice,
</if>
<if test="isActive != null">
is_active,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="createdBy != null">
created_by,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="updatedBy != null">
updated_by,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="practitionerPotentialId != null">
#{practitionerPotentialId,jdbcType=BIGINT},
</if>
<if test="practitionerAssignedId != null">
#{practitionerAssignedId,jdbcType=BIGINT},
</if>
<if test="trackStatusId != null">
#{trackStatusId,jdbcType=BIGINT},
</if>
<if test="notice != null">
#{notice,jdbcType=VARCHAR},
</if>
<if test="isActive != null">
#{isActive,jdbcType=INTEGER},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="createdBy != null">
#{createdBy,jdbcType=BIGINT},
</if>
<if test="updatedAt != null">
#{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedBy != null">
#{updatedBy,jdbcType=BIGINT},
</if>
</trim>
</insert>
<insert id="insertList" parameterType="java.util.List" useGeneratedKeys="true" >
insert into ag_acl_practitioner_potential_assigned_track(practitioner_potential_id, practitioner_assigned_id,
track_status_id, notice, is_active,
created_at, created_by, updated_at,
updated_by, updator_type,creator_type,is_lasted )
values
<foreach collection="potentialAssignedTrackList" item="item" index="index" separator=",">
(
#{item.practitionerPotentialId},
#{item.practitionerAssignedId},
#{item.trackStatusId},
#{item.notice},
#{item.isActive},
#{item.createdAt},
#{item.createdBy},
#{item.updatedAt},
#{item.updatedBy},
#{item.updatorType},
#{item.creatorType},
#{item.isLasted}
)
</foreach>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack">
update ag_acl_practitioner_potential_assigned_track
<set>
<if test="practitionerPotentialId != null">
practitioner_potential_id = #{practitionerPotentialId,jdbcType=BIGINT},
</if>
<if test="practitionerAssignedId != null">
practitioner_assigned_id = #{practitionerAssignedId,jdbcType=BIGINT},
</if>
<if test="trackStatusId != null">
track_status_id = #{trackStatusId,jdbcType=BIGINT},
</if>
<if test="notice != null">
notice = #{notice,jdbcType=VARCHAR},
</if>
<if test="isActive != null">
is_active = #{isActive,jdbcType=INTEGER},
</if>
<if test="createdAt != null">
created_at = #{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="createdBy != null">
created_by = #{createdBy,jdbcType=BIGINT},
</if>
<if test="updatedAt != null">
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedBy != null">
updated_by = #{updatedBy,jdbcType=BIGINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack">
update ag_acl_practitioner_potential_assigned_track
set practitioner_potential_id = #{practitionerPotentialId,jdbcType=BIGINT},
practitioner_assigned_id = #{practitionerAssignedId,jdbcType=BIGINT},
track_status_id = #{trackStatusId,jdbcType=BIGINT},
notice = #{notice,jdbcType=VARCHAR},
is_active = #{isActive,jdbcType=INTEGER},
created_at = #{createdAt,jdbcType=TIMESTAMP},
created_by = #{createdBy,jdbcType=BIGINT},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
updated_by = #{updatedBy,jdbcType=BIGINT}
where id = #{id,jdbcType=BIGINT}
</update>
</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.yd.dal.mapper.practitioner.PractitionerSubordinateMapper">
<resultMap id="practitioner_subordinate_map" type="com.yd.dal.entity.practitioner.PractitionerSubordinateInfo">
<result column="subordinateId" property="subordinateId"/>
<result column="subordinateName" property="subordinateName"/>
<result column="subordinateCode" property="subordinateCode"/>
<result column="ownerId" property="ownerId"/>
<result column="subordinateLeader" property="subordinateLeader"/>
<result column="contactName" property="contactName"/>
<result column="contactNo" property="contactNo"/>
<result column="remark" property="remark"/>
</resultMap>
<select id="findSubordinateInfo" resultMap="practitioner_subordinate_map">
SELECT
s.id as subordinateId,
s.name as subordinateName,
s.subordinate_system_code as subordinateCode,
s.owner_practitioner_id as ownerId,
p.name as subordinateLeader,
s.contact_name as contactName,
s.contact_no as contactNo,
s.remark as remark
FROM ag_acl_practitioner_subordinate_system s left join ag_acl_practitioner p on s.owner_practitioner_id = p.id
where s.is_active = 1
and s.id = #{subordinateId}
</select>
</mapper>
...@@ -96,6 +96,26 @@ ...@@ -96,6 +96,26 @@
order by ${orderBy} order by ${orderBy}
</if> </if>
</select> </select>
<select id="findByAppIdAndGrantType" resultType="com.yd.dal.entity.tencent.TenInterfRecord">
select
<include refid="Base_Column_List"></include>
from ag_ten_interf_record t
where t.interf_type = #{type}
and t.appid = #{appId}
and t.grant_type = #{grantType}
and t.expires_in is not null
and t.created_at >(NOW() - INTERVAL 1 DAY) order by created_at desc
</select>
<select id="findByAccessTokenAndIType" resultType="com.yd.dal.entity.tencent.TenInterfRecord">
select
<include refid="Base_Column_List"></include>
from ag_ten_interf_record t
where t.interf_type = #{type}
and t.access_token = #{accessToken}
and t.i_type = #{pType}
and t.expires_in is not null
and t.created_at >(NOW() - INTERVAL 1 DAY) order by created_at desc
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from ag_ten_interf_record delete from ag_ten_interf_record
where id = #{id,jdbcType=BIGINT} where id = #{id,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