Commit 62571423 by 查志伟

添加收银买单的支持

parent d2e9408b
......@@ -45,6 +45,7 @@ public enum OrderSourceType {
BEAUTIFUL("beautiful","美业", 28),
ASSISTANT("assistant","非码小助手", 29),
SHERPAS("sherpas","食派士", 30),
CASHIER("cashier", "收银单", 36),
parkingmanual("parkingmanual", "农工商停车手工录单", 98),
PARKING("parking", "农工商停车", 99),
SDG("sdg", "闪电购", 1000);
......@@ -58,6 +59,14 @@ public enum OrderSourceType {
this.clientType = clientType;
}
public static OrderSourceType valueOfCode(String code) {
for (OrderSourceType e : values()) {
if (e.getCode().equals(code))
return e;
}
return null;
}
/**
* 字符串渠道码转对应数字类型渠道码
*
......
package cn.freemud.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @author Clover.z
* @Date 2021/10/19
* @Desc 阿波罗配置的一些变量
*/
@Data
@Component
public class ApolloVariableConfig {
/**
* 创单锁定的key的有效期 默认5秒
*/
@Value("${create.order.key.expire:5}")
private Long createOrderKeyExpire;
}
package cn.freemud.constant;
/**
* @author Clover.z
* @Date 2021/10/19
* @Desc redis锁的 key 统计
*/
public class RedisLockKey {
/**
* 下单时防止重复点击的并发锁key
* {0}: 会员id
*/
public static final String CREATE_ORDER = "create_order_key:{0}";
}
......@@ -14,10 +14,12 @@ package cn.freemud.controller;
import cn.freemud.annotations.IsConvertEN;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.order.CreateCashierOrderDto;
import cn.freemud.entities.dto.order.InvoiceCreateResponseVo;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
import cn.freemud.entities.vo.order.CreateCashierOrderVo;
import cn.freemud.entities.vo.order.CreateOrderInvoiceRequest;
import cn.freemud.entities.vo.order.OrderAppealVo;
import cn.freemud.handler.OrderReportJobHandler;
......@@ -31,6 +33,7 @@ import cn.freemud.xxljob.OrderCountJobHandler;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
......@@ -53,8 +56,6 @@ public class OrderController {
@Autowired
private MallOrderServiceImpl mallOrderService;
@Autowired
private MCCafeOrderService mcCafeOrderService;
@Autowired
private OrderReportJobHandler orderReportJobHandler;
@Autowired
private OrderCountJobHandler orderCountJobHandler;
......@@ -88,6 +89,18 @@ public class OrderController {
}
/**
* 创建收银订单(无商品单)
*/
@IsConvertEN
@ApiAnnotation(logMessage = "createCashierOrder")
@PostMapping("/createCashierOrder")
public BaseResponse<CreateOrderResponseVo> createCashierOrder(@Validated @LogParams @RequestBody CreateCashierOrderVo request) {
CreateCashierOrderDto dto = new CreateCashierOrderDto();
BeanUtils.copyProperties(request, dto);
return ResponseUtil.success(orderAdapterService.createCashierOrder(dto));
}
/**
* 通用创建订单
*/
@ApiAnnotation(logMessage = "createOrderUniversal")
......
package cn.freemud.entities;
import lombok.Data;
/**
* @author Clover.z
* @Date 2021/10/19
* @Desc 无单收银类 订单退款配置
*/
@Data
public class CashierOrderRefundConfigEntity {
/**
* 订单完成状态是否允许退款
* 0-不允许
* 1-允许
*/
private Integer allowRefund;
/**
* 订单完成后,{refundDateRange} 天内可申请退款
*/
private Integer refundDateRange;
}
package cn.freemud.entities.dto.order;
import lombok.Data;
/**
* @author Clover.z
* @Date 2021/10/21
* @Desc
*/
@Data
public class CreateCashierOrderDto {
/**
* 用户登陆的session
*/
private String sessionId;
/**
* 商户号
*/
private String partnerId;
/**
* 门店号
*/
private String storeCode;
/**
* 订单金额(单位:分)
*/
private Long orderAmount;
/**
* 小程序版本号
*/
private String version;
}
......@@ -2,43 +2,301 @@ package cn.freemud.entities.dto.store;
import lombok.Data;
import java.util.List;
@Data
public class BusinessInfoDto {
private String autoSelfmentionTakeOrderWorkflowFinishTime;
private String autoSelfmentionMakerWorkflowFinishTime;
private String autoTakeOutTakeOrderWorkflowFinishTime;
private String autoDeliveryTakeOrderWorkflowFinishTime;
private String appointAutoSelfmentionTakeOrderWorkflowFinishTime;
private String appointAutoSelfmentionMakerWorkflowFinishTime;
private String appointAutoTakeOutTakeOrderWorkflowFinishTime;
private String appointAutoDeliveryTakeOrderWorkflowFinishTime;
private Long id;
/**
* 模板名称
*/
private String templateName;
/**
* 模板类型0:通用 1:个性化
*/
private Integer templateType;
/**
* 所属商户
*/
private String partnerId;
/**
* 预订单提醒时间{1:15分钟;2:30分钟;3:45分钟;4:60分钟;5:5分钟;6:10分钟}
*/
private String orderWarnTime;
/**
* 外卖预订单提醒时间{1:15分钟;2:30分钟;3:45分钟;4:60分钟;5:5分钟;6:10分钟}
*/
private String deliveryOrderWarnTime;
/**
* 预订单打印时间{1:提醒时打印;2:接单时打印}
*/
private String orderPrintConfig;
/**
* 最大接单量,单位笔
*/
private Integer maxOrderQuantity;
/**
* 是否支持自动接单(1是2否)
*/
private Integer isAutoTakeOrder;
/**
* 自提-服务端自动接单时间 1:立即;2:1分钟;3:5分钟(顾客下单XX后,订单状态自动更改为已接单)
*/
private Integer pickupAutomaticOrderTime;
/**
* 外卖-服务端自动接单时间 1:立即;2:1分钟;3:5分钟(顾客下单XX后,订单状态自动更改为已接单)
*/
private Integer takeoutAutomaticOrderTime;
/**
* 退单模式 1手动退单 2自动退单
*/
private Integer autoChargebackOrderType;
/**
* 自动退单时间
*/
private Integer autoChargebackOrderTime;
/**
* 超时关单 1开启 2关闭
*/
private Integer overTimeCloseOrder;
/**
* 接单超时关单时间,默认30分钟
*/
private Integer overTimeCloseOrderTime;
/**
* 自提单接单后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer autoSelfmentionTakeOrderWorkflowFinishTime;
/**
* 自提单制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer autoSelfmentionMakerWorkflowFinishTime;
/**
* 自建外卖接单后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer autoTakeOutTakeOrderWorkflowFinishTime;
/**
* 自建外卖制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer autoDeliveryTakeOrderWorkflowFinishTime;
/**
* 预约自提单接单后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer appointAutoSelfmentionTakeOrderWorkflowFinishTime;
/**
* 预约自提单制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer appointAutoSelfmentionMakerWorkflowFinishTime;
/**
* 预约自建外卖接单后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer appointAutoTakeOutTakeOrderWorkflowFinishTime;
/**
* 预约自建外卖制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer appointAutoDeliveryTakeOrderWorkflowFinishTime;
/**
* 实时三方外卖制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;7:3分钟;8:2分钟
*/
private Integer autoThirdDeliveryTakeOrderWorkflowFinishTime;
/**
* 预约三方外卖制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;7:3分钟;8:2分钟
*/
private Integer appointThirdDeliveryTakeOrderWorkflowFinishTime;
private String autoChargebackOrderTime;
private String autoChargebackOrderType;
private String autoOrderPrintConfig;
private String overTimeCloseOrder;
private String overTimeCloseOrderTime;
private String pickUpAutomaticOrderTime;
private String takeOutAutomaticOrderTime;
/**
* 点餐方式(,隔开):pickup,delivery
*/
private String orderType;
/**
* 是否支持发票 1是 0否
*/
private Integer invoice;
/**
* 外卖时间:00:00-23:59
*/
private String deliveryHours;
/**
* 预计送达时间(分钟)
*/
private Integer expectedTime;
/**
* 参与结算(1:是、2:否)
*/
private Integer takePartInSettleAccounts;
/**
* 是否自动同意退款(同意:1,不同意:0)
*/
private Integer automaticRefund;
/**
* 可开票的最小价格
*/
private Integer minPriceForInvoice;
/**
* 发票特殊说明
*/
private String invoiceExplain;
/**
* 外卖预约单开关(0:关闭,1:开启)
*/
private Integer deliveryAppoint;
private Integer selfMentionSwitch;
/**
* "外卖预约单时间(分钟) 65分钟、90分钟、120分钟"
*/
private Integer deliveryAppointTime;
private String deliveryOrderWarnTime;
/**
* 是否需要餐具 1 需要 0 不需要
*/
private Integer tableware;
/**
* 自提预约单开关(0:关闭,1:开启)
*/
private Integer selfMentionSwitch;
/**
* 三方外卖订单自动拣货完成时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;7:3分钟;8:2分钟
*/
private Integer autoThirdDeliveryPickCompleteWorkflowFinishTime;
/**
* 三方外卖预订单自动拣货完成时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;7:3分钟;8:2分钟;
*/
private Integer appointThirdDeliveryPickCompleteWorkflowFinishTime;
private String timeOfRefund;
private Integer timeTypeOfRefund;
/**
* 开启制作时间 1 :是 , 2 :否
*/
private Integer turnOnTimeOfMaking;
/**
* 商品平均制作时常 分钟
*/
private Integer goodsAvgTimeOfMaking;
/**
* 自建外卖订单,商家自配送xx分钟后,订单状态更改为【已完成】
*/
private Integer deliveryFinishedAfterMinute;
/**
* 自建外卖订单-实时单,商家自配送,门店接单xx分钟后,订单状态变更为配送中
*/
private Integer deliveryProcessingAfterMinute;
/**
* 自建外卖订单-预约单,商家自配送,预约商家前xx分钟,订单更改为配送中
*/
private Integer deliveryProcessingBeforeMinute;
/**
* 点餐进度条 1 开启,2 关闭
*/
private Integer orderProgressBarStatus;
private ExpandFields expandFields;
/**
* 收银买单开关 1 开启 2 关闭
*/
private Integer cashierPayType;
/**
* 拓展字段定义
*/
private ExpandInfo expandFields;
@Data
public static class ExpandInfo {
/**
* 月销量是否展示(1-是;0-否)
*/
private Integer monthlySalesShow;
/**
* 月销量配置值
*/
private Integer monthlySalesConfigValue;
/**
* 点赞数是否展示(1-是;0-否)
*/
private Integer likesShow;
/**
* 点赞数配置值
*/
private Integer likesConfigValue;
/**
* 高峰时间配送时间
*/
private List<PeakTimeDelivery> peakTimeDelivery;
/**
* 每增加一公里增加的时长(分钟)
*/
private Integer appendMinutePerKilometer;
@Data
public static class PeakTimeDelivery {
/**
* 高峰期开始时间
*/
private String startTime;
/**
* 高峰期结束时间
*/
private String endTime;
/**
* 耗费时间
*/
private Integer costMinute;
}
/**
* 扫桌码下单(1-开启;0-关闭)
*/
private Integer scanOrderSwitch;
/**
* 爱马哥蛋糕预定单开关(1-开启;0-关闭)
*/
private Integer preOrderSwitch;
}
}
package cn.freemud.entities.dto.store;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import java.util.List;
/**
* Created with IntelliJ IDEA 2017.1 <br>
* User: dll [loverochy8@gmail.com] <br>
* Date: 2019/1/15 16:02 <br>
* To change this template use File | Settings | File Templates. <br>
* Description:
*/
@Data
public class OrgListTreeResponse {
private List<OrganizationVo> orgList;
@Data
@Builder
public static class OrganizationVo {
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("商户ID")
private String partnerId;
@ApiModelProperty("组织code")
private String organizationCode;
@ApiModelProperty("组织ID")
private String organizationId;
@ApiModelProperty("组织名称")
private String organizationName;
@ApiModelProperty("组织类型")
private Integer typeFlag;
}
}
package cn.freemud.entities.dto.store;
import cn.freemud.entities.dto.StoreResponseDto;
import lombok.Data;
@Data
public class SoreMixResponseDto {
private StoreResponseDto storeInfo;
private BusinessInfoDto businessInfo;
private DeliveryInfoDTO deliveryInfo;
private Object parentUntilTop;
private Object storeBusyTimeInfoList;
private Object storeImageList;
}
package cn.freemud.entities.dto.store;
import lombok.Data;
import java.util.List;
@Data
public class StoreBusyTimeInfo {
/**
* 渠道
*/
private String channel;
/**
* 周期类型(0每日,1工作日,2双休日,默认每日)
*/
private Integer periodType;
/**
* 时间段
*/
private List<TimeInfo> timeInfoList;
/**
* 文案
*/
private String detail;
@Data
public static class TimeInfo {
/**
* 开始时间,格式HH:mm:ss,00:00:00-23:59:59
*/
private String startTime;
/**
* 结束时间,格式HH:mm:ss,00:00:00-23:59:59
*/
private String endTime;
}
}
......@@ -32,17 +32,29 @@ public class StoreInfoRequestDto {
@Data
public static class QueryInfo{
//查询门店基本信息
/**
* 查询门店基本信息
*/
private Boolean queryStoreInfo;
// 查询门店的渠道上级列表
/**
* 查询门店的渠道上级列表
*/
private Boolean queryParentUntilTop;
//查询配送设置信息
/**
* 查询配送设置信息
*/
private Boolean queryDeliveryInfo;
//查询业务设置信息
/**
* 查询业务设置信息
*/
private Boolean queryBusinessInfo;
//查询门店图片
/**
* 查询门店图片
*/
private Boolean queryStoreImage;
//查询门店繁忙时间
/**
* 查询门店繁忙时间
*/
private Boolean queryStoreBusyTime;
}
......
package cn.freemud.entities.dto.store;
import cn.freemud.entities.dto.StoreResponseDto;
import lombok.Data;
import java.util.List;
@Data
public class StoreMixResponseDto {
/**
* 门店基础信息
*/
private StoreResponseDto storeInfo;
/**
* 门店业务配置信息
*/
private BusinessInfoDto businessInfo;
/**
* 门店配送配置信息
*/
private DeliveryInfoDTO deliveryInfo;
/**
* 门店的渠道+渠道的父渠道+父渠道的父渠道…… 直到总公司,计入一个list中
*/
private OrgListTreeResponse parentUntilTop;
/**
* 门店繁忙时间列表
*/
private List<StoreBusyTimeInfo> storeBusyTimeInfoList;
/**
* 门店图片列表
*/
private List<String> storeImageList;
}
package cn.freemud.entities.vo.order;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* @author Clover.z
* @Date 2021/10/19
* @Desc 创建无单订单请求报文实体
*/
@Data
public class CreateCashierOrderVo {
/**
* 用户登陆的session
*/
@ApiModelProperty("用户登陆的session")
@NotEmpty(message = "请先授权登陆")
private String sessionId;
/**
* 商户号
*/
@ApiModelProperty("商户号")
@NotEmpty(message = "商户号必填")
private String partnerId;
/**
* 门店号
*/
@ApiModelProperty("门店号")
@NotEmpty(message = "门店号必填")
private String storeCode;
/**
* 订单金额(单位:分)
*/
@ApiModelProperty("订单金额(单位:分)")
@NotNull(message = "请输入订单金额")
@Min(value = 1, message = "请输入有效的订单金额哟")
private Long orderAmount;
/**
* 小程序版本号
*/
@ApiModelProperty("小程序版本号")
private String version;
}
......@@ -17,6 +17,7 @@ public enum ResponseResult {
PARAMETER_MISSING("40002", "缺少必要参数","Missing required parameter"),
OPERATE_TOO_OFTEN("40003", "忙不过来了,请稍后再试","The system is busy, please try again later"),
LOGIN_STORE_ERROR("40004", "登录门店异常","Login store exception"),
OPERATE_NOT_SUPPORT("40005", "该操作暂不支持","This operation is not support"),
/**
* 用户信息状态码
......@@ -72,6 +73,7 @@ public enum ResponseResult {
STORE_QUERYEXPECTARRIVETIME("43022", "获取门店计算预计送达时间失败",""),
STORE_DATE_ERROR("43023", "门店数据错误",""),
STORE_ITEM_NOT_ADVANCE("43024", "门店未开启预约单配置",""),
STORE_CASHIER_CONFIG_ERROR("43025", "请联系门店开启收银功能哦", "Please contact the store to open the cashier function"),
/**
* 购物车状态码
......
......@@ -4,6 +4,7 @@ import lombok.Getter;
@Getter
public enum UserLoginChannelEnum {
OTHER("0", "其他"),
WEIXIN("1", "微信"),
ALIPAY("2", "支付宝"),
APP("3", "APP"),
......@@ -14,11 +15,19 @@ public enum UserLoginChannelEnum {
*/
TIKTOKPAY("5", "抖音小程序");
private String code;
private String desc;
private final String code;
private final String desc;
UserLoginChannelEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public static UserLoginChannelEnum get(String code) {
for (UserLoginChannelEnum e : values()) {
if (e.getCode().equals(code)) return e;
}
return UserLoginChannelEnum.OTHER;
}
}
......@@ -42,7 +42,9 @@ public class BizExceptionHandler {
@ExceptionHandler(ServiceException.class)
@ResponseStatus(HttpStatus.OK)
public BaseResponse bindException(ServiceException e) {
return ResponseUtil.error(e.getResult());
return null != e.getResult()
? ResponseUtil.error(e.getResult())
: ResponseUtil.error(e.getCode(), e.getMessage());
}
@ExceptionHandler(ParameterException.class)
......
......@@ -13,6 +13,7 @@ public class ServiceException extends RuntimeException {
private ResponseResult result;
private String code;
private String message;
private String enMessage;
......@@ -23,6 +24,16 @@ public class ServiceException extends RuntimeException {
this.enMessage = result.getEnMessage();
}
public ServiceException(String message) {
this.code = ResponseResult.SYSTEM_BUSINESS_ERROR.getCode();
this.message = message;
}
public ServiceException(String code, String message) {
this.code = code;
this.message = message;
}
public ServiceException(ResponseResult result, String message) {
this.result = result;
this.message = message;
......@@ -53,4 +64,12 @@ public class ServiceException extends RuntimeException {
public void setEnMessage(String enMessage) {
this.enMessage = enMessage;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
package cn.freemud.service;
import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.order.CreateCashierOrderDto;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import java.util.Map;
/**
* @author Clover.z
* @Date 2021/10/20
* @Desc 收银订单 service
*/
public interface CashierOrderService {
/**
* 创建无单收银订单
* 不需要查询购物车,没有商品,流程上 只需要创建一个订单然后唤起预支付就行了
* @param createOrderDto 请求数据
* @param member 会员信息
* @return 预支付信息
*/
CreateOrderResponseVo createOrder(CreateCashierOrderDto createOrderDto, AssortmentCustomerInfoVo member);
/**
* 支付成功回调处理
* @param message 支付消息
* @param confirmOrderDto 支付成功消息dto
* @param orderBeans 订单信息
* @return 处理结果json字符串
*/
String paySuccessCallback(PaysuccessNoticeMessage message, ConfirmOrderDto confirmOrderDto, Map<String, OrderBeanV1> orderBeans);
}
......@@ -171,7 +171,7 @@ public class AppOrderServiceImpl implements AppOrderService {
cardCode, createPrepayVo.getPayCode(), createOrderOperateDto.getFatherOrderBean(), createOrderOperateDto.getProductOrderBean(), createOrderOperateDto.getTotalAmount(),
createOrderOperateDto.getCardAmount(), extInfo, transId, OrderClientType.APP);
redisService.savePaymentTransIdOrder(RedisUtil.getPaymentTransIdOrderKey(transId), productOrderBean.getOid(), 60L, TimeUnit.MINUTES);
return payServiceimpl.createPrepayOrder(createPrepayRequestDto);
return ResponseUtil.success(payServiceimpl.createPrepayOrder(createPrepayRequestDto));
}
......
package cn.freemud.service.impl;
import cn.freemud.adapter.LightApplicationConvertToAssortmentSdkAdapter;
import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.StoreResponseDto;
import cn.freemud.entities.dto.order.CreateCashierOrderDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.store.StoreMixResponseDto;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.enums.OrderBeanType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.UserLoginChannelEnum;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CashierOrderService;
import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.store.StoreManager;
import cn.freemud.utils.AppLogUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.request.OrderChangeStateReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.request.order.ConfirmOrderRequest;
import com.google.common.collect.Maps;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
/**
* @author Clover.z
* @Date 2021/10/20
* @Desc
*/
@Service
@RequiredArgsConstructor
public class CashierOrderServiceImpl implements CashierOrderService {
private final StoreManager storeManager;
private final OrderSdkService orderSdkService;
private final PayServiceImpl payService;
private final OrderSdkAdapter orderSdkAdapter;
private final OrderBusinessService orderBusinessService;
/**
* 创建无单收银订单
* 不需要查询购物车,没有商品,流程上 只需要创建一个订单然后唤起预支付就行了
*
* @param createOrderDto 请求数据
* @param member 会员信息
* @return 预支付信息
*/
@Override
public CreateOrderResponseVo createOrder(CreateCashierOrderDto createOrderDto, AssortmentCustomerInfoVo member) {
// 查询门店和配置信息
StoreMixResponseDto storeMix = storeManager.queryStoreMixInfo(createOrderDto.getPartnerId(), createOrderDto.getStoreCode(), query -> {
query.setQueryBusinessInfo(true); query.setQueryStoreInfo(true);
});
if (null == storeMix.getStoreInfo() || null == storeMix.getBusinessInfo()) throw new ServiceException(ResponseResult.STORE_DATE_ERROR);
// 门店未配置收银买单开关或者未配置为 1-开启, 则不允许下单
if (! Objects.equals(storeMix.getBusinessInfo().getCashierPayType(), 1)) throw new ServiceException(ResponseResult.STORE_CASHIER_CONFIG_ERROR);
//创建订单
CreateOrderRequest request = this.generateCreateOrderRequest(storeMix.getStoreInfo(), createOrderDto.getOrderAmount(), member);
OrderBaseResp<OrderInfoReqs> response = orderSdkService.createOrder(request, LogThreadLocal.getTrackingNo());
if (null == response || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) {
throw new ServiceException(ResponseResult.ORDER_CREATE_ERROR);
}
//创建预支付
CreatePrepayRequestDto createPrepayRequestDto = new CreatePrepayRequestDto();
createPrepayRequestDto.setPartnerId(createOrderDto.getPartnerId());
createPrepayRequestDto.setTransId(response.getResult().getOrderCode());
createPrepayRequestDto.setWxAppId(member.getWxAppId());
createPrepayRequestDto.setOpenId(member.getOpenId());
createPrepayRequestDto.setTotalAmount(createOrderDto.getOrderAmount());
createPrepayRequestDto.setChannel(Objects.requireNonNull(PayChannelType.getByIndex(request.getPayChannelType())).getEbcode());
OrderBeanV1 orderBeanV1 = orderSdkAdapter.convent2NEWOrderInfo(response.getResult());
createPrepayRequestDto.setProductOrderBean(orderBeanV1);
createPrepayRequestDto.setFatherOrderBean(orderBeanV1);
return payService.createPrepayOrder(createPrepayRequestDto);
}
private CreateOrderRequest generateCreateOrderRequest(StoreResponseDto storeInfo, Long orderAmount, AssortmentCustomerInfoVo member) {
CreateOrderRequest request = new CreateOrderRequest();
request.setPartnerId(storeInfo.getPartnerId());
request.setStoreId(storeInfo.getStoreCode());
request.setStoreName(storeInfo.getStoreName());
request.setUserId(member.getMemberId());
request.setUserName(member.getNickName());
request.setSettlementAmount(orderAmount);
request.setActualPayAmount(orderAmount);
request.setOriginalAmount(orderAmount);
request.setOrderType(OrderType.GENERAL_DINE_IN.getIndex());
request.setOrderClient(OrderClientType.CASHIER.getIndex());
switch (UserLoginChannelEnum.get(member.getChannel())) {
case ALIPAY:
request.setPayChannel(PayChannelType.ALIPAY.getIndex().toString());
request.setPayChannelType(PayChannelType.ALIPAY.getIndex());
break;
case WEIXIN:
request.setPayChannel(PayChannelType.WECHAT.getIndex().toString());
request.setPayChannelType(PayChannelType.WECHAT.getIndex());
break;
default:
throw new ServiceException(ResponseResult.OPERATE_NOT_SUPPORT);
}
// 无单收银没有商品信息, 这里防止基础服务处理NPE,传一个空的商品集合
request.setOrderItemList(new ArrayList<>());
OrderExtendedReq orderExtended = new OrderExtendedReq();
orderExtended.setOrderClientGroupCode(storeInfo.getParentCode());
orderExtended.setOrderClientGroup(storeInfo.getParentName());
request.setOrderExtended(orderExtended);
request.setOperator(member.getNickName());
request.setAppId(member.getWxAppId());
return request;
}
/**
* 支付成功回调处理
*
* @param message 支付消息
* @param confirmOrderDto 支付成功消息dto
* @param orderBeans 订单信息
* @return 处理结果json字符串
*/
@Override
public String paySuccessCallback(PaysuccessNoticeMessage message, ConfirmOrderDto confirmOrderDto, Map<String, OrderBeanV1> orderBeans) {
OrderBeanV1 orderBean = orderBeans.get(OrderBeanType.SAASORDER.getCode());
ConfirmOrderRequest var1 = LightApplicationConvertToAssortmentSdkAdapter.confirmOrderDtoConvertToConfirmOrderRequest(confirmOrderDto, orderBeans.get(OrderBeanType.MERMBERORDER.getCode()));
var1.setPartnerId(orderBean.getCompanyId());
var1.setUserId(orderBean.getUserId());
var1.setStoreId(orderBean.getShopId());
var1.setOrderType(orderBean.getType());
var1.setProductOrderCode(orderBean.getOid());
var1.setPayDate(DateUtil.convert2String(new Date(), "yyyy-MM-dd HH:mm:ss"));
var1.setPayTransId(message.getOut_trade_no());
var1.setOperator(orderBean.getUserName());
var1.setEndTransId(message.getEndTransId());
var1.setExtInfo(orderBean.getExtInfo());
if(orderBean.getGmtExpect() != null && orderBean.getGmtExpect() != 0){
var1.setExpectTime(DateUtil.convert2String(new Date(orderBean.getGmtExpect()),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
}
try {
// 订单支付成功
orderBusinessService.payAccess(var1);
}catch (Exception e){
AppLogUtil.errorLog("sellCouponPayAccessError", JSONObject.toJSONString(var1),null,e);
}
//支付成功直接完成
OrderChangeStateReq request = new OrderChangeStateReq();
request.setOrderCode(orderBean.getOid());
request.setOrderState(NewOrderStatus.COMPLETE.getIndex());
request.setOperator(orderBean.getUserName());
request.setRemark("已完成");
orderSdkService.updateOrderState(request, LogThreadLocal.getTrackingNo());
Map<String, Object> map = Maps.newTreeMap();
map.put("code", 100);
map.put("message", "success");
return JSONObject.toJSONString(map);
}
}
......@@ -196,7 +196,7 @@ public class CheckOrder {
/**
* 查询门店信息新接口
*/
public SoreMixResponseDto getStoreInfoNew(String partnerId, String shopId, Boolean queryBusinessInfo) {
public StoreMixResponseDto getStoreInfoNew(String partnerId, String shopId, Boolean queryBusinessInfo) {
// 获取门店信息
StoreInfoRequestDto request = new StoreInfoRequestDto();
request.setPartnerId(partnerId);
......@@ -205,7 +205,7 @@ public class CheckOrder {
// query.setQueryStoreInfo(true);
query.setQueryBusinessInfo(queryBusinessInfo);
request.setQuery(query);
StoreBaseResponseDto<SoreMixResponseDto> storeInfoNew = storeClient.getStoreInfoNew(request);
StoreBaseResponseDto<StoreMixResponseDto> storeInfoNew = storeClient.getStoreInfoNew(request);
if (storeInfoNew == null || storeInfoNew.getBizVO() == null) {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
......@@ -219,13 +219,13 @@ public class CheckOrder {
/**
* 查询门店信息新接口
*/
public SoreMixResponseDto getStoreInfoNew(String partnerId, String shopId, StoreInfoRequestDto.QueryInfo query) {
public StoreMixResponseDto getStoreInfoNew(String partnerId, String shopId, StoreInfoRequestDto.QueryInfo query) {
// 获取门店信息
StoreInfoRequestDto request = new StoreInfoRequestDto();
request.setPartnerId(partnerId);
request.setStoreCode(shopId);
request.setQuery(query);
StoreBaseResponseDto<SoreMixResponseDto> storeInfoNew = storeClient.getStoreInfoNew(request);
StoreBaseResponseDto<StoreMixResponseDto> storeInfoNew = storeClient.getStoreInfoNew(request);
if (storeInfoNew == null || storeInfoNew.getBizVO() == null) {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
}
......@@ -271,7 +271,7 @@ public class CheckOrder {
String shopId = createOrderVo.getShopId();
// 获取门店信息
SoreMixResponseDto storeInfoNew = getStoreInfoNew(partnerId, shopId, true);
StoreMixResponseDto storeInfoNew = getStoreInfoNew(partnerId, shopId, true);
BusinessInfoDto businessInfo = storeInfoNew.getBusinessInfo();
return businessInfo;
......@@ -284,9 +284,9 @@ public class CheckOrder {
* @param query
* @return
*/
public SoreMixResponseDto getStoremixDto(String partnerId, String shopId, StoreInfoRequestDto.QueryInfo query) {
public StoreMixResponseDto getStoremixDto(String partnerId, String shopId, StoreInfoRequestDto.QueryInfo query) {
// 获取门店信息
SoreMixResponseDto storeInfoNew = getStoreInfoNew(partnerId, shopId, query);
StoreMixResponseDto storeInfoNew = getStoreInfoNew(partnerId, shopId, query);
return storeInfoNew;
}
......@@ -442,7 +442,7 @@ public class CheckOrder {
// 先暂时这么写, 到时候需要优化这一块 对于门店的请求操作
StoreInfoRequestDto.QueryInfo query = new StoreInfoRequestDto.QueryInfo();
query.setQueryDeliveryInfo(Boolean.TRUE);
SoreMixResponseDto storemixDto = this.getStoremixDto(createOrderVo.getPartnerId(), createOrderVo.getShopId(), query);
StoreMixResponseDto storemixDto = this.getStoremixDto(createOrderVo.getPartnerId(), createOrderVo.getShopId(), query);
DeliveryInfoDTO deliveryInfo = storemixDto.getDeliveryInfo();
Long deliveryLimitAmount = storeDeliveryInfoDto.getDeliveryLimitAmount();
Long totalAmount = shoppingCartGoodsDto.getTotalAmount();
......
......@@ -13,10 +13,6 @@
package cn.freemud.service.impl;
import cn.freemud.adapter.*;
import cn.freemud.amqp.Header;
import cn.freemud.amqp.MQAction;
import cn.freemud.amqp.MQMessage;
import cn.freemud.amqp.MQService;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.KgdRedisKeyConstant;
......@@ -30,10 +26,12 @@ import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseObj;
import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto;
import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.ecology.SendMessageRequest;
import cn.freemud.entities.dto.order.*;
import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.InvoiceCreateResponse;
import cn.freemud.entities.dto.order.InvoiceCreateResponseVo;
import cn.freemud.entities.dto.pay.InvoiceCreateRequest;
import cn.freemud.entities.dto.pay.OrderInvoiceRequest;
import cn.freemud.entities.dto.product.AttributeValue;
import cn.freemud.entities.dto.product.GroupDetail;
import cn.freemud.entities.dto.product.ProductAttributeGroup;
......@@ -53,7 +51,6 @@ import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request;
import cn.freemud.management.entities.dto.response.activity.GroupWorkRefundResponse;
import cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse;
import cn.freemud.management.service.handle.ActivityHandle;
import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.manager.BuyProductOnceManager;
import cn.freemud.manager.OrderManager;
import cn.freemud.manager.OrderTackCodeManager;
......@@ -70,10 +67,15 @@ import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.*;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentCloudPrinter;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerConfig;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerWxappConfig;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxappAuthorizer;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.*;
import com.freemud.api.assortment.datamanager.manager.AssortmentCloudPrinterManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappAuthorizerManager;
import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
......@@ -85,7 +87,6 @@ import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.common.OrderAndShoppingCommonRedisKey;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.RefundBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.request.*;
......@@ -93,18 +94,10 @@ import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderC
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.OrderCountResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQueryRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.CodePayResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQueryResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse;
......@@ -122,13 +115,10 @@ import com.freemud.sdk.api.assortment.order.enums.NewOrderType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.enums.QueryDeliveryType;
import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import com.freemud.sdk.api.assortment.order.response.order.*;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo;
import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest;
import com.freemud.sdk.api.assortment.payment.response.OrderRefundResponse;
import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
......@@ -146,8 +136,6 @@ import tk.mybatis.mapper.util.StringUtil;
import java.math.BigDecimal;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
......@@ -412,7 +400,7 @@ public class OrderServiceImpl implements Orderservice {
CreateOrderOperateDto createOrderOperateDto = (CreateOrderOperateDto) createOrderOperateDtoResponse.getResult();
//创建支付
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto, createOrderVo, createOrderOperateDto, extInfo);
return payServiceImpl.createPrepayOrder(createPrepayRequestDto);
return ResponseUtil.success(payServiceImpl.createPrepayOrder(createPrepayRequestDto));
}
......
......@@ -146,7 +146,7 @@ public class PayServiceImpl {
/**
* 创建预支付订单
*/
public BaseResponse createPrepayOrder(CreatePrepayRequestDto createPrepayRequestDto) {
public CreateOrderResponseVo createPrepayOrder(CreatePrepayRequestDto createPrepayRequestDto) {
CreateOrderResponseVo createOrderResponse;
OrderPayResponse orderPayResponse = null;
......@@ -185,13 +185,13 @@ public class PayServiceImpl {
|| ResponseCodeConstant.NOT_SUFFICIENT_FUND.equals(orderPayResponse.getPayTransId())) ?
orderPayResponse.getMsg() : "支付失败");
}
return baseResponse;
throw new ServiceException(baseResponse.getCode(), baseResponse.getMessage());
}
createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, createPrepayRequestDto.getProductOrderBean());
//更新订单支付信息
BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, createPrepayRequestDto.getOrderExtInfoDTO(), createPrepayRequestDto.getProductOrderBean(), LogThreadLocal.getTrackingNo());
if (baseEditResponse != null) {
return baseEditResponse;
throw new ServiceException(baseEditResponse.getCode(), baseEditResponse.getMessage());
}
if (totalAmount > 0 && StringUtils.isBlank(cardCode) && Objects.isNull(createPrepayRequestDto.getUnionPayCard())) {
createOrderResponse.setPaySuccess(false);
......@@ -203,7 +203,7 @@ public class PayServiceImpl {
createOrderResponse.setPaySuccess(true);
}
if (!createOrderResponse.getPaySuccess()) {
return ResponseUtil.success(createOrderResponse);
return createOrderResponse;
} else {
//如果是商品券支付0元,调用回调接口
/**
......@@ -220,7 +220,7 @@ public class PayServiceImpl {
message.setMerchant_coupon(0);
message.setSource(PaySuccessSource.OUTSIDE.getSource());
orderAdapterService.paySuccessCallback(message);
return ResponseUtil.success(createOrderResponse);
return createOrderResponse;
}
}
......
......@@ -270,7 +270,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
orderExtInfoDto.setSaleCouponPhone(requestVo.getSaleCouponPhone());
createPrepayRequestDto.setOrderExtInfoDTO(orderExtInfoDto);
return payService.createPrepayOrder(createPrepayRequestDto);
return ResponseUtil.success(payService.createPrepayOrder(createPrepayRequestDto));
}
/**
......@@ -416,7 +416,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
orderExtInfoDto.setFromAppId(userLoginInfoDto.getWxAppId());
createPrepayRequestDto.setOrderExtInfoDTO(orderExtInfoDto);
return payService.createPrepayOrder(createPrepayRequestDto);
return ResponseUtil.success(payService.createPrepayOrder(createPrepayRequestDto));
}
......@@ -558,7 +558,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
orderExtInfoDto.setStationId(stationid);
createPrepayRequestDto.setOrderExtInfoDTO(orderExtInfoDto);
return payService.createPrepayOrder(createPrepayRequestDto);
return ResponseUtil.success(payService.createPrepayOrder(createPrepayRequestDto));
}
......
......@@ -193,7 +193,7 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService {
}
/*创建支付*/
CreatePrepayRequestDto createPrepayRequestDto = spellGroupOrderAdapter.convertToCreatePrepayRequest(userLoginInfoDto, createOrderResponse.getData(), trackingNo,createSpellGroupOrderDto.getProvince());
return payServiceimpl.createPrepayOrder(createPrepayRequestDto);
return ResponseUtil.success(payServiceimpl.createPrepayOrder(createPrepayRequestDto));
}
/***
......
package cn.freemud.service.store;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.store.StoreMixResponseDto;
import cn.freemud.entities.dto.store.StoreBaseResponseDto;
import cn.freemud.entities.dto.store.StoreInfoRequestDto;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.thirdparty.StoreClient;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.function.Consumer;
/**
* @author Clover.z
* @Date 2021/10/20
* @Desc
*/
@Service
@RequiredArgsConstructor
public class StoreManager {
private final StoreClient storeClient;
/**
* 查询门店相关聚合信息
* @param partnerId 商户号
* @param storeCode 门店号
* @param q 设置查询数据的func
* @return
*/
public StoreMixResponseDto queryStoreMixInfo(String partnerId, String storeCode, Consumer<StoreInfoRequestDto.QueryInfo> q) {
StoreInfoRequestDto request = new StoreInfoRequestDto(partnerId, storeCode);
StoreInfoRequestDto.QueryInfo query = new StoreInfoRequestDto.QueryInfo();
q.accept(query);
request.setQuery(query);
StoreBaseResponseDto<StoreMixResponseDto> response = storeClient.getStoreInfoNew(request);
if (null == response || !ResponseCodeConstant.RESPONSE_SUCCESS.equals(response.getStatusCode()) || null == response.getBizVO()) {
throw new ServiceException(ResponseResult.STORE_DATE_ERROR);
}
return response.getBizVO();
}
}
......@@ -12,12 +12,9 @@
*/
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.store.SoreMixResponseDto;
import cn.freemud.entities.dto.store.StoreMixResponseDto;
import cn.freemud.entities.dto.store.StoreBaseResponseDto;
import cn.freemud.entities.dto.store.StoreInfoRequestDto;
import com.freemud.application.sdk.api.storecenter.request.ChangeTableOrderStateRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreBaseResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -63,5 +60,5 @@ public interface StoreClient {
* 查询门店信息
*/
@PostMapping(value = "/api/v2/organization/getStoreMix", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
StoreBaseResponseDto<SoreMixResponseDto> getStoreInfoNew(@RequestBody StoreInfoRequestDto request);
StoreBaseResponseDto<StoreMixResponseDto> getStoreInfoNew(@RequestBody StoreInfoRequestDto request);
}
......@@ -41,6 +41,7 @@ public enum OrderClientType {
ASSISTANT(29, "非码小助手"),
SHERPAS(30,"食派士"),
PARKING(99 , "农工商停车"),
CASHIER(36, "收银买单"),
;
......
......@@ -12,6 +12,7 @@
*/
package com.freemud.application.sdk.api.ordercenter.request.create;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.BaseRequest;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import lombok.Data;
......@@ -59,17 +60,28 @@ public class CreateOrderRequest extends BaseRequest {
*/
private Boolean isParent;
//默认为待支付状态,如需要则设置对应的值
/**
* 默认为待支付状态,如需要则设置对应的值订单状态 1:待支付 2:下单 3:已接单 4:制作完成(待发货) 5:配送中 6:已完 7:已关闭
*/
private Integer orderState;
//正常情况下不要设置值,此字段仅在做订单同步时使用 订单子状态
private Integer orderSubState;
//订单类型 店内自取实时-1常规堂食 店内自取预约-2预约堂食 店外快递实时-3常规外卖,
// 店外快递预约-4预约外卖 店外自取实时-5常规自取 店外自取预约-6预约自取
/**
* 订单类型
* 店内自取实时-1常规堂食
* 店内自取预约-2预约堂食
* 店外快递实时-3常规外卖,
* 店外快递预约-4预约外卖
* 店外自取实时-5常规自取
* 店外自取预约-6预约自取
*/
private Integer orderType;
//正常情况下不要设置值,此字段仅在做订单同步时使用
/**
* 正常情况下不要设置值,此字段仅在做订单同步时使用 支付状态 1:未支付 2:已支付 3:已退款 4:部分退款
*/
private Integer payState;
//1:线上支付 2:线下支付
......@@ -90,16 +102,23 @@ public class CreateOrderRequest extends BaseRequest {
//订单原始金额,单位分
private Long originalAmount;
//用户在界面上看到的支付金额
/**
* 用户在界面上看到的支付金额
*/
private Long settlementAmount;
//实际支付现金金额,扣除支付自生优惠,单位分
/**
* 实际支付现金金额,扣除支付自生优惠,单位分
*/
private Long actualPayAmount;
//是否需要开发票
private Boolean needInvoice;
//下单渠道必填,根据此字段的值判断是自营或第三方,来走不同的状态机 详细见 orderClientType枚举
/**
* 下单渠道必填,根据此字段的值判断是自营或第三方,来走不同的状态机 详细见 orderClientType枚举
* @see OrderClientType
*/
private Integer orderClient;
//商户自己生成的订单号
......@@ -171,9 +190,8 @@ public class CreateOrderRequest extends BaseRequest {
//打印次数
private Integer printNum;
//订单业务类型 1:普通订单 2:虚拟订单
/**
* 1: ; 2:
* 默认不填=1,订单业务类型 1:普通订单 2:虚拟订单 3:会员订单 4:积分商城订单 5:储值卡订单 6:卖券订单 97 农工商停车自助积分订单 98:农工商停车手工录单 99:农工商停车订单
*/
private Integer bizType;
......
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