Commit e7cf567a by 张洪旺

Merge remote-tracking branch 'origin/qa' into qa

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/controller/OrderController.java
#	order-application-service/src/main/java/cn/freemud/service/Orderservice.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
parents 0c76b274 35eabe2e
......@@ -128,4 +128,4 @@
</plugin>
</plugins>
</build>
</project>
</project>
\ No newline at end of file
......@@ -2,84 +2,22 @@
| 版本号 | 版本说明 | 更新人 | 更新时间 |
| --------------| ------------ | ------------- | ---------- |
| 1.0.0-SNAPSHOT | 迁移后包明改为cn.freemud开头第一版 | wuping | 2019-12-16 |
| 6.4.10.RELEASE| 骑手小费 | 张明警 | 2019-12-26 |
| 1.1.0.RELEASE| 1.9.8需求打包release版本 | 侯书虎 | 2019-12-26 |
| 1.1.1.RELEASE| 1.9.9sessionKey | 胡超 | 20200108 |
| 1.1.2.RELEASE| 1.9.9需求打包release版本 | 丁凯 | 20200108 |
| 1.1.3.RELEASE| 1.9.10需求打包release版本(thirdCateId) | 胡超 | 20200113 |
| 1.1.4.RELEASE| 农工商submit接口 | 侯书虎 | 2020-01-13 |
| 1.1.5.RELEASE| 农工商submit接口(del thirdCateId) | 胡超 | 2020-01-13 |
| 1.1.6.SNAPSHOT| 1.9.11商品组 | 胡超 | 2020-02-05 |
| 1.1.7.SNAPSHOT| 核销流程更改 | 侯书虎 | 2020-02-10 |
| 1.1.7.RELEASE| 1.9.11商品组 | 胡超 | 2020-02-13 |
| 1.1.9.RELEASE| pos渠道 | 丁凯 | 2020-02-22 |
| 1.2.0.RELEASE| 开放平台创建订单 | 姜海波 | 2020-02-24 |
| 1.2.1.RELEASE| 基于1.2.0.RELEASE | 丁凯 | 2020-03-04 |
| 1.2.2.RELEASE| 升级RELEASE | wuping | 2020-03-04 |
| 1.1.7-SNAPSHOT| 预约单支付成功接口增加预约任务 | wuping | 2020-03-10 |
| 1.1.8-SNAPSHOT| 预约单接单接口增加预约任务 | wuping | 2020-03-17 |
| 1.3.1-SNAPSHOT | 判断优化 | 丁凯 | 2020-03-27 |
| 1.4.1-SNAPSHOT | 增加延时队列配置 | 海波 | 2020-04-07 |
| 1.4.2-SNAPSHOT | 核销券码失败订单状态闭环开发 | 侯书虎 | 2020-04-08 |
| 1.4.3-SNAPSHOT | 查询订单返回新增参数 | 侯书虎 | 2020-04-08 |
| 1.4.4-SNAPSHOT | 订单扩展信息 | 丁凯 | 2020-04-13 |
| 1.4.5-SNAPSHOT | 订单app渠道 | 丁凯 | 2020-04-16 |
| 1.4.7-SNAPSHOT | 去掉无用字符写入ext_info | 李小二 | 2020-04-17 |
| 1.4.8-SNAPSHOT | 增加实际配送费 | 海波 | 2020-04-17 |
| 1.5.0-SNAPSHOT | APP渠道 | 丁凯 | 2020-04-22 |
| 1.5.1-SNAPSHOT | oms订单正向操作 | 侯书虎 | 2020-04-23 |
| 1.5.2-SNAPSHOT | 预约单打印 | 海波 | 2020-04-23 |
| 1.5.3-SNAPSHOT | 放开常用方法修饰符 | 李小二 | 2020-04-23 |
| 1.5.4-SNAPSHOT | 优化ES查询sdk方法 | 海波 | 2020-04-24 |
| 1.5.5-SNAPSHOT | 订单渠道类型新增支付宝 | 书虎 | 2020-04-24 |
| 1.5.6-SNAPSHOT | 返回售后单创建时间 | wuping | 2020-04-27 |
| 1.5.7-SNAPSHOT | 取消订单增加任务 | wuping | 2020-04-28 |
| 1.5.8-SNAPSHOT | 费用实体添加字段:实际费用 | 胡超 | 2020-04-29 |
| 1.5.9-SNAPSHOT | oms逆向代码 | 侯书虎 | 2020-05-06 |
| 1.6.0-SNAPSHOT | 增加订单金额字段返回 | 侯书虎 | 2020-05-06 |
| 1.6.1-SNAPSHOT | 增加售后阶段 | 海波 | 2020-05-07 |
| 1.6.2-SNAPSHOT | 增加售后阶段 | 海波 | 2020-05-07 |
| 1.6.3-SNAPSHOT | 发送pos消息中心新增字段 | 侯书虎 | 2020-05-07 |
| 1.6.5-SNAPSHOT | 创建订单增加appid字段 | wuping | 2020-05-08 |
| 1.6.6-SNAPSHOT | 退单增加配送费字段 | 海波 | 2020-05-12 |
| 1.6.7-SNAPSHOT | 开放平台订单详情补全信息 | 茹祥 | 2020-05-12 |
| 1.6.8-SNAPSHOT | 退配送费增加默认值 | 海波 | 2020-05-12 |
| 1.6.9-SNAPSHOT | 券码接口添加组织机构ID | 胡超 | 2020-05-12 |
| 1.7.6-SNAPSHOT | 订单查询返回配送渠道字段 | 雷后领 | 2020-05-14 |
| 1.7.2-SNAPSHOT | 规范extInfo字段 | 侯书虎 | 2020-05-14 |
| 1.7.3-SNAPSHOT | 客如云 | 海波 | 2020-05-14 |
| 1.7.4-SNAPSHOT| 客如云 | 海波 | 2020-05-15 |
| 1.7.6-SNAPSHOT| 订单查询返回配送渠道字段 | 雷后领 | 2020-05-15 |
| 1.7.7-SNAPSHOT| 聚合订单综合查询新增新订单类型 | wuping | 2020-05-15 |
| 1.7.8-SNAPSHOT| 预约单接单后提醒时间区分外卖自提 | wuping | 2020-05-18 |
| 1.8.0-SNAPSHOT| 增加订单支付类型 | 海波 | 2020-05-18 |
| 1.8.1-SNAPSHOT| 增加订单支付类型 | 海波 | 2020-05-18 |
| 1.8.2-SNAPSHOT| 升级券码sdk | 胡超 | 2020-05-18 |
| 1.8.3-SNAPSHOT| 更新基础sdk1.4.8-SNAPSHOT | 海波 | 2020-05-25|
| 1.8.4-SNAPSHOT| 新增活动类型 | 侯书虎 | 2020-05-26 |
| 1.8.5-SNAPSHOT| 客如云增加字段 | 海波 | 2020-05-26 |
| 1.8.6-SNAPSHOT| 增加完成时间戳字段 | 雷后领 | 2020-05-27**** |
| 1.8.7-SNAPSHOT| 修改订单详情配送时间字段 | 茹祥 | 2020-05-27 |
| 1.8.8-SNAPSHOT| 查询非码微店订单下载 | 梁崇福 | 2020-05-28 |
| 1.5.5-SNAPSHOT | 返回售后单创建时间 | wuping | 2020-04-27 |
| 1.5.6-SNAPSHOT | 取消订单增加任务 | wuping | 2020-04-28 |
| 1.6.5-SNAPSHOT | 创建订单增加appid字段 | wuping | 2020-05-08 |
| 1.7.7-SNAPSHOT| 聚合订单综合查询新增新订单类型 | wuping | 2020-05-15 |
| 1.7.8-SNAPSHOT| 预约单接单后提醒时间区分外卖自提 | wuping | 2020-05-18 |
| 1.7.1-SNAPSHOT| 订单查询返回配送渠道字段 | 雷后领 | 2020-05-14 |
| 1.8.6-SNAPSHOT| 增加完成时间戳字段 | 雷后领 | 2020-05-27|
| 1.3.4-SNAPSHOT | 返回售后单创建时间 | wuping | 2020-04-27 |
| 1.3.5-SNAPSHOT | 取消订单增加任务 | wuping | 2020-04-28 |
| 1.7.7-SNAPSHOT| 聚合订单综合查询新增新订单类型 | wuping | 2020-05-15 |
| 1.7.8-SNAPSHOT| 预约单接单后提醒时间区分外卖自提 | wuping | 2020-05-18 |
| 1.8.9-SNAPSHOT | 用户订单和es综合查询接口新增订单业务类型集合 | wuping | 2020-06-01 |
| 1.3.8-SNAPSHOT | 客如云订单信息 | 茹祥 | 2020-04-29 |
| 1.8.9-SNAPSHOT | 用户订单和es综合查询接口新增订单业务类型集合 | wuping | 2020-06-01 |
| 1.8.10-SNAPSHOT | 集点为0时不调用会员接口 | 梁崇福 | 2020-06-01 |
| 1.9.1-SNAPSHOT | 修改客如云接口名 | 海波 | 2020-06-05 |
| 1.9.2-SNAPSHOT| 预约单任务删除 | wuping | 2020-06-05 |
| 1.9.3-SNAPSHOT| 围餐 | dingkai | 2020-06-08 |
| 1.9.4-SNAPSHOT| 券码接口修改为channel_code | 梁崇福 | 2020-06-08 |
| 1.9.5-SNAPSHOT| 商品统计分类编号保存 | wuping | 2020-06-09 |
| 1.9.6-SNAPSHOT| 农工商停车订单 | dingkai | 2020-06-12 |
| 1.9.7-SNAPSHOT| 添加小助手营业额查询 | 梁崇福 | 2020-06-16 |
| 1.9.8-SNAPSHOT| 增加小程序打开场景值scene 升级ordercenter-sdk | 梁崇福 | 2020-06-16 |
| 1.9.91-SNAPSHOT| 升级ordercenter-sdk | 李小二 | 2020-06-28 |
| 2.0.0-SNAPSHOT| 增加payChannel | 李小二 | 2020-06-28 |
| 2.0.3-SNAPSHOT| 围餐使用积分抵扣金额赋值问题 | 谌会阳 | 2020-07-20 |
| 2.0.6-SNAPSHOT| 升级sdk版本| 李小二 | 2020-07-20 |
| 2.0.7-SNAPSHOT| 围餐添加支付渠道字段 | 谌会阳 | 2020-07-23 |
| 2.0.8-SNAPSHOT| 加料商品 | 梁崇福 | 2020-07-27 |
| 2.0.14-SNAPSHOT| 麦咖啡 | 谌会阳 | 2020-08-17 |
| 2.0.15-SNAPSHOT| 升级ordercenter-sdk | 肖家炜 | 2020-08-25 |
| 1.2.3.RELEASE | 预约单升级RELEASE | wuping | 2020-03-18 |
| 1.2.4.RELEASE | 紧急需求 增加骑手电话 | 海波 | 2020-03-19 |
| 1.2.5.RELEASE | 满额减配送费 | dingkai | 2020-03-26 |
......@@ -156,3 +94,5 @@
| 2.1.9-RELEASE | 去掉0元核销优惠券 | 李小二 | 2020-12-14 |
| 2.1.10-RELEASE | coco | 刘鹏飞 | 2020-12-17 |
| 2.1.11-RELEASE | 农工商添加设备号 | 梁崇福 | 2020-12-17 |
| 2.1.12-RELEASE | coco定制优惠券核销 | 刘鹏飞 | 2020-12-24 |
\ No newline at end of file
......@@ -1384,6 +1384,9 @@ public class OrderSdkAdapter {
case "GATHER_SPOT":
type=221;
break;
case "COCO_PRODUCT_CASH_COUPON":
type=36;
break;
default:
break;
}
......@@ -1988,6 +1991,8 @@ public class OrderSdkAdapter {
newOrderAccountType=OldOrderAccountType.MEMBER_PRICE_DISCOUNT.getCode();
case 99:
newOrderAccountType=OldOrderAccountType.FREIGHT_COUPON.getCode();
case 36:
newOrderAccountType=OldOrderAccountType.COCO_PRODUCT_CASH_COUPON.getCode();
default:
break;
}
......
......@@ -43,7 +43,8 @@ public enum OldOrderAccountType {
PRICE_DEDUCTION_COUPON(103, "抵价券", "PRICE_DEDUCTION_COUPON"),
TOTAL_DISCOUNT(205, "优惠总金额", "TOTAL_DISCOUNT"),
GATHER_SPOT(221, "集点活动","GATHER_SPOT"),
MEMBER_PRICE_DISCOUNT(220, "会员价优惠", "MEMBER_PRICE_DISCOUNT");
MEMBER_PRICE_DISCOUNT(220, "会员价优惠", "MEMBER_PRICE_DISCOUNT"),
COCO_PRODUCT_CASH_COUPON(36, "coco商品代金券","COCO_PRODUCT_CASH_COUPON");
private Integer code;
private String desc;
......
......@@ -43,6 +43,7 @@ public enum QueryOrderAccountType {
MEMBER_PRICE_DISCOUNT("MEMBER_PRICE_DISCOUNT","会员价优惠"),
MCCAFE_MONTH_CARD("MCCAFE_MONTH_CARD","麦咖啡月卡"),
WITH_ORDER_BUY_COUPON_FEE("WITH_ORDER_BUY_COUPON_FEE", "随单买月卡"),
COCO_PRODUCT_CASH_COUPON("COCO_PRODUCT_CASH_COUPON", "coco商品代金券"),
;
private String code;
......
......@@ -443,4 +443,4 @@
</repository>
</repositories>
</project>
</project>
\ No newline at end of file
......@@ -2579,6 +2579,14 @@ public class OrderAdapter {
if (ActivityTypeEnum.TYPE_221.getCode().equals(activityType)){
return OldOrderAccountType.GATHER_SPOT;
}
if (ActivityTypeEnum.TYPE_221.getCode().equals(activityType)){
return OldOrderAccountType.GATHER_SPOT;
}
// coco商品代金券
if (ActivityTypeEnum.TYPE_36.getCode().equals(activityType)){
return OldOrderAccountType.COCO_PRODUCT_CASH_COUPON;
}
return OldOrderAccountType.BUYM_SENDN;
}
......
package cn.freemud.entities.vo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class PlatformPaySuccessRequest {
@NotEmpty(message = "orderCode 不能为空")
private String orderCode;
@NotEmpty(message = "商户号 不能为空")
private String partnerId;
}
......@@ -13,6 +13,7 @@
package cn.freemud.entities.vo;
import cn.freemud.entities.dto.PromotionMessageDto;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Builder;
......@@ -364,14 +365,14 @@ public class QueryOrderResponseVo {
private String activityName;
//支付有礼活动号
private String activityNo;
// private String activityNo;
/**
* 支付有礼发送方式
* 0-静默发送
* 5-手动发送
*/
private Integer activitySendType;
// private Integer activitySendType;
//支付有礼领券集合
private List<PayGiftCouponVo> coupons;
......@@ -381,32 +382,32 @@ public class QueryOrderResponseVo {
/**
* 支付有礼奖励类型:1-非码券,2-微信商家券,3-弹窗奖励
*/
private String syncWechat;
// private String syncWechat;
/**
* 支付有礼活动配图
*/
private String activityPicture;
// private String activityPicture;
/**
* 支付有礼跳转设置(跳转类型) 0:无 5:跳转页面 10:外部小程序 15:跳转商品 20:跳转H5
*/
private String redirectType;
// private String redirectType;
/**
* 支付有礼跳转商品
*/
private PayGiftGoodsConfigVo goodsConfig;
// private PayGiftGoodsConfigVo goodsConfig;
/**
* 支付有礼跳转小程序
*/
private PayGiftMicroProgramConfigVo microProgramConfig;
// private PayGiftMicroProgramConfigVo microProgramConfig;
/**
* 支付有礼跳转页面5和20跳转外部H5对应的路径或者URL
*/
private String redirectPage;
// private String redirectPage;
/**
* 收件人省份
......@@ -526,5 +527,13 @@ public class QueryOrderResponseVo {
* 是否已选择寄杯
*/
private Boolean sendCoupon;
}
/**
*促销返回参数对象 20201223 提出紧急需求变更
*/
private PayGiftCheckAndJoinResponseDto payGiftReps;
}
......@@ -55,7 +55,8 @@ public enum ActivityTypeEnum {
TYPE_DELIVERY(901, "配送费"),
TYPE_211(211, "套餐优惠"),
TYPE_221(221, "集点活动"),
TYPE_320(320, "会员价优惠");
TYPE_320(320, "会员价优惠"),
TYPE_36(36, "coco商品代金券");
private Integer code;
......
......@@ -26,7 +26,8 @@ public enum OrderAccountType {
BUYM_SENDN(24, "买M赠N"),
CUSTOMER_SUB(4, "积分扣减"),
CARD_ORIGINAL_AMOUNT(25, "会员卡原价"),
CARD_DISCOUNT_AMOUNT(26, "会员卡优惠金额");
CARD_DISCOUNT_AMOUNT(26, "会员卡优惠金额"),
COCO_PRODUCT_CASH_COUPON(36, "coco商品代金券");;
private Integer code;
private String desc;
......
......@@ -147,4 +147,8 @@ public interface Orderservice {
BaseResponse timeOutOrderRefund(TimeOutOrderVo timeOutOrderVo);
BaseResponse platformPaysuccess(PlatformPaySuccessRequest requestVo);
}
......@@ -148,8 +148,10 @@ public class CocoCouponRelationServiceImpl implements CouponRelationService {
// 根据活动号转类型
Integer orderAccountType = orderSdkAdapter.getOldOrderAccountType(settlementType);
// 不是商品券、代金券、折扣券不处理
if(!OrderAccountType.COUPON.getCode().equals(orderAccountType) &&
// 不是商品券、代金券、折扣券、商品代金券不处理
if(!OrderAccountType.COCO_PRODUCT_CASH_COUPON.getCode().equals(orderAccountType) &&
!OrderAccountType.COUPON.getCode().equals(orderAccountType) &&
!OrderAccountType.PRODUCT_COUPON.getCode().equals(orderAccountType) &&
!OrderAccountType.DISCOUNT_COUPON.getCode().equals(orderAccountType)){
continue;
......@@ -158,6 +160,7 @@ public class CocoCouponRelationServiceImpl implements CouponRelationService {
if(OrderAccountType.COUPON.getCode().equals(orderAccountType) && "0".equals(orderSettlementInfo.get(0).getProductId())){
// 整单代金券,最后在计算
orderSettlementRemain.add(orderSettlementInfo.get(0));
continue;
}
CouponCodeVerificationTransDto couponCodeVerificationTransDto = new CouponCodeVerificationTransDto();
......@@ -203,10 +206,6 @@ public class CocoCouponRelationServiceImpl implements CouponRelationService {
}
couponCodeVerificationTransDto.setProducts(products);
//处理第三方外卖单优惠金额信息
if(totalAmount != null && totalAmount.intValue() > 0){
totalAmount = 0 - Math.abs(totalAmount);
}
// 总优惠金额单位:分
couponCodeVerificationTransDto.setTotalAmount(totalAmount);
......@@ -227,13 +226,13 @@ public class CocoCouponRelationServiceImpl implements CouponRelationService {
if(!orderSettlementRemain.isEmpty()){
Map<String, IntSummaryStatistics> collect = orderSettlementAlready.stream().collect(Collectors.groupingBy(OrderSettlementResp::getProductId, Collectors.summarizingInt(OrderSettlementResp::getNumber)));
log.info("coco订单核销优惠券,orderCode:{},collect:{}",orderBean.getOid(),JSONObject.toJSONString(collect));
for(OrderSettlementResp osr: orderSettlementRemain){
CouponCodeVerificationTransDto couponCodeVerificationTransFull = new CouponCodeVerificationTransDto();
// 券号
couponCodeVerificationTransFull.setCode(osr.getExternalObjectId());
// 总优惠金额单位:分
couponCodeVerificationTransFull.setTotalAmount(osr.getSettlementAmount().intValue());
couponCodeVerificationTransFull.setTotalAmount(0 - osr.getSettlementAmount().intValue());
// 订单号
couponCodeVerificationTransFull.setOrderNumber(orderBean.getOid());
List<CouponCodeVerificationProductDto> productsFull = new ArrayList<>();
......@@ -261,19 +260,25 @@ public class CocoCouponRelationServiceImpl implements CouponRelationService {
couponCodeVerificationDto.setTransactions(transactions);
try {
//71.券核销
for (int i = 2; i >= 0; i--) {
LogUtil.info("coco核销券码开始==", JSON.toJSONString(couponCodeVerificationDto), null);
CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
LogUtil.info("coco核销券码返回==", JSON.toJSONString(couponCodeVerificationDto), null);
ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto);
if (Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
LogUtil.info("coco CocoCouponRelationServiceImpl", JSON.toJSONString(couponCodeVerificationDto), JSON.toJSONString(couponCodeResponseDto));
break;
}
if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
emailAlertService.sendEmailAlert("cooc核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto)));
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
for(CouponCodeVerificationTransDto transaction : transactions){
List<CouponCodeVerificationTransDto> transactionsNew = new ArrayList<>();
transactionsNew.add(transaction);
couponCodeVerificationDto.setTransactions(transactionsNew);
//71.券核销
for (int i = 2; i >= 0; i--) {
CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto);
if (Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
log.info("coco 核销券码返回成功,couponCodeVerificationDto:{},couponCodeResponseDto:{},", JSON.toJSONString(couponCodeVerificationDto), JSON.toJSONString(couponCodeResponseDto));
break;
}
if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
emailAlertService.sendEmailAlert("cooc核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto)));
log.info("coco 核销券码返回失败,couponCodeVerificationDto:{},couponCodeResponseDto:{},", JSON.toJSONString(couponCodeVerificationDto), JSON.toJSONString(couponCodeResponseDto));
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
}
}
......@@ -283,7 +288,6 @@ public class CocoCouponRelationServiceImpl implements CouponRelationService {
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
return ResponseUtil.success();
}
......@@ -301,7 +305,7 @@ public class CocoCouponRelationServiceImpl implements CouponRelationService {
QueryOrdersResponseDto.DataBean.OrderBean.ProductBean pb,
List<CouponCodeVerificationProductDto> productsFull,
Integer totalAmountOriFull){
Long alreadyNum = collect.get(pb.getProductId()) == null ? 0L : collect.get(pb.getProductId()).getSum();
Long alreadyNum = collect.get(pb.getSpecification()) == null ? 0L : collect.get(pb.getSpecification()).getSum();
Integer num = pb.getNumber();
Integer remainNum = num - alreadyNum.intValue();
if(Objects.equals(remainNum,0)){
......@@ -309,13 +313,17 @@ public class CocoCouponRelationServiceImpl implements CouponRelationService {
}
// 统计商品
Integer price = pb.getPrice() == null ? 0 : pb.getPrice().intValue();
if(price.intValue() == 0){
return totalAmountOriFull;
}
CouponCodeVerificationProductDto couponCodeVerificationProductFull = new CouponCodeVerificationProductDto();
couponCodeVerificationProductFull.setConsume_num(remainNum);
couponCodeVerificationProductFull.setPID(pb.getProductId());
couponCodeVerificationProductFull.setSeq(pb.getSequence());
couponCodeVerificationProductFull.setProductName(pb.getProductName());
Integer price = pb.getPrice() == null ? 0 : pb.getPrice().intValue();
couponCodeVerificationProductFull.setInitPrice(price);
couponCodeVerificationProductFull.setNowPrice(price);
couponCodeVerificationProductFull.setPayMoney(price);
......
......@@ -304,7 +304,7 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private AssortmentOpenPlatformIappWxappStoreManager assortmentOpenPlatformIappWxappStoreManager;
@Autowired
private EcologyAdminApplicationClient ecologyAdminApplicationClient;
private EcologyAdminApplicationClient ecologyAdminApplicationClient;
@Autowired
private SvcComPayClient svcComPayClient;
......@@ -588,10 +588,10 @@ public class OrderServiceImpl implements Orderservice {
if (message.getSource().equals(PaySuccessSource.OUTSIDE.getSource())) {
log.info("调用券码核销==" + message.getTrans_id());
verificationCoupon(message.getTrans_id());
log.info("调用券码结束=="+ message.getTrans_id());
log.info("调用券码结束==" + message.getTrans_id());
}
//支付成功后
buriedPointService.paySuccessBuridPoint(partnerId,storeId,orderBean);
buriedPointService.paySuccessBuridPoint(partnerId, storeId, orderBean);
return sendPaySuccessNoticeMessage();
}
......@@ -617,6 +617,7 @@ public class OrderServiceImpl implements Orderservice {
/**
* 开通会员卡
*
* @param partnerId 商户号
* @param ruleId 会员规则ID
* @param oid 订单号
......@@ -943,8 +944,8 @@ public class OrderServiceImpl implements Orderservice {
// coco订单不考略是否查询待取餐的订单,直接调用支付有礼活动
// 所以在这个地方排除掉coco,在下边单独实现
//参与支付有礼活动
if(!cocoPartnerId.contains(queryOrderVo.getPartnerId())){
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo,partnerId);
if (!cocoPartnerId.contains(queryOrderVo.getPartnerId())) {
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo, partnerId);
}
} catch (Exception e) {
......@@ -954,10 +955,10 @@ public class OrderServiceImpl implements Orderservice {
}
// coco订单参与支付有礼活动
if(cocoPartnerId.contains(queryOrderVo.getPartnerId())){
if (cocoPartnerId.contains(queryOrderVo.getPartnerId())) {
queryOrderResponseVos.forEach(queryOrderResponseVo -> {
try {
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo,partnerId);
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo, partnerId);
} catch (Exception e) {
LogUtil.error("coco_queryOrders_activity_error", gson.toJson(queryOrdersDto), gson.toJson(queryOrderResponseVo), e);
......@@ -1177,20 +1178,20 @@ public class OrderServiceImpl implements Orderservice {
@Override
public BaseResponse queryCollageOrderById(Integer operation, String sessionId, String oid, String partnerId, String channel) {
BaseResponse orderInfoRes = this.queryOrderById(operation,sessionId, oid,partnerId,channel);
BaseResponse orderInfoRes = this.queryOrderById(operation, sessionId, oid, partnerId, channel);
if(null == orderInfoRes.getResult() || !String.valueOf(RESPONSE_SUCCESS_CODE).equals(orderInfoRes.getCode())){
if (null == orderInfoRes.getResult() || !String.valueOf(RESPONSE_SUCCESS_CODE).equals(orderInfoRes.getCode())) {
return orderInfoRes;
}
// 根据用户聚合商品信息
QueryCollageOrderResponseVo queryCollageOrderResponseVo = new QueryCollageOrderResponseVo();
QueryOrderResponseVo queryOrderResponseVo = (QueryOrderResponseVo)orderInfoRes.getResult();
QueryOrderResponseVo queryOrderResponseVo = (QueryOrderResponseVo) orderInfoRes.getResult();
List<ProductVo> productVo = queryOrderResponseVo.getProducts();
// 根据用户id分类商品
Map<String,List<ProductVo>> orderItemMap = productVo.stream().collect(Collectors.groupingBy(ProductVo::getUserId));
Map<String, List<ProductVo>> orderItemMap = productVo.stream().collect(Collectors.groupingBy(ProductVo::getUserId));
List<UserProductVo> userProducts = new ArrayList<>();
for(Map.Entry<String,List<ProductVo>> m : orderItemMap.entrySet()){
for (Map.Entry<String, List<ProductVo>> m : orderItemMap.entrySet()) {
List<ProductVo> products = m.getValue();
UserProductVo userProductVo = new UserProductVo();
......@@ -1202,7 +1203,7 @@ public class OrderServiceImpl implements Orderservice {
userProducts.add(userProductVo);
}
queryCollageOrderResponseVo = JSONObject.parseObject(JSONObject.toJSONString(queryOrderResponseVo),QueryCollageOrderResponseVo.class);
queryCollageOrderResponseVo = JSONObject.parseObject(JSONObject.toJSONString(queryOrderResponseVo), QueryCollageOrderResponseVo.class);
queryCollageOrderResponseVo.setUserProducts(userProducts);
return ResponseUtil.success(queryCollageOrderResponseVo);
......@@ -1224,14 +1225,14 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
if(!StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId()) || "0".equals(orderBean.getAddInfo().getDeliveryId())){
if (!StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId()) || "0".equals(orderBean.getAddInfo().getDeliveryId())) {
return ResponseUtil.error(ResponseResult.DELIVERY_NOT_EXIST);
}
QueryDeliveryBaseRequest queryDeliveryBaseRequest = new QueryDeliveryBaseRequest();
queryDeliveryBaseRequest.setDeliveryId(orderBean.getAddInfo().getDeliveryId());
queryDeliveryBaseRequest.setOpenDistance(1);
DeliveryBaseResponse<DeliveryStatusAndRiderPositionDto> deliveryBaseResponse = deliveryFeiginClient.getDeliveryStatusAndRiderPosition(queryDeliveryBaseRequest);
if(RESPONSE_SUCCESS_CODE != deliveryBaseResponse.getCode() || response.getData() == null){
if (RESPONSE_SUCCESS_CODE != deliveryBaseResponse.getCode() || response.getData() == null) {
return ResponseUtil.error(ResponseResult.DELIVERY_QUERY_RIDER_ERROR);
}
OrderRiderResponseVo responseVo = new OrderRiderResponseVo();
......@@ -1247,12 +1248,12 @@ public class OrderServiceImpl implements Orderservice {
responseVo.setOperationList(operationList);
responseVo.setOrderId(orderBean.getOid());
responseVo.setStorePhone(deliveryBaseResponse.getData().getStorePhone());
if(deliveryBaseResponse.getData().getCurrentPoint() != null){
if (deliveryBaseResponse.getData().getCurrentPoint() != null) {
String currentPoint[] = deliveryBaseResponse.getData().getCurrentPoint().split(",");
responseVo.setRiderLongitude(currentPoint[0]);
responseVo.setRiderLatitude(currentPoint[1]);
}
if(deliveryBaseResponse.getData().getStorePoint() != null){
if (deliveryBaseResponse.getData().getStorePoint() != null) {
String storePoint[] = deliveryBaseResponse.getData().getStorePoint().split(",");
responseVo.setShopLongitude(storePoint[0]);
responseVo.setShopLatitude(storePoint[1]);
......@@ -1269,16 +1270,35 @@ public class OrderServiceImpl implements Orderservice {
public BaseResponse timeOutOrderRefund(TimeOutOrderVo timeOutOrderVo) {
Map<String, QueryOrdersResponseDto.DataBean.OrderBean> orderBeans = this.getOrderBeanByOrderId(timeOutOrderVo.getOid());
if (MapUtils.isEmpty(orderBeans)) {
ResponseUtil.error("404","订单不存在");
ResponseUtil.error("404", "订单不存在");
}
QueryOrdersResponseDto.DataBean.OrderBean orderBean = orderBeans.get(OrderBeanType.SAASORDER.getCode());
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus())){
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus())) {
this.timeOutRefund(orderBean);
}
return ResponseUtil.success();
}
@Override
public BaseResponse platformPaysuccess(PlatformPaySuccessRequest requestVo) {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(requestVo.getOrderCode());
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(queryOrderByIdResponse.getErrcode()) || queryOrderByIdResponse.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
// 扣减储值卡
// 扣减券
// 扣减积分
return ResponseUtil.success();
}
private String getRedpacketsPicture(String activityId) {
if (StringUtils.isNotBlank(activityId)) {
try {
......@@ -1295,7 +1315,7 @@ public class OrderServiceImpl implements Orderservice {
}
//参与支付有礼活动
private void joinPayGift(String sessionId, QueryOrderResponseVo queryOrderResponseVo,String partnerId) {
private void joinPayGift(String sessionId, QueryOrderResponseVo queryOrderResponseVo, String partnerId) {
PayGitCheckAndJoinRequestDto payGitRequestDto = new PayGitCheckAndJoinRequestDto();
payGitRequestDto.setStoreId(queryOrderResponseVo.getShopId());
payGitRequestDto.setSessionId(sessionId);
......@@ -1317,24 +1337,29 @@ public class OrderServiceImpl implements Orderservice {
payGitRequestDto.setOrderWay(2);
}
if(cocoPartnerId.contains(partnerId)){
if (cocoPartnerId.contains(partnerId)) {
payGitRequestDto.setVer(1);
}
BaseResponse<PayGiftCheckAndJoinResponseDto> payGiftBaseResponse = activityApplicationClient.payGiftCheckAndJoin(payGitRequestDto);
if (String.valueOf(RESPONSE_SUCCESS_CODE).equals(payGiftBaseResponse.getCode()) && payGiftBaseResponse.getResult() != null) {
PayGiftCheckAndJoinResponseDto payGiftResponse = payGiftBaseResponse.getResult();
queryOrderResponseVo.setActivityNo(payGiftResponse.getActivityNo());
//版本前 原参数保留,暂不变更
//防止牵扯其他服务返回参数结构引起异常
queryOrderResponseVo.setActivityName(payGiftResponse.getActivityName());
queryOrderResponseVo.setCoupons(payGiftResponse.getCoupons());
queryOrderResponseVo.setWechatCouponInfo(payGiftResponse.getWechatCouponInfo());
queryOrderResponseVo.setSyncWechat(payGiftResponse.getSyncWechat());
queryOrderResponseVo.setActivityPicture(payGiftResponse.getActivityPicture());
queryOrderResponseVo.setRedirectType(payGiftResponse.getRedirectType());
queryOrderResponseVo.setGoodsConfig(payGiftResponse.getGoodsConfig());
queryOrderResponseVo.setMicroProgramConfig(payGiftResponse.getMicroProgramConfig());
queryOrderResponseVo.setRedirectPage(payGiftResponse.getRedirectPage());
queryOrderResponseVo.setActivitySendType(payGiftResponse.getSendType());
//20201223本次变更-》去掉set,直接以对象进行返参
queryOrderResponseVo.setPayGiftReps(payGiftResponse);
// queryOrderResponseVo.setActivityNo(payGiftResponse.getActivityNo());
// queryOrderResponseVo.setSyncWechat(payGiftResponse.getSyncWechat());
// queryOrderResponseVo.setActivityPicture(payGiftResponse.getActivityPicture());
// queryOrderResponseVo.setRedirectType(payGiftResponse.getRedirectType());
// queryOrderResponseVo.setGoodsConfig(payGiftResponse.getGoodsConfig());
// queryOrderResponseVo.setMicroProgramConfig(payGiftResponse.getMicroProgramConfig());
// queryOrderResponseVo.setRedirectPage(payGiftResponse.getRedirectPage());
// queryOrderResponseVo.setActivitySendType(payGiftResponse.getSendType());
}
}
......@@ -1485,12 +1510,12 @@ public class OrderServiceImpl implements Orderservice {
// 支付有礼
// 目前只有coco在订单详情参加支付有礼,且不检查订单的状态
if(cocoPartnerId.contains(partnerId)){
joinPayGift(sessionId, queryOrderResponseVo,partnerId);
if (cocoPartnerId.contains(partnerId)) {
joinPayGift(sessionId, queryOrderResponseVo, partnerId);
}
buildQueryOrderResponseVo(queryOrderResponseVo,response,partnerId);
buildQueryOrderResponseVo(queryOrderResponseVo, response, partnerId);
return ResponseUtil.success(queryOrderResponseVo);
}
......@@ -3482,15 +3507,15 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(responses.getData());
}
public void buildQueryOrderResponseVo(QueryOrderResponseVo queryOrderResponseVo,QueryOrderByIdResponse response,String partnerId) {
public void buildQueryOrderResponseVo(QueryOrderResponseVo queryOrderResponseVo, QueryOrderByIdResponse response, String partnerId) {
if(null == response || response.getData() == null || !ObjectUtils.equals(response.getErrcode(),RESPONSE_SUCCESS_CODE) ){
ApiLog.info("订单详情查询,返回值错误,QueryOrderByIdResponse",response);
if (null == response || response.getData() == null || !ObjectUtils.equals(response.getErrcode(), RESPONSE_SUCCESS_CODE)) {
ApiLog.info("订单详情查询,返回值错误,QueryOrderByIdResponse", response);
return;
}
OrderRelationService orderRelationService = orderRelationFactory.getQueryOrdrBuildService(partnerId);
orderRelationService.queryOrdrBuild(queryOrderResponseVo,response);
orderRelationService.queryOrdrBuild(queryOrderResponseVo, response);
}
......@@ -3552,7 +3577,6 @@ public class OrderServiceImpl implements Orderservice {
if (combPayResponse==null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) {
log.info("混合支付返回信息错误,trackingNo:{} request:{} response:{}",trackingNo, JSONObject.toJSONString(combPayRequest), JSONObject.toJSONString(combPayResponse));
orderPayResponse.setMsg(combPayResponse!=null ? "支付:"+combPayResponse.getMsg() :"混合支付忙不过来啦,请稍后再试");
return orderPayResponse;
}
Integer svcAmount = 0;
Integer svcVAmount = 0;
......@@ -3568,8 +3592,8 @@ public class OrderServiceImpl implements Orderservice {
.orElse(null);
//现金+svc 现金
if (payPlatforms.size()==2 || (payPlatforms.size()==1 && cashPay!=null)) {
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(),orderBean.getCompanyId(),storeId);
if (payPlatforms.size() == 2 || (payPlatforms.size() == 1 && cashPay != null)) {
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(), orderBean.getCompanyId(), storeId);
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
......@@ -3674,28 +3698,29 @@ public class OrderServiceImpl implements Orderservice {
// // TODO: 2019/9/10 hubowen mq推送变更
// backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
//}
/**
* 获取混合支付是否开启
*
* @param partnerId
* @return
*/
private boolean checkSvcComPay(String partnerId,String storeId) {
private boolean checkSvcComPay(String partnerId, String storeId) {
SvcComPayRequestDto requestDto = new SvcComPayRequestDto();
requestDto.setPartnerId(partnerId);
requestDto.setStoreId(storeId);
SvcComPayResponseDto query = null;
for (int i=0;i<3;i++) {
for (int i = 0; i < 3; i++) {
query = svcComPayClient.query(requestDto);
if (query!=null) break;
if (query != null) break;
}
log.info("order checkSvcComPay:{}",JSON.toJSONString(query));
if (query==null || !ResponseResult.SUCCESS.getCode().equals(query.getCode())) {
log.info("order checkSvcComPay:{}", JSON.toJSONString(query));
if (query == null || !ResponseResult.SUCCESS.getCode().equals(query.getCode())) {
return false;
}
if (query.getResult()!=null && query.getResult().getValue()) {
if (query.getResult() != null && query.getResult().getValue()) {
return true;
}
else {
} else {
return false;
}
}
......@@ -3711,23 +3736,25 @@ public class OrderServiceImpl implements Orderservice {
}
return map;
}
/**
* 超时回调直接退款
*
* @param orderBean
*/
public void timeOutRefund(QueryOrdersResponseDto.DataBean.OrderBean orderBean) {
//调用支付退款
log.info("payment timeout callback for refund orderDto={}",JSON.toJSONString(orderBean));
log.info("payment timeout callback for refund orderDto={}", JSON.toJSONString(orderBean));
Integer abState = 4;
String noPay = "8200404";
if (abState.equals(orderBean.getAbnormalState()) ) {
String noPay = "8200404";
if (abState.equals(orderBean.getAbnormalState())) {
log.info("payment timeout callback for refund is exist");
return;
}
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> response = null;
Long refundId = System.currentTimeMillis();
OrderExtInfoDto orderExtInfoDTO = gson.fromJson(orderBean.getExtInfo(), OrderExtInfoDto.class);
if (orderExtInfoDTO==null || StringUtils.isBlank(orderExtInfoDTO.getFmId())) {
if (orderExtInfoDTO == null || StringUtils.isBlank(orderExtInfoDTO.getFmId())) {
log.info("payment timeout callback for refund not create pre order");
return;
}
......@@ -3738,14 +3765,14 @@ public class OrderServiceImpl implements Orderservice {
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, orderBean.getOid());
response = standardPaymentService.orderRefund(orderPayRefundRequest, LogTreadLocal.getTrackingNo());
log.info("payment timeout callback for refund orderId={},request={},resp={}",orderBean.getOid(),JSON.toJSONString(orderPayRefundRequest),JSON.toJSONString(response));
if (response!=null && noPay.equals(response.getCode())) {
log.info("payment timeout callback for refund orderId={},request={},resp={}", orderBean.getOid(), JSON.toJSONString(orderPayRefundRequest), JSON.toJSONString(response));
if (response != null && noPay.equals(response.getCode())) {
return;
}
if (response!=null || state.equals(response.getData().getRefundStatus())) {
sdkUpdateAbnormalState.setAbnormalDesc(desc+",退款成功");
if (response != null || state.equals(response.getData().getRefundStatus())) {
sdkUpdateAbnormalState.setAbnormalDesc(desc + ",退款成功");
} else {
sdkUpdateAbnormalState.setAbnormalDesc(desc+",退款失败");
sdkUpdateAbnormalState.setAbnormalDesc(desc + ",退款失败");
}
sdkUpdateAbnormalState.setPartnerId(orderBean.getCompanyId());
sdkUpdateAbnormalState.setAbnormalState(4);
......@@ -3757,7 +3784,7 @@ public class OrderServiceImpl implements Orderservice {
OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
//判断当前订单是否存在预支付订单
if(extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())){
if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) {
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest();
......@@ -3765,24 +3792,24 @@ public class OrderServiceImpl implements Orderservice {
paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId());
paymentQueryRequest.setVer("2");
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponse> queryResponseBaseResponse = paymentNewService.query(paymentQueryRequest,LogThreadLocal.getTrackingNo());
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponse> queryResponseBaseResponse = paymentNewService.query(paymentQueryRequest, LogThreadLocal.getTrackingNo());
//判断预支付订单状态
if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())){
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
}
//判断当前预支付订单是否已经支付成功
if(ObjectUtils.equals(TradeState.SUCCESS.getCode(), queryResponseBaseResponse.getData().getTradeState())){
if (ObjectUtils.equals(TradeState.SUCCESS.getCode(), queryResponseBaseResponse.getData().getTradeState())) {
throw new ServiceException(ResponseResult.ORDER_HAS_PAID);
}
// 3.取消前一个预支付订单 调用支付取消预支付订单,如果预支付订单已经取消了再调用取消预支付订单接口会报错的
if(ObjectUtils.equals(TradeState.NOTPAY.getCode(), queryResponseBaseResponse.getData().getTradeState())) {
if (ObjectUtils.equals(TradeState.NOTPAY.getCode(), queryResponseBaseResponse.getData().getTradeState())) {
PaymentCloseUnifiedOrderRequest closeUnifiedOrderRequest = new PaymentCloseUnifiedOrderRequest();
closeUnifiedOrderRequest.setFmId(extInfo.getFmId());
closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewService.cancelNewUnifiedOrder(closeUnifiedOrderRequest,LogThreadLocal.getTrackingNo());
if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),cancelNewUnifiedOrder.getCode())){
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewService.cancelNewUnifiedOrder(closeUnifiedOrderRequest, LogThreadLocal.getTrackingNo());
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
}
}
......
......@@ -11,7 +11,8 @@ public enum OrderSource {
SAAS("saas", "saas点餐"),
ALIPAY("alipay", "支付宝"),
EBAI("ebwm", "饿百外卖"),
DPZHCT("dpzhct", "美团点评智慧餐厅");
DPZHCT("dpzhct", "美团点评智慧餐厅"),
KOUBEI("koubeiwaimai", "口碑外卖");
private String source;
private String sourceName;
......
......@@ -31,7 +31,7 @@ public class OrderBeanFactory {
}
if (OrderSource.BDWM.getSource().equals(source) || OrderSource.JDWM.getSource().equals(source)
|| OrderSource.MTWM.getSource().equals(source) || OrderSource.ELEME.getSource().equals(source) || OrderSource.FMWD.getSource().equals(source) || OrderSource.EBAI.getSource().equals(source)
|| OrderSource.DPZHCT.getSource().equals(source)){
|| OrderSource.DPZHCT.getSource().equals(source) || OrderSource.KOUBEI.getSource().equals(source)){
return applicationContext.getBean(WaimaiOrderMangerServiceImpl.class);
}
return applicationContext.getBean(SaasOrderMangerServiceImpl.class);
......
......@@ -191,5 +191,10 @@ public class OrderExtInfoDto {
*/
private String stationId;
/**
* 线下订单储值卡支付金额
*/
private Integer svcAmount;
}
......@@ -13,12 +13,11 @@
package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.GetMemberInfoRequestDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.ShoppingCartNewService;
import cn.freemud.service.ShoppingCartToolsService;
import cn.freemud.service.impl.ShoppingCartMallServiceImpl;
import cn.freemud.service.impl.ShoppingCartMealServiceImpl;
import cn.freemud.service.impl.ShoppingCartNewServiceImpl;
......@@ -28,7 +27,6 @@ import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.Api;
......@@ -177,4 +175,14 @@ public class ShoppingCartController {
return SDKCommonBaseContextWare.getBean(ShoppingCartToolsServiceImpl.class).clear(request);
}
/**
* 线下订单查询接口
*/
@ApiAnnotation(logMessage = "/getMemberInfo")
@PostMapping(value = "/getMemberInfo")
public BaseResponse getMemberInfo(@LogParams @RequestBody GetMemberInfoRequestDto request) {
return SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).getMemberInfo(request);
}
}
......@@ -194,6 +194,7 @@ public class ActivityCalculationDiscountResponseDto {
private Integer maxNum;
private Integer exchangeNum;
private Integer validityDateDays;
private Boolean storeLevel;
}
@Data
......
package cn.freemud.entities.dto;
import lombok.Data;
import java.util.List;
@Data
public class GetMemberInfoRequestDto {
private String partnerId;
private String mobile;
private String userId;
/**
* 实际支付金额(分)
*/
private Integer actualPayAmount;
/**
* 下单门店号
*/
private String storeId;
/**
* 门店名称
*/
private String storeName;
/**
* 订单原金额(分)
*/
private Integer originalAmount;
/**
* 下单渠道
*/
private Integer orderClient;
/**
* 订单类型
*/
private Integer orderType;
/**
* 支付渠道
*/
private String payChannel;
/**
* 支付渠道名称
*/
private String payChannelName;
/**
* pos编号
*/
private String posCode;
/**
* 操作人
*/
private String operator;
/**
* 是否赠送积分 0是1否
*/
private Integer needBonus;
/**
* 订单商品信息
*/
private List<OrderItemRequest> orderItemList;
@Data
public static class OrderItemRequest {
/**
* 商品序号
*/
private Integer productSeq;
/**
* 平台商品编号
*/
private String productId;
/**
* 商家商品编号
*/
private String thirdProductId;
/**
* 商品名称
*/
private String productName;
/**
* 商品单价(分)
*/
private Integer productPrice;
/**
* 数量
*/
private Integer productQuantity;
/**
* 优惠分摊金额(分)
*/
private Integer productSharePrice;
/**
* 商品单位
*/
private String productWeightUnit;
/**
* 商品重量(克)
*/
private Integer weight;
/**
* 商品规格名称(大杯)
*/
private String productSpecName;
/**
* 商品属性名称(三分糖)
*/
private String productProperty;
/**
* 商家商品分类编号
*/
private String thirdCateCode;
/**
* 是否算积分
*/
private String needBonus;
}
}
package cn.freemud.entities.dto;
import lombok.Data;
import java.util.List;
@Data
public class GetMemberInfoResponseVo {
private String userId;
private Score score;
private List<Coupon> coupons;
private List<Card> cards;
@Data
public static class Score {
/**
* 当前可用积分
*/
private Integer currentScore;
/**
* 积分抵扣金额,单位分
*/
private Integer reduceAmount;
/**
* 抵扣积分
*/
private Integer reduceScore;
}
@Data
public static class Coupon {
/**
* 券名称
*/
private String couponName;
/**
* 券CODE
*/
private String couponCode;
/**
* 券类型 0:商品 券 1:代金券 3 折扣券
*/
private Integer cuoponType;
/**
* 如:2019-10-1 至 2019-10-10 当天有效
*/
private String couponLimit;
/**
* 优惠金额,单位分
*/
private Integer discountAmount;
/**
* 状态:-1:未激活 0:可用(剔除过期) 1:已使用 2:部分使用 3:取消 6:已过期(根据生失效日期) 99:未知(目前暂不支持)
*/
private Integer status;
private List<Product> products;
}
@Data
public static class Product {
/**
* 商户商品编号
*/
private String pid;
/**
* 商品名称
*/
private String name;
/**
* 最大可取商品个数
*/
private Integer number;
/**
* 商品折扣价,以分为单位
*/
private Integer priceAct;
/**
* 原价,以分为单位
*/
private Integer priceOriginal;
/**
* 支付信息
*/
Payment payment;
}
@Data
public static class Payment {
/**
* 线上已付金额,以分为单位
*/
private Integer paid;
/**
* 线下需要收取的金额,以分为单位
*/
private Integer remaining;
}
@Data
public static class Card {
/**
* 实充余额,单位分
*/
private Integer amount;
/**
* 赠送余额,单位分
*/
private Integer vamount;
/**
* 卡规格ID
*/
private String applyId;
/**
* 卡号
*/
private String cardCode;
/**
* 卡名称
*/
private String cardName;
}
}
......@@ -169,6 +169,7 @@ public class CalculationSharingDiscountResponseDto {
private Integer exchangeNum;
private Integer validityDateDays;
private Date endTime;
private Boolean storeLevel;
}
@Data
......
......@@ -18,9 +18,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -101,6 +99,10 @@ public interface ShoppingCartNewService {
List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList);
default BaseResponse<GetMemberInfoResponseVo> getMemberInfo(GetMemberInfoRequestDto request){
return null;
};
/**
* 商品券校验券是否有效
*
......
......@@ -15,8 +15,10 @@ package cn.freemud.service.impl;
import cn.freemud.adapter.ActivityAdapter;
import cn.freemud.adapter.CouponAdapter;
import cn.freemud.adapter.ShoppingCartConvertAdapter;
import cn.freemud.base.constant.Version;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.CustomerScoreConstant;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.dto.*;
......@@ -29,6 +31,8 @@ import cn.freemud.entities.dto.openplatform.WeixinProductResponseDto;
import cn.freemud.entities.dto.shoppingCart.SendPoint;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.user.GetSessionUserInfoDto;
import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
......@@ -41,10 +45,7 @@ import cn.freemud.service.impl.calculate.*;
import cn.freemud.service.shoppingCart.ShoppingCartRelationFactory;
import cn.freemud.service.shoppingCart.ShoppingCartRelationService;
import cn.freemud.service.thirdparty.*;
import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.PromotionFactory;
import cn.freemud.utils.PropertyConvertUtil;
import cn.freemud.utils.ResponseUtil;
import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
......@@ -52,20 +53,25 @@ import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPa
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerWxappConfig;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.constant.FMStatusCode;
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.membercenter.request.GetMemberByMobileRequest;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.request.StatisticalPropertyRequest;
import com.freemud.application.sdk.api.membercenter.request.StatisticalScoreRequest;
import com.freemud.application.sdk.api.membercenter.response.GetMemberByMobileResponse;
import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberIdResponse;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.membercenter.response.StatisticalScoreResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.DiscountDTO;
import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
......@@ -74,6 +80,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import com.google.common.collect.Lists;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
......@@ -174,12 +181,24 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
@Autowired
private CalculationSharingValidatorService calculationSharingValidatorService;
@Autowired
private CustomerExtendClient customerExtendClient;
@Autowired
private MemberPropertyService memberPropertyService;
@Autowired
private CustomScoreClient customScoreClient;
@Value("${saas.cart.sharing}")
private String sharing;
@Autowired
private ShoppingCartRelationFactory shoppingCartRelationFactory;
/**
* 从微信卡券向购物车中添加商品
*/
......@@ -915,6 +934,159 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return ResponseUtil.success(shoppingCartGoodsDto);
}
@Override
public BaseResponse<GetMemberInfoResponseVo> getMemberInfo(GetMemberInfoRequestDto request) {
GetMemberInfoResponseVo responseData = new GetMemberInfoResponseVo();
/*
GetMemberByMobileRequest getMemberByMobileRequest = new GetMemberByMobileRequest();
getMemberByMobileRequest.setIsHaveChannels("1");
getMemberByMobileRequest.setMobile(request.getMobile());
getMemberByMobileRequest.setPartnerId(request.getPartnerId());
*/
String partnerId = request.getPartnerId();
// com.freemud.application.sdk.api.base.BaseResponse<GetMemberByMobileResponse> memberByMobile = memberCenterService.getMemberByMobile(getMemberByMobileRequest, LogThreadLocal.getTrackingNo());
// String memberId = memberByMobile.getData().getMemberId();
String memberId = request.getUserId();
responseData.setUserId(memberId);
List<GetMemberInfoRequestDto.OrderItemRequest> orderItemList = request.getOrderItemList();
if (CollectionUtils.isEmpty(orderItemList)){
// 优惠券
GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(partnerId, memberId);
getMemberCouponListRequestDto.setStatusFlags(Arrays.asList(CouponStatus.STATUS_0.getCode()));
getMemberCouponListRequestDto.setPageNum(1);
getMemberCouponListRequestDto.setPageSize(Integer.MAX_VALUE);
GetMemberCouponListResponseDto.Result result = getMemberCouponList(getMemberCouponListRequestDto);
List<GetMemberCouponListResponseDto.Result.MemberCoupon> memberCoupons = result.getMemberCoupons();
Date nowDate = new Date();
memberCoupons = memberCoupons.stream().filter(item -> filterExpireCoupon(nowDate, item.getEndTime())).collect(Collectors.toList());//过滤掉过期的券
List<GetMemberInfoResponseVo.Coupon> coupons = memberCoupons.stream().map(each -> convert2MemberCoupon(each)).collect(toList());
responseData.setCoupons(coupons);
// 积分
GetMemberInfoResponseVo.Score score = new GetMemberInfoResponseVo.Score();
StatisticalScoreRequest statisticalScoreRequest = new StatisticalScoreRequest();
statisticalScoreRequest.setMemberId(memberId);
statisticalScoreRequest.setPartnerId(partnerId);
com.freemud.application.sdk.api.base.BaseResponse<StatisticalScoreResponse> statisticalScoreResponseBaseResponse = memberPropertyService.statisticalScore(statisticalScoreRequest, LogThreadLocal.getTrackingNo());
StatisticalScoreResponse statisticalScoreResponse = statisticalScoreResponseBaseResponse.getData();
score.setCurrentScore(statisticalScoreResponse.getCurrentScore());
responseData.setScore(score);
} else {
// 优惠券
List<CartGoods> cartGoodsList = orderItemList.stream().map(each -> convert2ShopCartGoods(each)).collect(toList());
ActivityClassifyCouponBean activityClassifyCouponBean = couponService.availableCoupon(cartGoodsList, partnerId
, memberId, request.getStoreId(), "", false, request.getOrderType(), 0,"");
List<GetMemberInfoResponseVo.Coupon> coupons = activityClassifyCouponBean.getUsableCoupons().stream().map(each -> convert2MemberCoupon(each)).collect(toList());
responseData.setCoupons(coupons);
// 积分
GetUserScoreUseDetailRequest scoreRequest = new GetUserScoreUseDetailRequest();
scoreRequest.setMemberId(memberId);
scoreRequest.setPaidAmount(request.getActualPayAmount());
scoreRequest.setPartnerId(partnerId);
GetUserScoreUserDetailResponse userScoreUseDetail = customScoreClient.getUserScoreUseDetail(scoreRequest);
GetUserScoreUserDetailResponse.UserScoreDetailVo result = userScoreUseDetail.getResult();
GetMemberInfoResponseVo.Score score = new GetMemberInfoResponseVo.Score();
score.setCurrentScore(result.getCurrentScore());
score.setReduceAmount(result.getReduceAmount());
score.setReduceScore(result.getUseScore());
responseData.setScore(score);
}
// 储值卡
StatisticalPropertyRequest getMemberCardRequest = new StatisticalPropertyRequest();
getMemberCardRequest.setPartnerId(partnerId);
getMemberCardRequest.setMemberId(memberId);
com.freemud.application.sdk.api.base.BaseResponse<List<GetSvcInfoByMemberIdResponse>> svcInfoByMemberId = memberPropertyService.getSvcInfoByMemberId(getMemberCardRequest, LogThreadLocal.getTrackingNo());
List<GetSvcInfoByMemberIdResponse> memberCardResponses = svcInfoByMemberId.getData();
if(CollectionUtils.isNotEmpty(memberCardResponses)) {
// 查询储值卡的余额
List<String> cardCodes = memberCardResponses.stream().map(GetSvcInfoByMemberIdResponse::getCardCode).collect(Collectors.toList());
SVCCardAmountRequest svcCardAmountRequest = new SVCCardAmountRequest();
svcCardAmountRequest.setCardCodes(cardCodes);
svcCardAmountRequest.setPartnerId(partnerId);
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcCardAmountRequest, LogThreadLocal.getTrackingNo());
List<SVCCardAmountResponse.CardSimpleInfo> cardSimpleInfos = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos();
List<GetMemberInfoResponseVo.Card> cards = cardSimpleInfos.stream().map(each -> convert2MemberSvcCard(each)).collect(toList());
responseData.setCards(cards);
}
return ResponseUtil.success(responseData);
}
private boolean filterExpireCoupon(Date now, String endTime){
if (StringUtils.isBlank(endTime)){
return true;
}
Date date = DateUtil.convert2Date(endTime, DateUtil.FORMAT_yyyyMMdd_date);
return now.before(date);
}
private GetMemberInfoResponseVo.Coupon convert2MemberCoupon(GetMemberCouponListResponseDto.Result.MemberCoupon each){
GetMemberInfoResponseVo.Coupon coupon = new GetMemberInfoResponseVo.Coupon();
coupon.setStatus(each.getStatus());
if (each.getCouponType() == 0){
coupon.setProducts(null); // TODO
} else {
coupon.setProducts(null);
}
coupon.setCuoponType(each.getCouponType());
coupon.setCouponName(each.getCouponName());
String limit = each.getStartTime() + "至" + each.getEndTime() + "当天有效";
coupon.setCouponLimit(limit);
coupon.setCouponCode(each.getCouponCode());
return coupon;
}
private GetMemberInfoResponseVo.Coupon convert2MemberCoupon(ActivityCouponBean each){
GetMemberInfoResponseVo.Coupon coupon = new GetMemberInfoResponseVo.Coupon();
coupon.setStatus(0);
if (each.getCouponType() == 0){
coupon.setProducts(null); // TODO
} else {
coupon.setProducts(null);
}
coupon.setCuoponType(each.getCouponType());
coupon.setCouponName(each.getCouponName());
coupon.setDiscountAmount(Integer.valueOf(each.getDiscountAmount()));
coupon.setCouponLimit(null);
coupon.setCouponCode(each.getCouponCode());
return coupon;
}
private GetMemberInfoResponseVo.Card convert2MemberSvcCard(SVCCardAmountResponse.CardSimpleInfo each){
GetMemberInfoResponseVo.Card card = new GetMemberInfoResponseVo.Card();
card.setAmount(each.getAmount());
card.setApplyId(each.getApplyId());
card.setCardCode(each.getCardCode());
card.setCardName(each.getCardName());
card.setVamount(each.getVamount());
return card;
}
private CartGoods convert2ShopCartGoods(GetMemberInfoRequestDto.OrderItemRequest each){
CartGoods card = new CartGoods();
int saleValue = (each.getProductPrice() * each.getProductQuantity() - each.getProductSharePrice()) / each.getProductQuantity();
card.setAmount(Long.valueOf(saleValue));
card.setOriginalPrice(each.getProductPrice() == null ? 0L : Long.valueOf(each.getProductPrice()));
card.setQty(each.getProductQuantity());
card.setSkuId(each.getProductId());
card.setSpuId(each.getProductId());
return card;
}
private void packgeAdditional(ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity) {
ArrayList<ShoppingCartInfoRequestVo.SendGoods> senGoods = new ArrayList<>();
......@@ -1091,6 +1263,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
sendPointNew.setValidityDateDays(sendPointVo.getValidityDateDays());
sendPointNew.setActivityCode(discountDTO.getActivityCode());
sendPointNew.setEndTime(discountDTO.getEndTime());
sendPointNew.setStoreLevel(sendPointVo.getStoreLevel());
result.setSendPointVo(sendPointNew);
}
......@@ -2239,4 +2412,23 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return oldCoupons;
}
/**
* 获取会员服务的优惠券列表
*
* @param getMemberCouponListRequestDto
* @return
*/
public GetMemberCouponListResponseDto.Result getMemberCouponList(GetMemberCouponListRequestDto getMemberCouponListRequestDto) {
GetMemberCouponListResponseDto getMemberCouponListResponseDto = null;
try {
getMemberCouponListResponseDto = customerExtendClient.getMemberCouponListRequestDto(getMemberCouponListRequestDto);
} catch (Exception ex) {
log.error("会员服务优惠券接口调用失败", ex);
}
if (getMemberCouponListResponseDto != null && Objects.equals(getMemberCouponListResponseDto.getCode(), ResponseResult.SUCCESS.getCode())) {
return getMemberCouponListResponseDto.getData();
}
return null;
}
}
......@@ -219,6 +219,7 @@ public class CalculationSharingDiscountService {
sendPointNew.setValidityDateDays(sendPointVo.getValidityDateDays());
sendPointNew.setActivityCode(discountDTO.getActivityCode());
sendPointNew.setEndTime(discountDTO.getEndTime());
sendPointNew.setStoreLevel(sendPointVo.getStoreLevel());
result.setSendPointVo(sendPointNew);
}
......
......@@ -124,6 +124,13 @@ public class CocoShoppingCartRelationServiceImpl implements ShoppingCartRelation
shoppingCartGoodsResponseVo.setActivityTip(activityTip);
}
// 将配送费放到一个字段去
if(shoppingCartGoodsResponseVo.getIsDiscountDelivery() && ( shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() < shoppingCartGoodsResponseVo.getDeliveryAmount())){
shoppingCartGoodsResponseVo.setDeliveryAmount(shoppingCartGoodsResponseVo.getDiscountDeliveryAmount());
}
}
@Override
......
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