Commit a77c00de authored by libin's avatar libin

Merge branch 'master_member_level_feature' into base-modify

parents 63f60ce5 d4252067
package com.github.wxiaoqi.security.admin.entity; package com.github.wxiaoqi.security.admin.entity;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.math.BigDecimal;
/** /**
* 会员等级表 * 会员等级表
...@@ -75,6 +78,9 @@ public class BaseUserMemberLevel implements Serializable { ...@@ -75,6 +78,9 @@ public class BaseUserMemberLevel implements Serializable {
@Column(name = "number") @Column(name = "number")
@ApiModelProperty(value = "赠送免费天数") @ApiModelProperty(value = "赠送免费天数")
private Integer number; private Integer number;
@Column(name = "big_icon")
@ApiModelProperty(value = "大图标")
private String bigIcon;
} }
...@@ -4,10 +4,8 @@ import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDTO; ...@@ -4,10 +4,8 @@ import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDTO;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDataFindDTO; import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDataFindDTO;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO; import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.dto.UserMemberSaveDTO; import com.github.wxiaoqi.security.admin.dto.UserMemberSaveDTO;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.entity.UserMemberLevel;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberExportMapper; import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberExportMapper;
import com.github.wxiaoqi.security.admin.vo.BaseUserMemberExportVo; import com.github.wxiaoqi.security.admin.vo.BaseUserMemberExportVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
......
...@@ -2,9 +2,9 @@ package com.github.wxiaoqi.security.admin.biz; ...@@ -2,9 +2,9 @@ package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache; import com.ace.cache.annotation.Cache;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.entity.UserMemberLevel;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberLevelMapper; import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberLevelMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
...@@ -51,4 +51,11 @@ public class UserMemberLevelBiz extends BaseBiz<BaseUserMemberLevelMapper,BaseUs ...@@ -51,4 +51,11 @@ public class UserMemberLevelBiz extends BaseBiz<BaseUserMemberLevelMapper,BaseUs
} }
return levelAndDiscountMap; return levelAndDiscountMap;
} }
public void updateMemberBaseInfo(BaseUserMemberLevel baseUserMemberLevel) {
int affectRows = mapper.updateByPrimaryKeySelective(baseUserMemberLevel);
if (affectRows==0){
throw new BaseException("更新会员等级失败");
}
}
} }
...@@ -74,4 +74,8 @@ public class MemberLevelController extends BaseController<UserMemberLevelBiz, Ba ...@@ -74,4 +74,8 @@ public class MemberLevelController extends BaseController<UserMemberLevelBiz, Ba
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
@PutMapping("/update")
public void updateMemberBaseInfo(@RequestBody BaseUserMemberLevel baseUserMemberLevel){
getBaseBiz().updateMemberBaseInfo(baseUserMemberLevel);
}
} }
...@@ -443,12 +443,14 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> { ...@@ -443,12 +443,14 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
csv.initParamJson(); csv.initParamJson();
//设置明细 //设置明细
orderRentVehicleBiz.updateSelectiveById(new OrderRentVehicleDetail(){{ orderRentVehicleBiz.updateSelectiveByIdRe(new OrderRentVehicleDetail(){{
setId(orderMQDTO.getDetailId()); setId(orderMQDTO.getDetailId());
handelCostDetailExtend(csv); handelCostDetailExtend(csv);
setBackFreeDays(inProgressVO.getBackFreeDays()); setBackFreeDays(inProgressVO.getBackFreeDays());
}}); }});
orderMQDTO.setOrderRentVehicleDetail(orderRentVehicleBiz.selectById(orderMQDTO.getDetailId()));
//捕捉异常 //捕捉异常
try { try {
orderMsgBiz.handelMsgDeposit(orderMQDTO.getOrderRentVehicleDetail(), orderMQDTO, userFeign.userDetailById(orderMQDTO.getUserId()).getData()); orderMsgBiz.handelMsgDeposit(orderMQDTO.getOrderRentVehicleDetail(), orderMQDTO, userFeign.userDetailById(orderMQDTO.getUserId()).getData());
......
...@@ -13,6 +13,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; ...@@ -13,6 +13,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.user.UserInfoBiz; import com.xxfc.platform.activity.user.UserInfoBiz;
import com.xxfc.platform.order.biz.inner.OrderCalculateBiz; import com.xxfc.platform.order.biz.inner.OrderCalculateBiz;
import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
import com.xxfc.platform.order.contant.enumerate.CrosstownTypeEnum; import com.xxfc.platform.order.contant.enumerate.CrosstownTypeEnum;
import com.xxfc.platform.order.contant.enumerate.DepositRefundStatus; import com.xxfc.platform.order.contant.enumerate.DepositRefundStatus;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum; import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
...@@ -73,6 +74,8 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp ...@@ -73,6 +74,8 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
BaseOrderBiz baseOrderBiz; BaseOrderBiz baseOrderBiz;
@Autowired @Autowired
OrderItemBiz orderItemBiz; OrderItemBiz orderItemBiz;
@Autowired
OrderMsgBiz orderMsgBiz;
public OrderVehicleCrosstown get(Integer id) { public OrderVehicleCrosstown get(Integer id) {
return selectById(id); return selectById(id);
...@@ -287,12 +290,13 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp ...@@ -287,12 +290,13 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
} }
BeanUtil.copyProperties(orderVehicleCrosstownDto, oldValue.get(0), CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true)); BeanUtil.copyProperties(orderVehicleCrosstownDto, oldValue.get(0), CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
getOrderLicense(orderVehicleCrosstownDto); getOrderLicense(orderVehicleCrosstownDto);
handleOrderStatus(baseOrder, orderRentVehicleDetail, oldValue.get(0)); handleOrderStatus(baseOrder, orderRentVehicleDetail, oldValue.get(0), appUserDTO);
updateSelectiveByIdRe(oldValue.get(0)); updateSelectiveByIdRe(oldValue.get(0));
RestResponse<Vehicle> response = vehicleFeign.findById(orderRentVehicleDetail.getVehicleId()); RestResponse<Vehicle> response = vehicleFeign.findById(orderRentVehicleDetail.getVehicleId());
if (response.getData() != null) { if (response.getData() != null) {
orderVehicleCrosstownDto.setVehicleNumberPlat(response.getData().getNumberPlate()); orderVehicleCrosstownDto.setVehicleNumberPlat(response.getData().getNumberPlate());
} }
return ObjectRestResponse.succ(oldValue.get(0)); return ObjectRestResponse.succ(oldValue.get(0));
} else if (oldValue.size() <= 0) { } else if (oldValue.size() <= 0) {
orderVehicleCrosstownDto.setDeductionCost(amount); orderVehicleCrosstownDto.setDeductionCost(amount);
...@@ -304,7 +308,7 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp ...@@ -304,7 +308,7 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
getOrderLicense(orderVehicleCrosstownDto); getOrderLicense(orderVehicleCrosstownDto);
orderVehicleCrosstownBiz.insertSelective(orderVehicleCrosstownDto); orderVehicleCrosstownBiz.insertSelective(orderVehicleCrosstownDto);
OrderVehicleCrosstown orderVehicleCrosstown = orderVehicleCrosstownBiz.selectOne(orderVehicleCrosstownDto); OrderVehicleCrosstown orderVehicleCrosstown = orderVehicleCrosstownBiz.selectOne(orderVehicleCrosstownDto);
handleOrderStatus(baseOrder, orderRentVehicleDetail, orderVehicleCrosstown); handleOrderStatus(baseOrder, orderRentVehicleDetail, orderVehicleCrosstown, appUserDTO);
orderVehicleCrosstownBiz.updateSelectiveByIdRe(orderVehicleCrosstown); orderVehicleCrosstownBiz.updateSelectiveByIdRe(orderVehicleCrosstown);
RestResponse<Vehicle> response = vehicleFeign.findById(orderRentVehicleDetail.getVehicleId()); RestResponse<Vehicle> response = vehicleFeign.findById(orderRentVehicleDetail.getVehicleId());
if (response.getData() != null) { if (response.getData() != null) {
...@@ -312,15 +316,16 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp ...@@ -312,15 +316,16 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
} }
return ObjectRestResponse.succ(orderVehicleCrosstownDto); return ObjectRestResponse.succ(orderVehicleCrosstownDto);
} }
return ObjectRestResponse.createDefaultFail(); return ObjectRestResponse.createDefaultFail();
} }
private void handleOrderStatus(BaseOrder baseOrder, OrderRentVehicleDetail orderRentVehicleDetail, OrderVehicleCrosstown orderVehicleCrosstown, AppUserDTO appUserDTO) {
private void handleOrderStatus(BaseOrder baseOrder, OrderRentVehicleDetail orderRentVehicleDetail, OrderVehicleCrosstown orderVehicleCrosstown) {
//交车完成 设置订单状态为出行中 //交车完成 设置订单状态为出行中
BigDecimal totalAmount = orderRentVehicleDetail.getDeposit(); BigDecimal totalAmount = orderRentVehicleDetail.getDeposit();
if (baseOrder.getStatus() == OrderStatusEnum.ORDER_TOSTART.getCode()) {//交车 if (baseOrder.getStatus() == OrderStatusEnum.ORDER_TOSTART.getCode()) {//交车
baseOrder.setStatus(OrderStatusEnum.ORDER_WAIT.getCode()); baseOrder.setStatus(OrderStatusEnum.ORDER_WAIT.getCode());
baseOrder = baseOrderBiz.updateSelectiveByIdReT(baseOrder); baseOrder = baseOrderBiz.updateSelectiveByIdReT(baseOrder);
orderMsgBiz.handelMsgWait(orderRentVehicleDetail, null, null, baseOrder, appUserDTO);
} else if (baseOrder.getStatus() == OrderStatusEnum.ORDER_WAIT.getCode()) { //还车 } else if (baseOrder.getStatus() == OrderStatusEnum.ORDER_WAIT.getCode()) { //还车
if (orderVehicleCrosstown.getType() == CrosstownTypeEnum.ARRIVE.getCode()) {//不定损直接还车 if (orderVehicleCrosstown.getType() == CrosstownTypeEnum.ARRIVE.getCode()) {//不定损直接还车
//添加非定损记录 //添加非定损记录
......
...@@ -235,8 +235,8 @@ public class OrderMsgBiz { ...@@ -235,8 +235,8 @@ public class OrderMsgBiz {
sms2BgUser(startCompanyDetail.getVehiceServicePhone(), startCompanyDetail, endCompanyDetail, orvd, otd, baseOrder, appUserDTO, SmsTemplateDTO.PAY_D, smsParams); sms2BgUser(startCompanyDetail.getVehiceServicePhone(), startCompanyDetail, endCompanyDetail, orvd, otd, baseOrder, appUserDTO, SmsTemplateDTO.PAY_D, smsParams);
//后台发送消息(收车人) //后台发送消息(收车人)
smsParams.clear(); // smsParams.clear();
sms2BgUser(endCompanyDetail.getVehiceServicePhone(), startCompanyDetail, endCompanyDetail, orvd, otd, baseOrder, appUserDTO, SmsTemplateDTO.PAY_E, smsParams); // sms2BgUser(endCompanyDetail.getVehiceServicePhone(), startCompanyDetail, endCompanyDetail, orvd, otd, baseOrder, appUserDTO, SmsTemplateDTO.PAY_E, smsParams);
}else { }else {
log.error("通知短信异常,开始公司id 不存在或者为0 订单号:{}", baseOrder.getId()); log.error("通知短信异常,开始公司id 不存在或者为0 订单号:{}", baseOrder.getId());
...@@ -338,7 +338,7 @@ public class OrderMsgBiz { ...@@ -338,7 +338,7 @@ public class OrderMsgBiz {
} }
/** /**
* 取消订单处理提醒短信的发送 * 订单出发提前提醒短信的发送
* @param orvd * @param orvd
* @param baseOrder * @param baseOrder
* @param appUserDTO * @param appUserDTO
...@@ -371,6 +371,39 @@ public class OrderMsgBiz { ...@@ -371,6 +371,39 @@ public class OrderMsgBiz {
} }
} }
/**
* 订单出发后提醒短信的发送
* @param orvd
* @param baseOrder
* @param appUserDTO
*/
public void handelMsgWait(OrderRentVehicleDetail orvd, OrderTourDetail otd, OrderMemberDetail omd, BaseOrder baseOrder, AppUserDTO appUserDTO) {
try {
OrderTypeEnum orderTypeEnum = OrderTypeEnum.codeAndDesc.get(baseOrder.getType());
List<String> smsParams = new ArrayList<String>();
switch (orderTypeEnum) {
case RENT_VEHICLE:
CompanyDetail startCompanyDetail = vehicleFeign.getCompanyDetail(orvd.getStartCompanyId()).getData();
CompanyDetail endCompanyDetail = vehicleFeign.getCompanyDetail(orvd.getEndCompanyId()).getData();
if(null != orvd.getEndCompanyId() && !SYS_FALSE.equals(orvd.getEndCompanyId())) {
//后台发送消息(收车人)
sms2BgUser(endCompanyDetail.getVehiceServicePhone(), startCompanyDetail, endCompanyDetail, orvd, otd, baseOrder, appUserDTO, SmsTemplateDTO.PAY_E, smsParams);
}else {
log.error("通知后台客户短信异常,结束公司id 不存在或者为0 订单号:{}", baseOrder.getId());
}
break;
case TOUR:
break;
case MEMBER:
break;
default:
break;
}
}catch (Exception e) {
log.error(e.getMessage(), e);
}
}
/** /**
* 订单完成后处理押金提醒短信的发送 * 订单完成后处理押金提醒短信的发送
* @param baseOrder * @param baseOrder
...@@ -616,8 +649,8 @@ public class OrderMsgBiz { ...@@ -616,8 +649,8 @@ public class OrderMsgBiz {
case SmsTemplateDTO.PAY_E : case SmsTemplateDTO.PAY_E :
smsParams.add(appUserDTO.getRealname()); smsParams.add(appUserDTO.getRealname());
smsParams.add(appUserDTO.getUsername()); smsParams.add(appUserDTO.getUsername());
smsParams.add(DateUtil.formatDateTime(DateUtil.date(orvd.getStartTime()))); smsParams.add(DateUtil.formatDateTime(DateUtil.date(orvd.getEndTime())));
smsParams.add(sCompany.getName()); smsParams.add(eCompany.getName());
smsParams.add(baseOrder.getName()); smsParams.add(baseOrder.getName());
break; break;
case SmsTemplateDTO.CANCEL_E : case SmsTemplateDTO.CANCEL_E :
......
...@@ -33,7 +33,7 @@ import static com.github.wxiaoqi.security.common.constant.CommonConstants.*; ...@@ -33,7 +33,7 @@ import static com.github.wxiaoqi.security.common.constant.CommonConstants.*;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER; import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
/** /**
* 跨平台Http任务 * 订单出车短信提前提醒
* *
* @author xuxueli 2018-09-16 03:48:34 * @author xuxueli 2018-09-16 03:48:34
*/ */
......
...@@ -127,6 +127,9 @@ ...@@ -127,6 +127,9 @@
</foreach> </foreach>
</if> </if>
<if test="userId != null">
and b.user_id = #{userId}
</if>
<if test="status != null"> <if test="status != null">
and b.status = #{status} and b.status = #{status}
</if> </if>
......
...@@ -113,6 +113,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv ...@@ -113,6 +113,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv
public void publishSummitActivityById(Integer id, Integer state) { public void publishSummitActivityById(Integer id, Integer state) {
SummitActivity summitActivity = new SummitActivity(); SummitActivity summitActivity = new SummitActivity();
summitActivity.setIsPublish(state); summitActivity.setIsPublish(state);
summitActivity.setUpdTime(Instant.now().toEpochMilli());
summitActivity.setId(id); summitActivity.setId(id);
mapper.updateByPrimaryKeySelective(summitActivity); mapper.updateByPrimaryKeySelective(summitActivity);
} }
...@@ -121,6 +122,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv ...@@ -121,6 +122,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv
SummitActivity summitActivity = new SummitActivity(); SummitActivity summitActivity = new SummitActivity();
summitActivity.setIsShow(state); summitActivity.setIsShow(state);
summitActivity.setId(id); summitActivity.setId(id);
summitActivity.setUpdTime(Instant.now().toEpochMilli());
mapper.updateByPrimaryKeySelective(summitActivity); mapper.updateByPrimaryKeySelective(summitActivity);
} }
...@@ -128,6 +130,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv ...@@ -128,6 +130,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv
SummitActivity summitActivity = new SummitActivity(); SummitActivity summitActivity = new SummitActivity();
summitActivity.setIsHomePage(state); summitActivity.setIsHomePage(state);
summitActivity.setId(id); summitActivity.setId(id);
summitActivity.setUpdTime(Instant.now().toEpochMilli());
mapper.updateByPrimaryKeySelective(summitActivity); mapper.updateByPrimaryKeySelective(summitActivity);
} }
...@@ -135,6 +138,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv ...@@ -135,6 +138,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv
SummitActivity summitActivity = new SummitActivity(); SummitActivity summitActivity = new SummitActivity();
summitActivity.setIsOpenReg(state); summitActivity.setIsOpenReg(state);
summitActivity.setId(id); summitActivity.setId(id);
summitActivity.setUpdTime(Instant.now().toEpochMilli());
mapper.updateByPrimaryKeySelective(summitActivity); mapper.updateByPrimaryKeySelective(summitActivity);
} }
...@@ -142,6 +146,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv ...@@ -142,6 +146,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv
SummitActivity summitActivity = new SummitActivity(); SummitActivity summitActivity = new SummitActivity();
summitActivity.setIsDel(1); summitActivity.setIsDel(1);
summitActivity.setId(id); summitActivity.setId(id);
summitActivity.setUpdTime(Instant.now().toEpochMilli());
mapper.updateByPrimaryKeySelective(summitActivity); mapper.updateByPrimaryKeySelective(summitActivity);
} }
...@@ -162,6 +167,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv ...@@ -162,6 +167,7 @@ public class SummitActivityBiz extends BaseBiz<SummitActivityMapper, SummitActiv
SummitActivity summitActivity = new SummitActivity(); SummitActivity summitActivity = new SummitActivity();
summitActivity.setId(id); summitActivity.setId(id);
summitActivity.setRank(rank); summitActivity.setRank(rank);
summitActivity.setUpdTime(Instant.now().toEpochMilli());
mapper.updateByPrimaryKeySelective(summitActivity); mapper.updateByPrimaryKeySelective(summitActivity);
} }
......
...@@ -83,6 +83,12 @@ ...@@ -83,6 +83,12 @@
<artifactId>jiguang-common</artifactId> <artifactId>jiguang-common</artifactId>
<version>1.1.1</version> <version>1.1.1</version>
</dependency> </dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
......
package com.xxfc.platform.universal.api;
import com.xxfc.platform.universal.api.pojo.Authentication;
import com.xxfc.platform.universal.entity.IdInformation;
/**
* 调用外部接口实现类。调用不同的外部接口,需要编写不同了类实现该类
*/
public interface BaseAuthentication {
Authentication getAuthentication(IdInformation idInformation);
}
package com.xxfc.platform.universal.api.impl;
import com.xxfc.platform.universal.api.BaseAuthentication;
import com.xxfc.platform.universal.api.pojo.Authentication;
import com.xxfc.platform.universal.entity.IdInformation;
public class FQAuthentication implements BaseAuthentication {
@Override
public Authentication getAuthentication(IdInformation idInformation) {
return null;
}
}
package com.xxfc.platform.universal.api.pojo;
public class Authentication {
}
package com.xxfc.platform.universal.utils;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
public class HttpUtils {
/**
* get
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @return
* @throws Exception
*/
public static HttpResponse doGet(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpGet request = new HttpGet(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
return httpClient.execute(request);
}
/**
* post form
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param bodys
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
Map<String, String> bodys)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (bodys != null) {
List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
for (String key : bodys.keySet()) {
nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
}
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
request.setEntity(formEntity);
}
return httpClient.execute(request);
}
/**
* Post String
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
String body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (StringUtils.isNotBlank(body)) {
request.setEntity(new StringEntity(body, "utf-8"));
}
return httpClient.execute(request);
}
/**
* Post stream
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
byte[] body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (body != null) {
request.setEntity(new ByteArrayEntity(body));
}
return httpClient.execute(request);
}
/**
* Put String
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPut(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
String body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPut request = new HttpPut(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (StringUtils.isNotBlank(body)) {
request.setEntity(new StringEntity(body, "utf-8"));
}
return httpClient.execute(request);
}
/**
* Put stream
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPut(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
byte[] body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPut request = new HttpPut(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (body != null) {
request.setEntity(new ByteArrayEntity(body));
}
return httpClient.execute(request);
}
/**
* Delete
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @return
* @throws Exception
*/
public static HttpResponse doDelete(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
return httpClient.execute(request);
}
private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
StringBuilder sbUrl = new StringBuilder();
sbUrl.append(host);
if (!StringUtils.isBlank(path)) {
sbUrl.append(path);
}
if (null != querys) {
StringBuilder sbQuery = new StringBuilder();
for (Map.Entry<String, String> query : querys.entrySet()) {
if (0 < sbQuery.length()) {
sbQuery.append("&");
}
if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
sbQuery.append(query.getValue());
}
if (!StringUtils.isBlank(query.getKey())) {
sbQuery.append(query.getKey());
if (!StringUtils.isBlank(query.getValue())) {
sbQuery.append("=");
sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
}
}
}
if (0 < sbQuery.length()) {
sbUrl.append("?").append(sbQuery);
}
}
return sbUrl.toString();
}
private static HttpClient wrapClient(String host) {
HttpClient httpClient = new DefaultHttpClient();
if (host.startsWith("https://")) {
sslClient(httpClient);
}
return httpClient;
}
private static void sslClient(HttpClient httpClient) {
try {
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] xcs, String str) {
}
public void checkServerTrusted(X509Certificate[] xcs, String str) {
}
};
ctx.init(null, new TrustManager[] { tm }, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx);
ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager ccm = httpClient.getConnectionManager();
SchemeRegistry registry = ccm.getSchemeRegistry();
registry.register(new Scheme("https", 443, ssf));
} catch (KeyManagementException ex) {
throw new RuntimeException(ex);
} catch (NoSuchAlgorithmException ex) {
throw new RuntimeException(ex);
}
}
}
\ No newline at end of file
...@@ -302,7 +302,23 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> { ...@@ -302,7 +302,23 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> {
"utf-8", SystemConfig.ALIPAY_PUBLIC_KEY, AlipayConstants.SIGN_TYPE_RSA2); "utf-8", SystemConfig.ALIPAY_PUBLIC_KEY, AlipayConstants.SIGN_TYPE_RSA2);
return alipayClient; return alipayClient;
} }
//balance 余额
//moneyFund 余额宝
//coupon 红包
//pcredit 花呗
//pcreditpayInstallment 花呗分期
//creditCard 信用卡
//creditCardExpress 信用卡快捷
//creditCardCartoon 信用卡卡通
//credit_group 信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期)
//debitCardExpress 借记卡快捷
//mcard 商户预存卡
//pcard 个人预存卡
//promotion 优惠(包含实时优惠+商户优惠)
//voucher 营销券
//point 积分
//mdiscount 商户优惠
//bankPay
//支付宝APP支付方法 //支付宝APP支付方法
private String appOrderPay(AlipayClient alipayClient, OrderPayVo orderPayVo, String notifyUrl) { private String appOrderPay(AlipayClient alipayClient, OrderPayVo orderPayVo, String notifyUrl) {
BigDecimal realAmount = new BigDecimal(orderPayVo.getAmount().toString()).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_UP); BigDecimal realAmount = new BigDecimal(orderPayVo.getAmount().toString()).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_UP);
...@@ -311,6 +327,7 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> { ...@@ -311,6 +327,7 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> {
request.setBizContent("{" + request.setBizContent("{" +
"\"total_amount\":\"" + realAmount + "\"," + "\"total_amount\":\"" + realAmount + "\"," +
"\"subject\":\"" + orderPayVo.getSubject() + "\"," + "\"subject\":\"" + orderPayVo.getSubject() + "\"," +
"\"enable_pay_channels\":\"balance,coupon,creditCard,creditCardExpress,creditCardCartoon,pcredit,credit_group,moneyFund,debitCardExpress\"," +
"\"out_trade_no\":\"" + orderPayVo.getTradeNo() + "\"" + "\"out_trade_no\":\"" + orderPayVo.getTradeNo() + "\"" +
" }"); " }");
request.setNotifyUrl(notifyUrl); request.setNotifyUrl(notifyUrl);
......
package com.xxfc.platform.universal.biz;
import lombok.Data;
/**
* 用户信息类
* @author Administrator
*/
@Data
public class UserMessage {
private String name;
private String idNumber;
}
...@@ -7,8 +7,10 @@ import com.github.wxiaoqi.security.admin.feign.UserFeign; ...@@ -7,8 +7,10 @@ import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.universal.biz.UserMessage;
import com.xxfc.platform.universal.entity.IdInformation; import com.xxfc.platform.universal.entity.IdInformation;
import com.xxfc.platform.universal.mapper.IdInformationMapper; import com.xxfc.platform.universal.mapper.IdInformationMapper;
import com.xxfc.platform.universal.service.authenticationInterface.UserAuthentication;
import com.xxfc.platform.universal.utils.CertifHttpUtils; import com.xxfc.platform.universal.utils.CertifHttpUtils;
import com.xxfc.platform.universal.utils.Validation; import com.xxfc.platform.universal.utils.Validation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -21,6 +23,7 @@ import org.apache.http.util.EntityUtils; ...@@ -21,6 +23,7 @@ import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
...@@ -31,9 +34,16 @@ import java.text.SimpleDateFormat; ...@@ -31,9 +34,16 @@ import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
/**
* 认证业务
* @author Administrator
*/
@Service @Service
@Slf4j @Slf4j
public class CertificationService { public class CertificationService {
@Autowired
private UserAuthentication authentication;
/** /**
* 认证相关的数据 * 认证相关的数据
*/ */
...@@ -209,17 +219,20 @@ public class CertificationService { ...@@ -209,17 +219,20 @@ public class CertificationService {
} }
//map携带身份证和姓名进行认证 //map携带身份证和姓名进行认证
Map<String, String> authMap = new HashMap<>(); // Map<String, String> authMap = new HashMap<>();
authMap.put(idCardName, (String) frontData.get(numberName)); // authMap.put(idCardName, (String) frontData.get(numberName));
authMap.put(cName, (String) frontData.get(cName)); // authMap.put(cName, (String) frontData.get(cName));
//3.调用接口进行认证 // //3.调用接口进行认证
String result = certificate(authMap); //
// boolean result = certificate(authMap);
boolean result = authentication.certificate(new UserMessage(){{
setIdNumber(number);
setName(name);
}} );
log.info("----认证结果result=========" + result); log.info("----认证结果result=========" + result);
//认证返回的参数是否为空 //认证返回的参数是否为空
if (!StringUtils.isBlank(result)) {
Map<String, Object> map = (Map<String, Object>) JSONObject.parse(result); if (result) {
log.info("----certifRet=========" + certifRet);
if (MapUtil.isNotEmpty(map) || certifResultCode.equals(map.get(certifRet))) {
//认证成功后存入保存到数据库 //认证成功后存入保存到数据库
//获得身份证正面记录的身份证号和真实姓名 //获得身份证正面记录的身份证号和真实姓名
//设置姓名 //设置姓名
...@@ -257,9 +270,6 @@ public class CertificationService { ...@@ -257,9 +270,6 @@ public class CertificationService {
// return ObjectRestResponse.succ(objRR.getData()); // return ObjectRestResponse.succ(objRR.getData());
// } // }
} }
}
return ObjectRestResponse.createFailedResult(ResultCode.INCOMPLETE_DATA,"网络异常,请稍后再试"); return ObjectRestResponse.createFailedResult(ResultCode.INCOMPLETE_DATA,"网络异常,请稍后再试");
...@@ -267,7 +277,8 @@ public class CertificationService { ...@@ -267,7 +277,8 @@ public class CertificationService {
//认证 //认证
public String certificate(Map<String, String> querys) { //认证
public boolean certificate(Map<String, String> querys) {
Map<String, String> headers = new HashMap<String, String>(); Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + cAppcode); headers.put("Authorization", "APPCODE " + cAppcode);
try { try {
...@@ -280,15 +291,27 @@ public class CertificationService { ...@@ -280,15 +291,27 @@ public class CertificationService {
*/ */
//获取response的body //获取response的body
if (statusCode == 200) { if (statusCode == 200) {
return EntityUtils.toString(response.getEntity()); String result = EntityUtils.toString(response.getEntity());
log.info("----认证结果result=========" + result);
//认证返回的参数是否为空
if (!StringUtils.isBlank(result)) {
Map<String, Object> map = (Map<String, Object>) JSONObject.parse(result);
log.info("----certifRet=========" + certifRet);
if (MapUtil.isNotEmpty(map) || certifResultCode.equals(map.get(certifRet))) {
return true;
}
}
} }
return false;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return false;
} }
return null;
} }
//身份证照片解析 //身份证照片解析
public String imageParse(String imageUrl, String type) { public String imageParse(String imageUrl, String type) {
Map<String, String> headers = new HashMap<String, String>(); Map<String, String> headers = new HashMap<String, String>();
...@@ -317,10 +340,7 @@ public class CertificationService { ...@@ -317,10 +340,7 @@ public class CertificationService {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return null; return null;
} }
......
package com.xxfc.platform.universal.service.authenticationInterface;
import com.xxfc.platform.universal.biz.UserMessage;
import java.util.Map;
/**
* 用户认证类
* @author Administrator
*/
public interface UserAuthentication {
/**
* 用户认证方法
* @param message
* @return
*/
boolean certificate(UserMessage message) ;
}
package com.xxfc.platform.universal.service.authenticationInterface.impl;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONObject;
import com.xxfc.platform.universal.biz.UserMessage;
import com.xxfc.platform.universal.service.authenticationInterface.UserAuthentication;
import com.xxfc.platform.universal.utils.CertifHttpUtils;
import com.xxfc.platform.universal.utils.HttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.util.EntityUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* 调用北京畅游互联科技有限公司接口
*
* @author Administrator
*/
@Service
@Slf4j
@Primary
public class BJCYAuthentication implements UserAuthentication {
private final String host = "http://aliyunverifyidcard.haoservice.com";
private final String path = "/idcard/VerifyIdcardv2";
private final String method = "GET";
private final String appcode = "ee7710ce92054cae9f6c040f6864e6a7";
private final String tokenHead = "Authorization";
private final String token="APPCODE " + appcode;
private final String cardNo ="cardNo";
private final String realName ="realName";
private final Integer resultCode=0;
private final String ret="error_code";
@Override
public boolean certificate(UserMessage message) {
Map<String, String> headers = new HashMap<String, String>();
headers.put(tokenHead, token);
Map<String, String> querys = new HashMap<String, String>();
querys.put(cardNo, message.getIdNumber());
querys.put(realName, message.getName());
try {
HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
StatusLine statusLine = response.getStatusLine();
log.error(response.toString());
int statusCode = statusLine.getStatusCode();
log.error(statusCode+"");
//获取response的body
if (statusCode == 200) {
String result = EntityUtils.toString(response.getEntity());
log.info("----认证结果result=========" + result);
//认证返回的参数是否为空
if (!StringUtils.isBlank(result)) {
Map<String, Object> map = (Map<String, Object>) JSONObject.parse(result);
log.info("----certifRet=========" + map);
if (MapUtil.isNotEmpty(map) || resultCode.equals(map.get(ret))) {
return true;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
package com.xxfc.platform.universal.service.authenticationInterface.impl;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONObject;
import com.xxfc.platform.universal.biz.UserMessage;
import com.xxfc.platform.universal.service.authenticationInterface.UserAuthentication;
import com.xxfc.platform.universal.utils.CertifHttpUtils;
import com.xxfc.platform.universal.utils.HttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* 调用四川涪擎认证接口
*
* @author Administrator
*/
@Service
@Slf4j
public class XCFQAuthentication implements UserAuthentication {
private String cAppcode="acea1c8811f748b3a65815f11db357c4";
/**
* 认证相关的数据
*/
private String cHost = "https://idcert.market.alicloudapi.com";
private String cPath = "/idcard";
private String cMethod = "GET";
//响应:认证错误码字段名
private String certifRet = "status";
//响应:认证通过码
private String certifResultCode = "01";
//请求:身份证号字段名
private String idCardName = "idCard";
//请求:用户姓名字段名
private String cName = "name";
@Override
public boolean certificate(UserMessage message) {
//map携带身份证和姓名进行认证
Map<String, String> querys = new HashMap<>();
querys.put(idCardName, message.getIdNumber());
querys.put(cName, message.getName());
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + cAppcode);
try {
log.info("----querys=========" + querys);
HttpResponse response = HttpUtils.doGet(cHost, cPath, cMethod, headers, querys);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
/**
* 状态码: 200 正常;400 URL无效;401 appCode错误; 403 次数用完; 500 API网管错误
*/
//获取response的body
if (statusCode == 200) {
String result = EntityUtils.toString(response.getEntity());
log.info("----认证结果result=========" + result);
//认证返回的参数是否为空
if (!StringUtils.isBlank(result)) {
Map<String, Object> map = (Map<String, Object>) JSONObject.parse(result);
log.info("----certifRet=========" + certifRet);
if (MapUtil.isNotEmpty(map) || certifResultCode.equals(map.get(certifRet))) {
return true;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
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