Commit 072dad30 by ping.wu

Merge branches 'feature/20200103_支付宝支付下单_wuping' and…

Merge branches 'feature/20200103_支付宝支付下单_wuping' and 'feature/20200117_支付宝下单_wuping' of http://gitlab.freemud.com/order-group-application/order-group into feature/20200117_支付宝下单_wuping

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
#	order-application-service/pom.xml
#	order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
#	order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderResponseVo.java
parents 55df2093 787b8b79
......@@ -93,8 +93,11 @@ public class OrderSdkAdapter {
//用户在界面上看到的支付金额
request.setSettlementAmount(requestVO.getAmount());
//实际支付现金金额,扣除支付自生优惠,单位分
request.setActualPayAmount(requestVO.getAmount());
if(requestVO.getOrderClient() != null){
request.setOrderClient(requestVO.getOrderClient().getIndex());
}else {
request.setOrderClient(StringUtils.isEmpty(requestVO.getSource())? OrderClientType.SAAS.getIndex():getNewOrderClient(requestVO.getSource()));
}
//订单业务类型 1:普通订单 2:虚拟订单
request.setBizType(1);
request.setNote(requestVO.getRemark());
......@@ -374,6 +377,7 @@ public class OrderSdkAdapter {
orderClients.add(OrderClientType.WAI_MEAL.getIndex());
}
}
orderClients.add(OrderClientType.ALIPAY.getIndex());
orderConditionsReq.setOrderClients(orderClients);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
......@@ -1117,6 +1121,9 @@ public class OrderSdkAdapter {
case "saas":
orderClientType = 2;
break;
case "alipay":
orderClientType=3;
break;
case "jdwm":
orderClientType = 10;
break;
......@@ -1157,6 +1164,9 @@ public class OrderSdkAdapter {
case 2:
name = "saas";
break;
case 3:
name="alipay";
break;
case 10:
name = "jdwm";
break;
......@@ -1195,6 +1205,9 @@ public class OrderSdkAdapter {
case 2:
name = "saas 点餐";
break;
case 3:
name="支付宝";
break;
case 10:
name = "京东";
break;
......
package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
......@@ -81,6 +82,8 @@ public class BaseCreateOrderRequest extends BaseConfig {
* 支付渠道名称
*/
private String payChannelName;
private OrderClientType orderClient;
/**
* 订单来源
*/
......
......@@ -83,5 +83,7 @@ public class OrderPayResponse {
private String timestamp;
private String signType;
private String aliPayOrder;
}
}
......@@ -35,7 +35,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.1.4.RELEASE</version>
<version>1.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......@@ -109,7 +109,7 @@
<dependency>
<artifactId>assortment-data-manager</artifactId>
<groupId>com.freemud.sdk.api.assortment</groupId>
<version>3.9.7-SNAPSHOT</version>
<version>4.1.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.freemud.commons</groupId>
......@@ -310,7 +310,7 @@
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-payment-sdk</artifactId>
<version>2.3.2-SNAPSHOT</version>
<version>2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
......
......@@ -869,6 +869,9 @@ public class OrderAdapter {
}else {
responseVo.setOrderPayType("微信支付");
}
if(OrderSourceType.ALIPAY.getCode().equals(ordersBean.getSource())){
responseVo.setOrderPayType("支付宝支付");
}
//取餐码用日订单序号代替- v1.5.4变更为四位随机数
responseVo.setTakeCode(ordersBean.getOtherCode());
responseVo.setAmount(ordersBean.getAmount());
......@@ -1931,133 +1934,133 @@ public class OrderAdapter {
return OldOrderAccountType.BUYM_SENDN;
}
public QueryOrderAccountType getQueryOrderAccountType(Integer activityType) {
if (ActivityTypeEnum.TYPE_11.getCode().equals(activityType) || ActivityTypeEnum.TYPE_12.getCode().equals(activityType)) {
return QueryOrderAccountType.BUY_DISCOUNT;
}
if (ActivityTypeEnum.TYPE_3.getCode().equals(activityType)) {
return QueryOrderAccountType.COUPON;
}
if (ActivityTypeEnum.TYPE_2.getCode().equals(activityType)) {
return QueryOrderAccountType.DISCOUNT_AMOUNT;
}
if (ActivityTypeEnum.TYPE_81.getCode().equals(activityType)) {
return QueryOrderAccountType.PREMIUM_EXCHANGE;
}
if (ActivityTypeEnum.TYPE_32.getCode().equals(activityType)) {
return QueryOrderAccountType.PRODUCT_COUPON;
}
if (ActivityTypeEnum.TYPE_31.getCode().equals(activityType)) {
return QueryOrderAccountType.DISCOUNT_COUPON;
}
if (ActivityTypeEnum.TYPE_PACKAGE.getCode().equals(activityType)) {
return QueryOrderAccountType.PACK_AMOUNT;
}
if (ActivityTypeEnum.TYPE_DELIVERY.getCode().equals(activityType)) {
return QueryOrderAccountType.DELIVERY_AMOUNT;
}
if (ActivityTypeEnum.TYPE_61.getCode().equals(activityType)) {
return QueryOrderAccountType.BUYM_SENDN;
}
return null;
}
// public QueryOrderAccountType getQueryOrderAccountType(Integer activityType) {
// if (ActivityTypeEnum.TYPE_11.getCode().equals(activityType) || ActivityTypeEnum.TYPE_12.getCode().equals(activityType)) {
// return QueryOrderAccountType.BUY_DISCOUNT;
// }
// if (ActivityTypeEnum.TYPE_3.getCode().equals(activityType)) {
// return QueryOrderAccountType.COUPON;
// }
// if (ActivityTypeEnum.TYPE_2.getCode().equals(activityType)) {
// return QueryOrderAccountType.DISCOUNT_AMOUNT;
// }
// if (ActivityTypeEnum.TYPE_81.getCode().equals(activityType)) {
// return QueryOrderAccountType.PREMIUM_EXCHANGE;
// }
// if (ActivityTypeEnum.TYPE_32.getCode().equals(activityType)) {
// return QueryOrderAccountType.PRODUCT_COUPON;
// }
// if (ActivityTypeEnum.TYPE_31.getCode().equals(activityType)) {
// return QueryOrderAccountType.DISCOUNT_COUPON;
// }
// if (ActivityTypeEnum.TYPE_PACKAGE.getCode().equals(activityType)) {
// return QueryOrderAccountType.PACK_AMOUNT;
// }
// if (ActivityTypeEnum.TYPE_DELIVERY.getCode().equals(activityType)) {
// return QueryOrderAccountType.DELIVERY_AMOUNT;
// }
// if (ActivityTypeEnum.TYPE_61.getCode().equals(activityType)) {
// return QueryOrderAccountType.BUYM_SENDN;
// }
//
// return null;
// }
public boolean isCouponType(Integer type) {
return type.equals(ActivityTypeEnum.TYPE_3.getCode()) || type.equals(ActivityTypeEnum.TYPE_31.getCode()) || type.equals(ActivityTypeEnum.TYPE_32.getCode());
}
public SyncStatusDto convent2SyncStatusDtoCreate(AssortmentOpenPlatformWxapp wxApp, UserLoginInfoDto userLoginInfoDto, CreateOrderDto createOrderDto, String oid) {
SyncStatusDto syncStatusDto = new SyncStatusDto();
syncStatusDto.setSp_mchid(SPMCHID);
syncStatusDto.setSub_mchid(wxApp.getMchId());
syncStatusDto.setSp_appid(SPWXAPPID);
syncStatusDto.setSub_appid(userLoginInfoDto.getWxAppid());
syncStatusDto.setOut_shop_no(createOrderDto.getShopId());
syncStatusDto.setOpenid(userLoginInfoDto.getOpenId());
syncStatusDto.setLogin_token(userLoginInfoDto.getSessionKey());
syncStatusDto.setOrder_entry(ENTRYPAGE);
syncStatusDto.setUser_amount(createOrderDto.getAmount().intValue());
syncStatusDto.setStatus(WechatSyncStatus.CREATE_DEAL.getCode());
syncStatusDto.setAction_time(Rfc3339Util.dateToRfc3339(new Date()));
syncStatusDto.setOut_order_no(oid);
List<CreateOrderProductDto> products = createOrderDto.getProducts();
List<SyncStatusDto.DishInfo> list = Lists.newArrayList();
int totalAmount = 0;
int discountAmount = 0;
for (CreateOrderProductDto productDto : products) {
SyncStatusDto.DishInfo dishInfo = new SyncStatusDto.DishInfo();
dishInfo.setOut_dish_no(productDto.getProductId());
dishInfo.setName(productDto.getProductName());
dishInfo.setPrice(productDto.getPrice().intValue());
dishInfo.setUnit(WechatUnitType.BY_SHARE.getCode());
dishInfo.setCount(productDto.getNumber().floatValue());
list.add(dishInfo);
totalAmount += productDto.getPrice().intValue() * productDto.getNumber();
discountAmount += productDto.getSalePrice().intValue() * productDto.getNumber();
}
syncStatusDto.setTotal_amount(totalAmount);
syncStatusDto.setDiscount_amount(discountAmount);
syncStatusDto.setDish_list(list);
return syncStatusDto;
}
public SyncStatusDto convent2SyncStatusDtPay(AssortmentOpenPlatformWxapp wxApp, QueryOrdersResponseDto.DataBean.OrderBean orderBean, String wxappid, String openid, String sessionKey, PaysuccessNoticeMessage message, OrderExtInfoDto orderExtInfoDto) {
SyncStatusDto syncStatusDto = new SyncStatusDto();
syncStatusDto.setSp_mchid(SPMCHID);
syncStatusDto.setSub_mchid(wxApp.getMchId());
syncStatusDto.setSp_appid(SPWXAPPID);
syncStatusDto.setSub_appid(wxappid);
syncStatusDto.setOut_shop_no(orderBean.getShopId());
syncStatusDto.setOpenid(openid);
syncStatusDto.setLogin_token(sessionKey);
syncStatusDto.setOrder_entry(ENTRYPAGE);
syncStatusDto.setUser_amount(orderBean.getAmount().intValue());
syncStatusDto.setStatus(WechatSyncStatus.PAY_SUCCESS.getCode());
syncStatusDto.setAction_time(Rfc3339Util.dateToRfc3339(new Date()));
syncStatusDto.setPay_time(Rfc3339Util.strToRfc3339(orderExtInfoDto.getPayDate()));
syncStatusDto.setTransaction_id(message.getPaid_no());
syncStatusDto.setOut_trade_no(message.getOut_trade_no());
syncStatusDto.setOut_order_no(message.getTrans_id());
List<SyncStatusDto.DishInfo> list = Lists.newArrayList();
int totalAmount = 0;
int discountAmount = 0;
List<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean> productList = orderBean.getProductList();
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productDto : productList) {
SyncStatusDto.DishInfo dishInfo = new SyncStatusDto.DishInfo();
dishInfo.setOut_dish_no(productDto.getProductId());
dishInfo.setName(productDto.getProductName());
dishInfo.setPrice(productDto.getPrice().intValue());
dishInfo.setUnit(WechatUnitType.BY_SHARE.getCode());
dishInfo.setCount(productDto.getNumber());
list.add(dishInfo);
totalAmount += productDto.getPrice().intValue() * productDto.getNumber();
discountAmount += productDto.getSalePrice().intValue() * productDto.getNumber();
}
syncStatusDto.setTotal_amount(totalAmount);
syncStatusDto.setDiscount_amount(discountAmount);
syncStatusDto.setDish_list(list);
return syncStatusDto;
}
public String convent2Sign(SyncStatusDto syncStatusDto) {
String authorization = null;
try {
SignMessageBuilder signMessageBuilder = new SignMessageBuilder()
.url(new URL("https://api.mch.weixin.qq.com/v3/catering/orders/sync-status"))
.nonceStr(UUID.randomUUID().toString().replace("-", ""))
.timestamp(System.currentTimeMillis() / 1000)
.httpMethod("POST")
.httpBody(gson.toJson(syncStatusDto));
// public boolean isCouponType(Integer type) {
// return type.equals(ActivityTypeEnum.TYPE_3.getCode()) || type.equals(ActivityTypeEnum.TYPE_31.getCode()) || type.equals(ActivityTypeEnum.TYPE_32.getCode());
// }
authorization = getAuthorizationString(signMessageBuilder);
} catch (Exception e) {
e.printStackTrace();
}
return authorization;
}
// public SyncStatusDto convent2SyncStatusDtoCreate(AssortmentOpenPlatformWxapp wxApp, UserLoginInfoDto userLoginInfoDto, CreateOrderDto createOrderDto, String oid) {
// SyncStatusDto syncStatusDto = new SyncStatusDto();
// syncStatusDto.setSp_mchid(SPMCHID);
// syncStatusDto.setSub_mchid(wxApp.getMchId());
// syncStatusDto.setSp_appid(SPWXAPPID);
// syncStatusDto.setSub_appid(userLoginInfoDto.getWxAppId());
// syncStatusDto.setOut_shop_no(createOrderDto.getShopId());
// syncStatusDto.setOpenid(userLoginInfoDto.getOpenId());
// syncStatusDto.setLogin_token(userLoginInfoDto.getSessionKey());
// syncStatusDto.setOrder_entry(ENTRYPAGE);
// syncStatusDto.setUser_amount(createOrderDto.getAmount().intValue());
// syncStatusDto.setStatus(WechatSyncStatus.CREATE_DEAL.getCode());
// syncStatusDto.setAction_time(Rfc3339Util.dateToRfc3339(new Date()));
// syncStatusDto.setOut_order_no(oid);
// List<CreateOrderProductDto> products = createOrderDto.getProducts();
// List<SyncStatusDto.DishInfo> list = Lists.newArrayList();
// int totalAmount = 0;
// int discountAmount = 0;
// for (CreateOrderProductDto productDto : products) {
// SyncStatusDto.DishInfo dishInfo = new SyncStatusDto.DishInfo();
// dishInfo.setOut_dish_no(productDto.getProductId());
// dishInfo.setName(productDto.getProductName());
// dishInfo.setPrice(productDto.getPrice().intValue());
// dishInfo.setUnit(WechatUnitType.BY_SHARE.getCode());
// dishInfo.setCount(productDto.getNumber().floatValue());
// list.add(dishInfo);
// totalAmount += productDto.getPrice().intValue() * productDto.getNumber();
// discountAmount += productDto.getSalePrice().intValue() * productDto.getNumber();
// }
// syncStatusDto.setTotal_amount(totalAmount);
// syncStatusDto.setDiscount_amount(discountAmount);
// syncStatusDto.setDish_list(list);
// return syncStatusDto;
// }
//
// public SyncStatusDto convent2SyncStatusDtPay(AssortmentOpenPlatformWxapp wxApp, QueryOrdersResponseDto.DataBean.OrderBean orderBean, String wxappid, String openid, String sessionKey, PaysuccessNoticeMessage message, OrderExtInfoDto orderExtInfoDto) {
// SyncStatusDto syncStatusDto = new SyncStatusDto();
// syncStatusDto.setSp_mchid(SPMCHID);
// syncStatusDto.setSub_mchid(wxApp.getMchId());
// syncStatusDto.setSp_appid(SPWXAPPID);
// syncStatusDto.setSub_appid(wxappid);
// syncStatusDto.setOut_shop_no(orderBean.getShopId());
// syncStatusDto.setOpenid(openid);
// syncStatusDto.setLogin_token(sessionKey);
// syncStatusDto.setOrder_entry(ENTRYPAGE);
// syncStatusDto.setUser_amount(orderBean.getAmount().intValue());
// syncStatusDto.setStatus(WechatSyncStatus.PAY_SUCCESS.getCode());
// syncStatusDto.setAction_time(Rfc3339Util.dateToRfc3339(new Date()));
// syncStatusDto.setPay_time(Rfc3339Util.strToRfc3339(orderExtInfoDto.getPayDate()));
// syncStatusDto.setTransaction_id(message.getPaid_no());
// syncStatusDto.setOut_trade_no(message.getOut_trade_no());
// syncStatusDto.setOut_order_no(message.getTrans_id());
// List<SyncStatusDto.DishInfo> list = Lists.newArrayList();
// int totalAmount = 0;
// int discountAmount = 0;
// List<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean> productList = orderBean.getProductList();
// for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productDto : productList) {
// SyncStatusDto.DishInfo dishInfo = new SyncStatusDto.DishInfo();
// dishInfo.setOut_dish_no(productDto.getProductId());
// dishInfo.setName(productDto.getProductName());
// dishInfo.setPrice(productDto.getPrice().intValue());
// dishInfo.setUnit(WechatUnitType.BY_SHARE.getCode());
// dishInfo.setCount(productDto.getNumber());
// list.add(dishInfo);
// totalAmount += productDto.getPrice().intValue() * productDto.getNumber();
// discountAmount += productDto.getSalePrice().intValue() * productDto.getNumber();
// }
// syncStatusDto.setTotal_amount(totalAmount);
// syncStatusDto.setDiscount_amount(discountAmount);
// syncStatusDto.setDish_list(list);
// return syncStatusDto;
// }
//
// public String convent2Sign(SyncStatusDto syncStatusDto) {
// String authorization = null;
// try {
// SignMessageBuilder signMessageBuilder = new SignMessageBuilder()
// .url(new URL("https://api.mch.weixin.qq.com/v3/catering/orders/sync-status"))
// .nonceStr(UUID.randomUUID().toString().replace("-", ""))
// .timestamp(System.currentTimeMillis() / 1000)
// .httpMethod("POST")
// .httpBody(gson.toJson(syncStatusDto));
//
//
// authorization = getAuthorizationString(signMessageBuilder);
// } catch (Exception e) {
// e.printStackTrace();
// }
// return authorization;
// }
/**
* 获取Authorization串
......@@ -2215,23 +2218,23 @@ public class OrderAdapter {
/**
* 获取自定义信息
*/
public OrderExtInfoDTO getOrderExtInfo(OrderPayResponse orderPayResponse, OrderExtInfoDTO orderExtInfoDto) {
orderExtInfoDto.setOpenid(orderPayResponse.getOpenId());
String prepayId = "";
// StringUtils 依赖修改
if (orderPayResponse.getPayOrder() != null && !StringUtils.isEmpty(orderPayResponse.getPayOrder().getPackageX())) {
String[] prepayIds = orderPayResponse.getPayOrder().getPackageX().split("=");
prepayId = prepayIds.length > 1 ? prepayIds[1] : "";
}
orderExtInfoDto.setPrepayId(prepayId);
// orderExtInfoDto.setAppid(orderPayResponse.getWxAppid());
// orderExtInfoDto.setServiceTime(orderEditInfo.getServiceTime());
// orderExtInfoDto.setPushOrderTime(orderEditInfo.getPushOrderTime());
// orderExtInfoDto.setSessionId(orderEditInfo.getSessionId());
// orderExtInfoDto.setVersion(orderEditInfo.getVersion());
// orderExtInfoDto.setRuleId(orderEditInfo.getRuleId());
return orderExtInfoDto;
}
// public OrderExtInfoDTO getOrderExtInfo(OrderPayResponse orderPayResponse, OrderExtInfoDTO orderExtInfoDto) {
// orderExtInfoDto.setOpenid(orderPayResponse.getOpenId());
// String prepayId = "";
// // StringUtils 依赖修改
// if (orderPayResponse.getPayOrder() != null && !StringUtils.isEmpty(orderPayResponse.getPayOrder().getPackageX())) {
// String[] prepayIds = orderPayResponse.getPayOrder().getPackageX().split("=");
// prepayId = prepayIds.length > 1 ? prepayIds[1] : "";
// }
// orderExtInfoDto.setPrepayId(prepayId);
//// orderExtInfoDto.setAppid(orderPayResponse.getWxAppid());
//// orderExtInfoDto.setServiceTime(orderEditInfo.getServiceTime());
//// orderExtInfoDto.setPushOrderTime(orderEditInfo.getPushOrderTime());
//// orderExtInfoDto.setSessionId(orderEditInfo.getSessionId());
//// orderExtInfoDto.setVersion(orderEditInfo.getVersion());
//// orderExtInfoDto.setRuleId(orderEditInfo.getRuleId());
// return orderExtInfoDto;
// }
/**
* 转换前端支付需要的信息
......@@ -2239,19 +2242,19 @@ public class OrderAdapter {
* @param orderPayResponse
* @return
*/
public CreateOrderFlowResponse.CreateOrderResponseVo convent2CreateOrderResponseVo(OrderPayResponse orderPayResponse) {
CreateOrderFlowResponse.CreateOrderResponseVo createOrderResponseVo = new CreateOrderFlowResponse.CreateOrderResponseVo();
createOrderResponseVo.setOrderId(orderPayResponse.getOrderId());
createOrderResponseVo.setWxAppid(orderPayResponse.getWxAppid());
createOrderResponseVo.setFmId(orderPayResponse.getFmId());
OrderPayResponse.PayOrderBean payOrderBean = orderPayResponse.getPayOrder();
createOrderResponseVo.setTimestamp(payOrderBean == null ? "" : payOrderBean.getTimestamp());
createOrderResponseVo.setNonceStr(payOrderBean == null ? "" : payOrderBean.getNonceStr());
createOrderResponseVo.setPackageX(payOrderBean == null ? "" : payOrderBean.getPackageX());
createOrderResponseVo.setSignType(payOrderBean == null ? "" : payOrderBean.getSignType());
createOrderResponseVo.setSign(payOrderBean == null ? "" : payOrderBean.getSign());
return createOrderResponseVo;
}
// public CreateOrderFlowResponse.CreateOrderResponseVo convent2CreateOrderResponseVo(OrderPayResponse orderPayResponse) {
// CreateOrderFlowResponse.CreateOrderResponseVo createOrderResponseVo = new CreateOrderFlowResponse.CreateOrderResponseVo();
// createOrderResponseVo.setOrderId(orderPayResponse.getOrderId());
// createOrderResponseVo.setWxAppid(orderPayResponse.getWxAppid());
// createOrderResponseVo.setFmId(orderPayResponse.getFmId());
// OrderPayResponse.PayOrderBean payOrderBean = orderPayResponse.getPayOrder();
// createOrderResponseVo.setTimestamp(payOrderBean == null ? "" : payOrderBean.getTimestamp());
// createOrderResponseVo.setNonceStr(payOrderBean == null ? "" : payOrderBean.getNonceStr());
// createOrderResponseVo.setPackageX(payOrderBean == null ? "" : payOrderBean.getPackageX());
// createOrderResponseVo.setSignType(payOrderBean == null ? "" : payOrderBean.getSignType());
// createOrderResponseVo.setSign(payOrderBean == null ? "" : payOrderBean.getSign());
// return createOrderResponseVo;
// }
/**
* 父子订单转换前端支付需要的信息
......@@ -2275,6 +2278,7 @@ public class OrderAdapter {
if(orderBean != null && orderBean.getType() != null){
createOrderResponseVo.setOrderType(getNewOrderType(orderBean.getType(), orderBean.getGmtExpect()));
}
createOrderResponseVo.setOrderStr(payOrderBean == null ? "" : payOrderBean.getAliPayOrder());
return createOrderResponseVo;
}
......@@ -2293,6 +2297,7 @@ public class OrderAdapter {
payBean.setSign(payOrderBean.getSign());
payBean.setSignType(payOrderBean.getSignType());
payBean.setTimestamp(payOrderBean.getTimestamp());
payBean.setAliPayOrder(payOrderBean.getAliPayOrder());
responseDto.setPayOrder(payBean);
}
responseDto.setStatusCode(unifiedOrderResponse.getStatusCode());
......
package cn.freemud.adapter;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.vo.AddDeliveryAddressVo;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryReceiveAddressResponseVo;
import cn.freemud.entities.vo.UserLoginVo;
import cn.freemud.enums.ReceiveAddressLabelType;
import cn.freemud.enums.SexType;
import cn.freemud.manager.OpenPlatformPartnerStoreDeliveryConfigManager;
import cn.freemud.service.impl.StoreServiceImpl;
import cn.freemud.utils.UnicodeUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
@Component
public class UserAdapter {
public UserLoginInfoDto getUserLoginInfoDto(Map<String, Object> map) {
UserLoginInfoDto userLoginInfoDto = new UserLoginInfoDto();
userLoginInfoDto.setOpenId(String.valueOf(map.get("openid")));
userLoginInfoDto.setWxAppid(String.valueOf(map.get("wxAppid")));
userLoginInfoDto.setSessionKey(String.valueOf(map.get("session_key")));
userLoginInfoDto.setMobile(String.valueOf(map.get("mobile")));
userLoginInfoDto.setAppsecret(String.valueOf(map.get("appsecret")));
userLoginInfoDto.setMemberId(String.valueOf(map.get("memberId")));
userLoginInfoDto.setPartnerId(String.valueOf(map.get("partnerId")));
userLoginInfoDto.setUnionId(String.valueOf(map.get("unionId")));
userLoginInfoDto.setNewMemeber(Boolean.valueOf(map.get("newMember").toString()));
userLoginInfoDto.setNickName(String.valueOf(map.get("nickName")));
return userLoginInfoDto;
}
}
//package cn.freemud.adapter;
//
//import cn.freemud.entities.dto.*;
//import cn.freemud.entities.vo.AddDeliveryAddressVo;
//import cn.freemud.entities.vo.CreateOrderVo;
//import cn.freemud.entities.vo.QueryReceiveAddressResponseVo;
//import cn.freemud.entities.vo.UserLoginVo;
//import cn.freemud.enums.ReceiveAddressLabelType;
//import cn.freemud.enums.SexType;
//import cn.freemud.manager.OpenPlatformPartnerStoreDeliveryConfigManager;
//import cn.freemud.service.impl.StoreServiceImpl;
//import cn.freemud.utils.UnicodeUtil;
//import com.alibaba.fastjson.JSONObject;
//import com.google.common.collect.Lists;
//import com.google.common.collect.Maps;
//import com.google.gson.Gson;
//import org.apache.commons.collections4.CollectionUtils;
//import org.apache.commons.lang.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.util.*;
//import java.util.stream.Collectors;
//
//@Component
//public class UserAdapter {
//
// public UserLoginInfoDto getUserLoginInfoDto(Map<String, Object> map) {
// UserLoginInfoDto userLoginInfoDto = new UserLoginInfoDto();
// userLoginInfoDto.setOpenId(String.valueOf(map.get("openid")));
// userLoginInfoDto.setWxAppId(String.valueOf(map.get("wxAppId")));
// userLoginInfoDto.setSessionKey(String.valueOf(map.get("session_key")));
// userLoginInfoDto.setMobile(String.valueOf(map.get("mobile")));
// userLoginInfoDto.setAppSecret(String.valueOf(map.get("appsecret")));
// userLoginInfoDto.setMemberId(String.valueOf(map.get("memberId")));
// userLoginInfoDto.setPartnerId(String.valueOf(map.get("partnerId")));
// userLoginInfoDto.setUnionId(String.valueOf(map.get("unionId")));
// userLoginInfoDto.setNewMember(Boolean.valueOf(map.get("newMember").toString()));
// userLoginInfoDto.setNickName(String.valueOf(map.get("nickName")));
// return userLoginInfoDto;
// }
//}
package cn.freemud.entities.dto;
import lombok.Data;
@Data
public class UserLoginInfoDto {
private String openId;
private String wxAppid;
private String sessionKey;
private String mobile;
private String appsecret;
private String memberId;
private String partnerId;
private boolean newMemeber;
private String unionId;
private String nickName;
}
//package cn.freemud.entities.dto;
//
//import lombok.Data;
//
//@Data
//public class UserLoginInfoDto {
//
//// private String openId;
////
//// private String wxAppid;
////
//// private String sessionKey;
////
//// private String mobile;
////
//// private String appsecret;
////
//// private String memberId;
////
//// private String partnerId;
////
//// private boolean newMemeber;
////
//// private String unionId;
////
//// private String nickName;
//
//
// private String openId;
// private String unionId;
// private String wxAppId;
// private String sessionKey;
// private String mobile;
// private String appSecret;
// private String memberId;
// private String partnerId;
// private Boolean newMember;
// private String devBrand;
// private String devModel;
// private String channel;
// private String nickName;
// private String photoUrl;
// private String sessionId;
// private String tableNumber;
// private String iappId;
// private String storeId;
// private String userId;
// private String accessToken;
// private String alipayUserId;
// private String alipayAppId;
//}
package cn.freemud.entities.dto.user;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class UserInfoDto {
private String openId;
private String unionId;
private String wxAppid;
private String sessionKey;
private String mobile;
private String appsecret;
private String memberId;
private String partnerId;
private Boolean newMemeber;
private String devBrand;
private String devModel;
private String channel;
}
//package cn.freemud.entities.dto.user;
//
//import lombok.Builder;
//import lombok.Data;
//
//@Data
//@Builder
//public class UserInfoDto {
//
// private String openId;
//
// private String unionId;
//
// private String wxAppid;
//
// private String sessionKey;
//
// private String mobile;
//
// private String appsecret;
//
// private String memberId;
//
// private String partnerId;
//
// private Boolean newMemeber;
//
// private String devBrand;
//
// private String devModel;
//
// private String channel;
//
//
//}
......@@ -50,4 +50,9 @@ public class CreateOrderResponseVo {
*/
private Integer orderType;
/**
* 支付宝参数 唤起支付宝支付使用
*/
private String orderStr;
}
......@@ -28,7 +28,9 @@ public enum OrderSourceType {
MALL("mall", "非码Mall"),
SAAS("saas", "saas 点餐");
SAAS("saas", "saas 点餐"),
ALIPAY("alipay", "支付宝小程序点餐");
private String code;
......
package cn.freemud.service;
import cn.freemud.entities.dto.UserLoginInfoDto;
import java.util.Map;
/**
* 用户服务
*
* @author liming.guo
* @date 2018/05/08
*/
public interface UserService {
Map<String, Object> getUserInfoMapBySessionId(String sessionId);
/**
* 获取缓存用户信息
*
* @param sessionId
* @return
*/
UserLoginInfoDto getUserLoginInfoBySessionId(String sessionId);
}
//package cn.freemud.service;
//
//import cn.freemud.entities.dto.UserLoginInfoDto;
//
//import java.util.Map;
//
///**
// * 用户服务
// *
// * @author liming.guo
// * @date 2018/05/08
// */
//public interface UserService {
//
// Map<String, Object> getUserInfoMapBySessionId(String sessionId);
//
// /**
// * 获取缓存用户信息
// *
// * @param sessionId
// * @return
// */
// UserLoginInfoDto getUserLoginInfoBySessionId(String sessionId);
//
//}
......@@ -5,20 +5,16 @@ import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.entities.db.OpenPlatformIappWxappConfig;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.vo.ShoppingCartSkuAddRequestVo;
import cn.freemud.enums.BuriedPointEnum;
import cn.freemud.enums.GuessLikeStatus;
import cn.freemud.manager.OpenPlatformIappWxappConfigManager;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.BuriedPointService;
import cn.freemud.service.UserService;
import cn.freemud.service.thirdparty.SyncTxProductClient;
import cn.freemud.utils.LogUtil;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -33,7 +29,6 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* All rights Reserved, Designed By www.freemud.cn
......
......@@ -19,12 +19,10 @@ import cn.freemud.entities.db.OpenPlatformIappWxappConfig;
import cn.freemud.entities.db.OpenPlatformPartnerStoreDeliveryConfig;
import cn.freemud.entities.db.StoreTableNumber;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.order.CreateOrderDto;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import cn.freemud.entities.vo.GetProductsVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.CreateOrderType;
......@@ -38,6 +36,8 @@ import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StockClient;
import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
......@@ -73,8 +73,10 @@ public class CheckOrder {
@Autowired
private OpenPlatformPartnerStoreDeliveryConfigManager deliveryConfigManager;
// 缓存取用户数据用
// @Autowired
// private UserServiceImpl userService;
@Autowired
private UserServiceImpl userService;
private AssortmentCustomerInfoManager customerInfoManager;
//门店SDK
@Autowired
private StoreCenterService storeCenterService;
......@@ -100,9 +102,13 @@ public class CheckOrder {
/**
* 下单会员相关校验
*/
public UserLoginInfoDto checkOrderByMember(CreateOrderVo createOrderVo, String trackingNo) {
public AssortmentCustomerInfoVo checkOrderByMember(CreateOrderVo createOrderVo, String trackingNo) {
// 通过sessionId查询缓存中会员id
UserLoginInfoDto userLoginInfoDto = userService.getUserLoginInfoBySessionId(createOrderVo.getSessionId());
String sessionId = createOrderVo.getSessionId();
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
throw new ServiceException(ResponseResult.NOT_LOGIN);
}
//校验会员svc卡信息
checkCardCode(createOrderVo.getPartnerId(),userLoginInfoDto.getMemberId(),createOrderVo.getCardCode(),trackingNo);
......@@ -179,7 +185,7 @@ public class CheckOrder {
/**
* 下单订单类型校验
*/
public Integer checkOrderByOrderType(CreateOrderVo createOrderVo, UserLoginInfoDto userLoginInfoDto,
public Integer checkOrderByOrderType(CreateOrderVo createOrderVo, AssortmentCustomerInfoVo userLoginInfoDto,
StoreResponse.BizVO storeResponseDto,Long totalAmount, String trackingNo) {
Integer pushOrderTime = 0;
//TODO 设置预约时间
......@@ -191,9 +197,9 @@ public class CheckOrder {
.append(" ").append(createOrderVo.getTakeMealTime()).append(":00");
takeMealDateTime = DateUtil.convert2Date(takeMealTime.toString(), "yyyy-MM-dd HH:mm:ss");
}
String wxAppId = userLoginInfoDto.getWxAppid();
String appId = userLoginInfoDto.getWxAppId();
// 校验小程序是否支持到店或者外卖
OpenPlatformIappWxappConfig config = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(wxAppId);
OpenPlatformIappWxappConfig config = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(appId);
// 自提校验
if (CreateOrderType.COLLECT_GOODS.getCode().equals(createOrderVo.getOrderType())) {
if (config == null || config.getTakeInside() == null || config.getTakeInside() != 1) {
......@@ -223,7 +229,7 @@ public class CheckOrder {
throw new ServiceException(ResponseResult.STORE_ITEM_NOT_DELIVERY);
}
//获取门店配送信息
StoreDeliveryInfoDto storeDeliveryInfoDto = getStoreDeliveryInfo(storeResponseDto, config, userLoginInfoDto.getWxAppid());
StoreDeliveryInfoDto storeDeliveryInfoDto = getStoreDeliveryInfo(storeResponseDto, config, appId);
//订单金额小于起送费提示
if (storeDeliveryInfoDto.getDeliveryLimitAmount() > totalAmount) {
throw new ServiceException(ResponseResult.STORE_DISCONTENT_DELIVERY_FEE);
......
......@@ -2,28 +2,22 @@ package cn.freemud.service.impl;
import cn.freemud.adapter.MessageNoticeAdapter;
import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.OrderExtInfoDto;
import cn.freemud.entities.dto.ShoppingCartBaseResponse;
import cn.freemud.entities.dto.StoreBaseResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.enums.PayStatus;
import cn.freemud.enums.RedisCacheEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.TransTypeEnum;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StoreClient;
import cn.freemud.utils.DateTimeUtil;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil;
import cn.freemud.utils.ValidationCode;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
......@@ -34,12 +28,9 @@ import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.storecenter.request.ChangeTableActiveFlagRequest;
import com.freemud.application.sdk.api.storecenter.request.ChangeTableOrderStateRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreBaseResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto;
import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
......@@ -54,22 +45,17 @@ import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest;
import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse;
import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService;
import com.google.common.collect.Maps;
import com.sun.org.apache.regexp.internal.RE;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* All rights Reserved, Designed By www.freemud.cn
......
......@@ -70,6 +70,7 @@ import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
......@@ -260,7 +261,7 @@ public class OrderServiceImpl implements Orderservice {
public BaseResponse createOrderNew(CreateOrderVo createOrderVo) {
String trackingNo = LogThreadLocal.getTrackingNo();
// 查询用户信息、校验svc卡,余额购物车校验
UserLoginInfoDto userLoginInfoDto = checkOrder.checkOrderByMember(createOrderVo, trackingNo);
AssortmentCustomerInfoVo userLoginInfoDto = checkOrder.checkOrderByMember(createOrderVo, trackingNo);
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
StoreResponse.BizVO storeResponseDto = checkOrder.checkOrderByStore(createOrderVo, trackingNo);
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
......@@ -282,7 +283,7 @@ public class OrderServiceImpl implements Orderservice {
public BaseResponse scanFaceCreateOrder(CreateOrderVo createOrderVo) {
String trackingNo = LogThreadLocal.getTrackingNo();
// 查询用户信息、校验svc卡,余额购物车校验
UserLoginInfoDto userLoginInfoDto = checkOrder.checkOrderByMember(createOrderVo, trackingNo);
AssortmentCustomerInfoVo userLoginInfoDto = checkOrder.checkOrderByMember(createOrderVo, trackingNo);
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
StoreResponse.BizVO storeResponseDto = checkOrder.checkOrderByStore(createOrderVo, trackingNo);
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
......@@ -1710,16 +1711,24 @@ public class OrderServiceImpl implements Orderservice {
*
* @return
*/
private BaseResponse sdkCreateOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto, UserLoginInfoDto userLoginInfoDto, OrderExtInfoDTO orderExtInfoDTO) {
private BaseResponse sdkCreateOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto,
AssortmentCustomerInfoVo userLoginInfoDto, OrderExtInfoDTO orderExtInfoDTO) {
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfo(storeResponseDto);
String orderWarnTime = storeResponseDto.getOrderWarnTime();
OrderClientType orderClient = OrderClientType.SAAS;
String appId = userLoginInfoDto.getWxAppId();
if("2".equals(userLoginInfoDto.getChannel()) ){
orderClient = OrderClientType.ALIPAY;
}
//创建普通订单
OrderClientType finalOrderClient = orderClient;
Function<Object, CreateOrderResponse> createOrder = (var -> {
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto,orderWarnTime);
//查询第三方商品编号
baseCreateOrderRequest = getProductCustomerCode(baseCreateOrderRequest);
//保存门店渠道信息
baseCreateOrderRequest.setOrderExtended(orderExtendedReq);
baseCreateOrderRequest.setOrderClient(finalOrderClient);
CreateOrderRequest createOrderRequest = new CreateOrderRequest();
baseCreateOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest);
......@@ -1785,7 +1794,7 @@ public class OrderServiceImpl implements Orderservice {
//<!---创建订单公共方法执行逻辑--->
OrderPayResponse orderPayResponse = null;
paymentRequest = orderBodyConvertToPaymentBody(userLoginInfoDto, createOrderVo.getPartnerId());
paymentRequest = orderBodyConvertToPaymentBody(userLoginInfoDto, createOrderVo.getPartnerId(),appId);
if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} else if (totalAmount > 0 && StringUtils.isBlank(createOrderVo.getCardCode())) {
......@@ -1919,19 +1928,23 @@ public class OrderServiceImpl implements Orderservice {
return orderPayResponse;
}
private PaymentRequest orderBodyConvertToPaymentBody(UserLoginInfoDto userLoginInfoDto, String partnerId) {
String wxAppId = userLoginInfoDto.getWxAppid();
private PaymentRequest orderBodyConvertToPaymentBody(AssortmentCustomerInfoVo userLoginInfoDto, String partnerId,String appId) {
// String wxAppId = userLoginInfoDto.getWxAppId();
//设置支付信息
PaymentRequest paymentRequest = new PaymentRequest();
paymentRequest.setOpenId(userLoginInfoDto.getOpenId());
paymentRequest.setWxAppId(wxAppId);
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(partnerId, wxAppId);
paymentRequest.setPrincipalName(wxApp.getPrincipalName());
paymentRequest.setWxAppId(appId);
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(partnerId, appId);
String principalName = "上海非码网络科技有限公司";
if(wxApp != null){
principalName = wxApp.getPrincipalName();
}
paymentRequest.setPrincipalName(principalName);
paymentRequest.setReverseNotifyiDcUrl(reverseNotifyiDcUrl);
return paymentRequest;
}
public OrderExtInfoDTO getExtInfo(UserLoginInfoDto userLoginInfoDto, StoreResponse.BizVO storeResponseDto,
public OrderExtInfoDTO getExtInfo(AssortmentCustomerInfoVo userLoginInfoDto, StoreResponse.BizVO storeResponseDto,
Integer pushOrderTime, CreateOrderVo createOrderVo) {
Integer serviceTime = storeResponseDto.getServiceTime();
......@@ -1953,7 +1966,7 @@ public class OrderServiceImpl implements Orderservice {
orderExtInfoDto.setDeliveryHoursDayStart(deliveryHoursDayStart);
orderExtInfoDto.setDeliveryHoursDayEnd(deliveryHoursDayEnd);
orderExtInfoDto.setOpenid(userLoginInfoDto.getOpenId());
orderExtInfoDto.setAppid(userLoginInfoDto.getWxAppid());
orderExtInfoDto.setAppid(userLoginInfoDto.getWxAppId());
orderExtInfoDto.setSessionId(sessionId);
if (Objects.equals(serviceTime, null)) {
serviceTime = 50;
......@@ -2158,7 +2171,8 @@ public class OrderServiceImpl implements Orderservice {
/**
* 下单支付
*/
private BaseResponse createOrderAndPay(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto, UserLoginInfoDto userLoginInfoDto, OrderExtInfoDTO orderExtInfoDTO) {
private BaseResponse createOrderAndPay(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto,
AssortmentCustomerInfoVo userLoginInfoDto, OrderExtInfoDTO orderExtInfoDTO) {
//创建订单--包括下单购买会员卡创建父子订单
CreateOrderOperateDto operateDto = createOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto);
long totalAmount = operateDto.getTotalAmount();
......@@ -2284,11 +2298,12 @@ public class OrderServiceImpl implements Orderservice {
* 支付
* 包含唤起微信支付、储值卡支付直接支付、扫脸支付、商品券无需支付
*/
private OrderPayResponse pay(UserLoginInfoDto userLoginInfoDto,CreateOrderVo createOrderVo,long totalAmount,int cardAmount,
private OrderPayResponse pay(AssortmentCustomerInfoVo userLoginInfoDto,CreateOrderVo createOrderVo,long totalAmount,int cardAmount,
QueryOrdersResponse.DataBean.OrderBean fatherBeanListOne){
//<!---创建订单公共方法执行逻辑--->
OrderPayResponse orderPayResponse = null;
PaymentRequest paymentRequest = orderBodyConvertToPaymentBody(userLoginInfoDto, createOrderVo.getPartnerId());
String appId = userLoginInfoDto.getWxAppId();
PaymentRequest paymentRequest = orderBodyConvertToPaymentBody(userLoginInfoDto, createOrderVo.getPartnerId(),appId);
//支付金额异常
if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
......
package cn.freemud.service.impl;
import cn.freemud.adapter.BigDataAdapter;
import cn.freemud.adapter.MemberAdapter;
import cn.freemud.adapter.MessageNoticeAdapter;
import cn.freemud.adapter.UserAdapter;
import cn.freemud.base.constant.Version;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.MD5Util;
import cn.freemud.constant.ApplicationConstant;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.UserInfoKeyConstant;
import cn.freemud.entities.db.Partner;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.user.UserInfoDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.manager.OpenPlatformWxappPluginBindManager;
import cn.freemud.manager.PartnerManager;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.UserService;
import cn.freemud.service.thirdparty.*;
import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerMerchant;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerMerchantManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.jasypt.contrib.org.apache.commons.codec_1_3.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.net.URLEncoder;
import java.security.Security;
import java.security.spec.AlgorithmParameterSpec;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* @author liming.guo
* @date 2018/05/11
*/
@Service
@Slf4j
public class UserServiceImpl implements UserService {
private static Gson gson = new Gson();
@Autowired
private UserAdapter userAdapter;
@Autowired
private RedisCache redisCache;
/**
* 校验用户是否登录
*/
public void checkUserLogin(String sessionId) {
Map<String, Object> userInfoMap = this.getUserInfoMapBySessionId(sessionId);
if (userInfoMap == null || userInfoMap.size() <= 0 || userInfoMap.get(UserInfoKeyConstant.MEMBER_ID) == null) {
throw new ServiceException(ResponseResult.NOT_LOGIN);
}
}
/**
* 校验用户是否登录
*/
public boolean checkUserLoginFlag(String sessionId) {
Map<String, Object> userInfoMap = this.getUserInfoMapBySessionId(sessionId);
log.info("submit userInfoMap:{}", gson.toJson(userInfoMap));
if (userInfoMap == null || userInfoMap.size() <= 0 || userInfoMap.get(UserInfoKeyConstant.MEMBER_ID) == null) {
return false;
}
return true;
}
/**
* 获取缓存用户信息
*/
@Override
public Map<String, Object> getUserInfoMapBySessionId(String sessionId) {
String redisKey = RedisKeyConstant.SAAS_USER_INFO_SESSIONID_KEY_PREFIX + sessionId;
Map<String, Object> map;
try {
map = redisCache.getValue(redisKey);
}catch (Exception e){
map = redisCache.getValue(redisKey);
}
return map;
}
/**
* 获取缓存用户信息
*
* @param sessionId
* @return
*/
@Override
public UserLoginInfoDto getUserLoginInfoBySessionId(String sessionId) {
checkUserLogin(sessionId);
String redisKey = RedisKeyConstant.SAAS_USER_INFO_SESSIONID_KEY_PREFIX + sessionId;
Map<String, Object> map = redisCache.getValue(redisKey);
return userAdapter.getUserLoginInfoDto(map);
}
}
//package cn.freemud.service.impl;
//
//import cn.freemud.adapter.UserAdapter;
//import cn.freemud.constant.RedisKeyConstant;
//import cn.freemud.constant.UserInfoKeyConstant;
//import cn.freemud.entities.dto.UserLoginInfoDto;
//import cn.freemud.enums.ResponseResult;
//import cn.freemud.interceptor.ServiceException;
//import cn.freemud.redis.RedisCache;
//import cn.freemud.service.UserService;
//import com.google.gson.Gson;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.Map;
//
///**
// * @author liming.guo
// * @date 2018/05/11
// */
//@Service
//@Slf4j
//public class UserServiceImpl implements UserService {
// private static Gson gson = new Gson();
// @Autowired
// private UserAdapter userAdapter;
// @Autowired
// private RedisCache redisCache;
//
// /**
// * 校验用户是否登录
// */
// public void checkUserLogin(String sessionId) {
// Map<String, Object> userInfoMap = this.getUserInfoMapBySessionId(sessionId);
// if (userInfoMap == null || userInfoMap.size() <= 0 || userInfoMap.get(UserInfoKeyConstant.MEMBER_ID) == null) {
// throw new ServiceException(ResponseResult.NOT_LOGIN);
// }
// }
// /**
// * 校验用户是否登录
// */
// public boolean checkUserLoginFlag(String sessionId) {
// Map<String, Object> userInfoMap = this.getUserInfoMapBySessionId(sessionId);
// log.info("submit userInfoMap:{}", gson.toJson(userInfoMap));
// if (userInfoMap == null || userInfoMap.size() <= 0 || userInfoMap.get(UserInfoKeyConstant.MEMBER_ID) == null) {
// return false;
// }
// return true;
// }
//
// /**
// * 获取缓存用户信息
// */
// @Override
// public Map<String, Object> getUserInfoMapBySessionId(String sessionId) {
// String redisKey = RedisKeyConstant.SAAS_USER_INFO_SESSIONID_KEY_PREFIX + sessionId;
// Map<String, Object> map;
// try {
// map = redisCache.getValue(redisKey);
// }catch (Exception e){
// map = redisCache.getValue(redisKey);
// }
// return map;
// }
//
// /**
// * 获取缓存用户信息
// *
// * @param sessionId
// * @return
// */
// @Override
// public UserLoginInfoDto getUserLoginInfoBySessionId(String sessionId) {
// checkUserLogin(sessionId);
//
// String redisKey = RedisKeyConstant.SAAS_USER_INFO_SESSIONID_KEY_PREFIX + sessionId;
// Map<String, Object> map = redisCache.getValue(redisKey);
// return userAdapter.getUserLoginInfoDto(map);
// }
//}
......@@ -3,18 +3,18 @@ package cn.freemud.service.process.WechatPush;
import cn.freemud.amp.body.OrderBody;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.vo.WxappPluginVo;
import cn.freemud.enums.PluginAuditStatusEnum;
import cn.freemud.enums.YesOrNoEnum;
import cn.freemud.manager.OpenPlatformWxappPluginBindManager;
import cn.freemud.service.OrderDistributeMQService;
import cn.freemud.service.impl.UserServiceImpl;
import cn.freemud.utils.LogUtil;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerConfig;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.sdk.api.assortment.order.enums.OrderSdkType;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
......@@ -66,8 +66,10 @@ public class WechatPushProcessor {
@Autowired
private AssortmentOpenPlatformWxappManager openPlatformWxappManager;
// @Autowired
// private UserServiceImpl userService;
@Autowired
private UserServiceImpl userService;
private AssortmentCustomerInfoManager customerInfoManager;
/**
* 订单创建上送微信
......@@ -76,7 +78,7 @@ public class WechatPushProcessor {
* @param oId 订单ID
* @param companyId 商户号
*/
public boolean statusOrderCreate(UserLoginInfoDto userLoginInfoDto, String oId, String companyId) {
public boolean statusOrderCreate(AssortmentCustomerInfoVo userLoginInfoDto, String oId, String companyId) {
DisRequest disRequest = null;
try {
// 判断当前小程序是否开通推荐优惠插件并启用
......@@ -93,7 +95,7 @@ public class WechatPushProcessor {
}
QueryOrdersResponse.DataBean.OrderBean orderBean = queryOrderByIdResponse.getData();
// 获取当前商户微信支付mchId
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getWxAppid());
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getWxAppId());
if (wxApp == null || wxApp.getMchId() == null) {
LogUtil.error("syncStatusOrderCreate 订单上送信息 未查询到商户号", gson.toJson(wxApp), "");
return false;
......@@ -129,7 +131,7 @@ public class WechatPushProcessor {
return;
}
try {
UserLoginInfoDto userLoginInfoDto = userService.getUserLoginInfoBySessionId(sessionId);
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (null == userLoginInfoDto) {
LogUtil.error("syncStatusOrderPay 订单上送信息不全 终止上送", gson.toJson(userLoginInfoDto), "");
return;
......@@ -138,7 +140,7 @@ public class WechatPushProcessor {
String mchId = null;
if(StringUtils.isBlank(platformMchId)) {
// 获取当前商户微信支付mchId
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getWxAppid());
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getWxAppId());
if (wxApp == null || wxApp.getMchId() == null) {
LogUtil.error("syncStatusOrderCreate 订单上送信息 未查询到商户号", gson.toJson(wxApp), "");
return;
......@@ -182,11 +184,11 @@ public class WechatPushProcessor {
* @param userLoginInfoDto
* @return
*/
private OrderBody.SyncStatusInfo getSyncStatusInfo(String mchId, UserLoginInfoDto userLoginInfoDto) {
private OrderBody.SyncStatusInfo getSyncStatusInfo(String mchId, AssortmentCustomerInfoVo userLoginInfoDto) {
OrderBody.SyncStatusInfo syncStatusInfo = new OrderBody.SyncStatusInfo();
syncStatusInfo.setMchId(mchId);
syncStatusInfo.setWxAppid(userLoginInfoDto.getWxAppid());
syncStatusInfo.setWxAppid(userLoginInfoDto.getWxAppId());
syncStatusInfo.setOpenId(userLoginInfoDto.getOpenId());
syncStatusInfo.setSessionKey(userLoginInfoDto.getSessionKey());
return syncStatusInfo;
......@@ -200,12 +202,12 @@ public class WechatPushProcessor {
* @param userLoginInfoDto
* @return
*/
private OrderBody.SyncStatusInfo getSyncStatusInfo(String mchId, UserLoginInfoDto userLoginInfoDto, String paidNo, String outTradeNo
private OrderBody.SyncStatusInfo getSyncStatusInfo(String mchId, AssortmentCustomerInfoVo userLoginInfoDto, String paidNo, String outTradeNo
, String endTransId, String terminalId) {
OrderBody.SyncStatusInfo syncStatusInfo = new OrderBody.SyncStatusInfo();
syncStatusInfo.setMchId(mchId);
syncStatusInfo.setWxAppid(userLoginInfoDto.getWxAppid());
syncStatusInfo.setWxAppid(userLoginInfoDto.getWxAppId());
syncStatusInfo.setOpenId(userLoginInfoDto.getOpenId());
syncStatusInfo.setSessionKey(userLoginInfoDto.getSessionKey());
syncStatusInfo.setTransactionId(paidNo);
......@@ -222,8 +224,8 @@ public class WechatPushProcessor {
* @param userLoginInfoDto
* @return true 未开启 false 已开启插件
*/
private boolean checkWechatOpenPlugin(UserLoginInfoDto userLoginInfoDto) {
List<WxappPluginVo> openPlatformWxappPluginBinds = openPlatformWxappPluginBindManager.queryByWxAppid(userLoginInfoDto.getWxAppid());
private boolean checkWechatOpenPlugin(AssortmentCustomerInfoVo userLoginInfoDto) {
List<WxappPluginVo> openPlatformWxappPluginBinds = openPlatformWxappPluginBindManager.queryByWxAppid(userLoginInfoDto.getWxAppId());
List<WxappPluginVo> pluginVoList = openPlatformWxappPluginBinds.stream().filter(wxappPluginVo -> wxappPluginVo.getPluginAppid().equals(COUPON_PLUGINS)).filter(wxappPluginVo -> wxappPluginVo.getOperateStatus() == 1).collect(Collectors.toList());
if (CollectionUtils.isEmpty(pluginVoList) || pluginVoList.size() != 1) {
LogUtil.error("checkWechatOpenPlugin 订单上送信息 未开启优惠插件", gson.toJson(pluginVoList), "");
......
......@@ -12,7 +12,6 @@
*/
package cn.freemud.service;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.service.process.WechatPush.WechatPushProcessor;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -34,16 +33,16 @@ public class WechatPushProcessorTest {
@Test
public void syncStatusOrderCreateTest() {
UserLoginInfoDto userLoginInfoDto = new UserLoginInfoDto();
userLoginInfoDto.setWxAppid("wxb78fb7c6218cb52c");
userLoginInfoDto.setSessionKey("G9m9zqlrTeNAqtmclsqkPg\u003d\u003d");
userLoginInfoDto.setMobile("15956904546");
userLoginInfoDto.setPartnerId("1864");
userLoginInfoDto.setNewMemeber(false);
userLoginInfoDto.setUnionId("okRmn1I4WUvHfcBNkPQ15ydnSJDA");
userLoginInfoDto.setOpenId("oORZK5JfpU-MkOV_tDFff8rz8ook");
String oId = "142674066768146957";
String companyId = "1864";
// UserLoginInfoDto userLoginInfoDto = new UserLoginInfoDto();
// userLoginInfoDto.setWxAppId("wxb78fb7c6218cb52c");
// userLoginInfoDto.setSessionKey("G9m9zqlrTeNAqtmclsqkPg\u003d\u003d");
// userLoginInfoDto.setMobile("15956904546");
// userLoginInfoDto.setPartnerId("1864");
// userLoginInfoDto.setNewMember(false);
// userLoginInfoDto.setUnionId("okRmn1I4WUvHfcBNkPQ15ydnSJDA");
// userLoginInfoDto.setOpenId("oORZK5JfpU-MkOV_tDFff8rz8ook");
// String oId = "142674066768146957";
// String companyId = "1864";
// Assert.assertTrue( wechatPushProcessor.statusOrderCreate(userLoginInfoDto, oId,companyId) );
}
......
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