Commit dfc1eb62 by ping.wu

积分商城

parent 520fecdf
package cn.freemud.amp.config;
import com.freemud.application.sdk.api.config.TopicExchangeConfig;
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
public class DlSendCouponMqConfig {
public static final String EXCHANGE_NAME = "topic-Exchange";
public static final String QUEUE_NAME = "send-coupon-order-queue";
public static final String QUEUE_ROUTING_KEY = "send-coupon-order-queue-routing-key";
public static final String QUERY_DL_QUEUE_NAME = "send-coupon-order-queue_dl_queue";
public static final String QUERY_DL_ROUTING_KEY = "send-coupon-order-queue_dl_key";
@Bean("dlSendCouponMqTopicExchange")
public Exchange dlSendCouponMqTopicExchange() {
return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
}
/**
* 写入RabbitMQ使用的默认队列
*
* @return
*/
@Bean("sendCouponQueueName")
public Queue sendCouponChangeQueue() {
return QueueBuilder.durable(QUEUE_NAME).build();
}
/**
* 绑定消息队列
*
* @param queue 消息队列
* @param topicExchange RabbitMQ Fanout Exchange
* @return 消息队列绑定
*/
@Bean("bindingSendCouponQueueChange")
Binding bindingSendCouponChange(@Qualifier("sendCouponQueueName") Queue queue, @Qualifier("dlSendCouponMqTopicExchange") Exchange topicExchange) {
return BindingBuilder.bind(queue).to(topicExchange).with(QUEUE_ROUTING_KEY).noargs();
}
@Bean("sendCouponChangeDlQueue")
public Queue sendCouponChangeDlQueue() {
Map<String, Object> delayQueueParams = new HashMap<>(2);
// DLX,dead letter发送到的exchange
delayQueueParams.put("x-dead-letter-exchange", TopicExchangeConfig.EXCHANGE_NAME);
// dead letter携带的routing key
delayQueueParams.put("x-dead-letter-routing-key", QUEUE_ROUTING_KEY);
return QueueBuilder.durable(QUERY_DL_QUEUE_NAME).withArguments(delayQueueParams).build();
}
@Bean("bindingSendCouponDlChange")
Binding bindingSendCouponDlChange(@Qualifier("sendCouponChangeDlQueue") Queue queue, @Qualifier("dlSendCouponMqTopicExchange") Exchange topicExchange) {
Map<String, Object> args = new HashMap<>(2);
args.put("x-dead-letter-exchange", TopicExchangeConfig.EXCHANGE_NAME);
args.put("x-dead-letter-routing-key", QUEUE_ROUTING_KEY);
return BindingBuilder.bind(queue).to(topicExchange).with(QUERY_DL_ROUTING_KEY).and(args);
}
}
package cn.freemud.amp.service;
import cn.freemud.amp.config.DlSendCouponMqConfig;
import cn.freemud.amqp.Header;
import cn.freemud.amqp.MQAction;
import cn.freemud.amqp.MQMessage;
import cn.freemud.amqp.MQService;
import cn.freemud.utils.AppLogUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class SendCouponService {
@Autowired
private MQService mqService;
public void sendCouponMq(OrderInfoReqs request) {
AppLogUtil.infoLog("sendCouponMq", JSONObject.toJSONString(request.getOrderCode()), null);
Header header = new Header(MQAction.INSERT.getAction(), "order-application-service", "1", DlSendCouponMqConfig.QUEUE_NAME);
MQMessage<OrderInfoReqs> message = new MQMessage<>(header, request);
mqService.convertAndSend(DlSendCouponMqConfig.EXCHANGE_NAME, DlSendCouponMqConfig.QUEUE_ROUTING_KEY, message);
}
}
......@@ -19,10 +19,7 @@ import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
import cn.freemud.handler.OrderReportJobHandler;
import cn.freemud.monitorcenter.tools.HealthUtil;
import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.MCCafeOrderService;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice;
import cn.freemud.service.*;
import cn.freemud.service.impl.MallOrderServiceImpl;
import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.ResponseUtil;
......@@ -57,6 +54,8 @@ public class OrderController {
private OrderReportJobHandler orderReportJobHandler;
@Autowired
private OrderCountJobHandler orderCountJobHandler;
@Autowired
private PointsMallOrderService pointsMallOrderService;
/**
* 创建订单之前校验前面排队的订单数
......@@ -377,12 +376,21 @@ public class OrderController {
}
/**
* 积分兑换记录查询(农工商)
* 积分兑换记录查询(农工商加开个店积分商城
*/
@ApiAnnotation(logMessage = "scoreRecord")
@PostMapping("/scoreRecord")
public BaseResponse scoreRecord(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) {
return orderservice.scoreRecord(queryOrderVo);
return pointsMallOrderService.scoreRecord(queryOrderVo);
}
/**
* 积分兑换记录查询详情
*/
@ApiAnnotation(logMessage = "scoreRecord")
@PostMapping("/scoreRecordInfo")
public BaseResponse scoreRecordDetail(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) {
return pointsMallOrderService.scoreRecordDetail(queryOrderVo);
}
......
......@@ -20,7 +20,7 @@ import java.util.List;
public class UpdatePointsMallStocksRequest {
// @ApiModelProperty(value = "1增加库存或兑换数量,2减少库存,3修改库存,兑换数量只支持新增", required = true)
public String changeType;
public Integer changeType;
// @ApiModelProperty(value = "交易号, maxLength = 36", required = true)
public String transNo;
......@@ -37,5 +37,7 @@ public class UpdatePointsMallStocksRequest {
// @ApiModelProperty(value = "会员编号", required = true)
public String memberId;
public String partnerId;
}
package cn.freemud.entities.dto.user;
import lombok.Data;
@Data
public class CustomerPropertyBaseResponse<T> {
protected String code;
protected String message;
protected T data;
}
package cn.freemud.entities.dto.user;
import lombok.Data;
@Data
public class PayScoreResponse {
/**
* 当前积分
*/
private Integer currentScore;
/**
* 变化积分数
*/
private Integer updateScore;
/**
* 交易流水号
*/
private String recordId;
}
package cn.freemud.entities.dto.user;
import lombok.Data;
@Data
public class StatislScoreResponse {
// @ApiModelProperty("当前可用积分")
private Integer currentScore;
// @ApiModelProperty("历史累计积分")
private Integer totalScore;
// @ApiModelProperty("已使用积分")
private Integer usedScore;
// @ApiModelProperty("本月即将过期积分")
private Integer currentProbablyExpireScore;
// @ApiModelProperty("参数status为1并且memberId不为空时,有此返回值")
private Integer expireSoonScore;
/**
* expireSoonScore为空并且expireSoonDate不为空,说明该用户无可用积分。
* expireSoonScore不为空并且expireSoonDate为空,说明积分永不失效
*/
// @ApiModelProperty("参数status为1并且memberId不为空时,有此返回值。")
private String expireSoonDate;
}
......@@ -2,16 +2,16 @@ package cn.freemud.entities.dto.user;
import lombok.Data;
@Data
public class UserScoreRequest {
public class StatisticalScoreRequestVo {
private Integer reduceAmount;
private String scoreOrderNo;
private Integer UseScore;
private Integer changeType;
private Integer operationType;
private String memberId;
// @NotEmpty(message = "partnerId 不能为空")
private String partnerId;
private String storeId;
// @ApiModelProperty("会员编号")
private String memberId;
// @ApiModelProperty("是否查询即将到期积分{0:否,1:是}")
private Integer status;
}
package cn.freemud.entities.dto.user;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UseScoreRequest {
/**
* 商户编号 Y
*/
private String partnerId;
/**
* 会员编号 Y
*/
private String memberId;
/**
* 变动积分 Y
*/
private Integer changeScore;
/**
* Y
* 操作类型{1消费送积分2积分支付退回3积分签到4手动赠送5等级升级送积分6割接7生日送8注册送9完善送10消费满赠11手动扣减12积分兑换13积分清理14积分支付15消费送积分扣回16等级升级退积分17消费满赠扣回}
*/
private Integer operationType;
/**
* 操作名称{1消费送积分2积分支付退回3积分签到4手动赠送5等级升级送积分6割接7生日送8注册送9完善送10消费满赠11手动扣减12积分兑换13积分清理14积分支付15消费送积分扣回16等级升级退积分17消费满赠扣回}
*/
private String operationName;
/**
* 变动类型{1新增 2扣减}
*/
private Integer changeType;
/**
* 订单编号
*/
private String orderId;
/**
* 机构编码
*/
private String orgCode;
/**
* 机构类型{1总公司2分公司3门店}
*/
private Integer orgType;
/**
* 备注
*/
private String remark;
/**
* 业务ID{调用方保证唯一} Y
*/
private String idempotencyBussinessId;
/**
* Y
* 业务类型{1注册送 2发放经验值 3等级升级 4等级降级 5积分支付 6消费送积分 7消费满赠 8生日送 9定时送 10储值支付 11储值充值 12完善资料送 13等级升级送积分 14储值卡投放 15会员消费数据增加 16会员消费数据冲正}
*/
private String idempotencyBussinessType;
@ApiModelProperty("是否查询子品牌积分规则")
private Boolean isGetSubBrandRule = false;
@ApiModelProperty("子品牌编号")
private String subBrandCode;
@ApiModelProperty("应用编号")
private String appId;
}
......@@ -35,4 +35,26 @@ public class ScoreRecordVo {
//数量
private Integer productQuantity;
private Integer orderStatus;
private String productPicUrl;
private Integer productType;
//积分价格
private Integer integralPrice;
//现金价格(分)
private Integer cashPrice;
/**
* 配送渠道名称
*/
private String expressChannelName;
/**
* 配送渠道编号
*/
private String expressChannelCode;
}
......@@ -21,11 +21,16 @@ import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
public interface EncircleOrderService {
/**
* 创建订单
*/
BaseResponse createOrder(CreateOrderVo createOrderVo);
/**
* 围餐--开台
* @param createOrderVo
* @return
*/
BaseResponse createReserveOrder(CreateOrderVo createOrderVo);
// BaseResponse createReserveOrder(CreateOrderVo createOrderVo);
/**
* 查询桌号是否开台
......@@ -38,7 +43,7 @@ public interface EncircleOrderService {
* @param createReserveOrderVo
* @return
*/
BaseResponse updateReserveOrder(CreateReserveOrderVo createReserveOrderVo);
// BaseResponse updateReserveOrder(CreateReserveOrderVo createReserveOrderVo);
/**
* 围餐--预览订单
......@@ -52,7 +57,7 @@ public interface EncircleOrderService {
* @param createReserveOrderVo
* @return
*/
BaseResponse createPrepaymentOrder(CreateReserveOrderVo createReserveOrderVo);
// BaseResponse createPrepaymentOrder(CreateReserveOrderVo createReserveOrderVo);
/**
* 清台
......
......@@ -159,7 +159,7 @@ public interface Orderservice {
BaseResponse spellGroupOrderFailRefund(SpellGroupFailRefundVo refundVo);
BaseResponse scoreRecord(QueryOrderVo queryOrderVo);
// BaseResponse scoreRecord(QueryOrderVo queryOrderVo);
/**
* 【ID1028455】 【订单】非码-腾讯有数数据上报V1.0.0
......
......@@ -2,6 +2,7 @@ package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderVo;
public interface PointsMallOrderService {
......@@ -9,4 +10,9 @@ public interface PointsMallOrderService {
* 创建订单
*/
BaseResponse createOrder(CreateOrderVo createOrderVo);
BaseResponse scoreRecord(QueryOrderVo queryOrderVo);
BaseResponse scoreRecordDetail(QueryOrderVo queryOrderVo);
}
......@@ -121,6 +121,36 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
private static FastDateFormat dateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
@Override
public BaseResponse createOrder(CreateOrderVo createOrderVo) {
BaseResponse baseResponse = null;
CreateReserveOrderVo createReserveOrderVo = new CreateReserveOrderVo();
createReserveOrderVo.setCarVer(createOrderVo.getCarVer());
createReserveOrderVo.setRepastNumber(createOrderVo.getPeopleNumber());
createReserveOrderVo.setSessionId(createOrderVo.getSessionId());
createReserveOrderVo.setOrderUpdateVer(createOrderVo.getOrderUpdateVer());
createReserveOrderVo.setCouponCode(createOrderVo.getCouponCode());
createReserveOrderVo.setUseCustomerScore(createOrderVo.getUseCustomerScore());
createReserveOrderVo.setCardCode(createOrderVo.getCardCode());
if (createOrderVo.getOperation() == null) {
throw new ServiceException(ResponseResult.ORDER_CREATE_OPERATION_ERROR);
}
switch (createOrderVo.getOperation()) {
case 2:// 开台
baseResponse = this.createReserveOrder(createOrderVo);
break;
case 3:// 下单
baseResponse = this.updateReserveOrder(createReserveOrderVo);
break;
case 4:// 创建预支付订单
baseResponse = this.createPrepaymentOrder(createReserveOrderVo);
break;
default:
throw new ServiceException(ResponseResult.ORDER_CREATE_OPERATION_ERROR);
}
return baseResponse;
}
public BaseResponse createReserveOrder(CreateOrderVo createOrderVo) {
//查询用户缓存信息(用户信息,用户绑定桌号信息)
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createOrderVo.getSessionId());
......@@ -267,7 +297,6 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
}
@Override
public BaseResponse updateReserveOrder(CreateReserveOrderVo createReserveOrderVo) {
//获取缓存(用户信息,桌号信息,桌号与订单号信息)
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createReserveOrderVo.getSessionId());
......@@ -458,7 +487,6 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
}
@Override
public BaseResponse createPrepaymentOrder(CreateReserveOrderVo createReserveOrderVo) {
//获取缓存(用户信息,桌号信息,桌号与订单号信息)
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createReserveOrderVo.getSessionId());
......
......@@ -130,51 +130,20 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
// 扩展字段中存储 sessionKey
createOrderVo.setSessionKey(assortmentCustomerInfoVo.getSessionKey());
if (IappIdType.WC_XCX.getCode().equals(assortmentCustomerInfoVo.getIappId())) { //i围餐
BaseResponse baseResponse = null;
CreateReserveOrderVo createReserveOrderVo = new CreateReserveOrderVo();
createReserveOrderVo.setCarVer(createOrderVo.getCarVer());
createReserveOrderVo.setRepastNumber(createOrderVo.getPeopleNumber());
createReserveOrderVo.setSessionId(createOrderVo.getSessionId());
createReserveOrderVo.setOrderUpdateVer(createOrderVo.getOrderUpdateVer());
createReserveOrderVo.setCouponCode(createOrderVo.getCouponCode());
createReserveOrderVo.setUseCustomerScore(createOrderVo.getUseCustomerScore());
createReserveOrderVo.setCardCode(createOrderVo.getCardCode());
if (createOrderVo.getOperation() == null) {
throw new ServiceException(ResponseResult.ORDER_CREATE_OPERATION_ERROR);
}
switch (createOrderVo.getOperation()) {
case 2:// 开台
baseResponse = encircleOrderService.createReserveOrder(createOrderVo);
break;
case 3:// 下单
baseResponse = encircleOrderService.updateReserveOrder(createReserveOrderVo);
break;
case 4:// 创建预支付订单
baseResponse = encircleOrderService.createPrepaymentOrder(createReserveOrderVo);
break;
default:
throw new ServiceException(ResponseResult.ORDER_CREATE_OPERATION_ERROR);
}
return baseResponse;
return encircleOrderService.createOrder(createOrderVo);
}
/**
* 积分商城
*/
//积分商城
if (OrderChannelType.POINTSMALL.getCode().equals(createOrderVo.getChannelType())) {
return pointsMallOrderService.createOrder(createOrderVo);
}
/**
* 商城订单
*/
//微商城订单
if (OrderChannelType.SAASMALL.getCode().equals(createOrderVo.getChannelType())) {
return mallOrderService.createOrder(createOrderVo);
}
/**
* APP下单
*/
//APP下单
if (UserLoginChannelEnum.APP.getCode().equals(assortmentCustomerInfoVo.getChannel())) {
return appOrderService.createOrderFlow(createOrderVo);
}
......
......@@ -4075,66 +4075,6 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success();
}
@Override
public BaseResponse scoreRecord(QueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
Date startDate;
Date endDate;
if (StringUtils.isBlank(queryOrderVo.getStartDate()) || StringUtils.isBlank(queryOrderVo.getEndDate())) {
Date now = new Date();
startDate = DateUtil.addMonths(now, -6);
endDate = DateUtil.addDays(now, 1);
} else {
String startDateStr = queryOrderVo.getStartDate() + " 00:00:00";
String endDateStr = queryOrderVo.getEndDate() + " 23:59:59";
startDate = DateUtil.convert2Date(startDateStr, "yyyy-MM-dd HH:mm:ss");
if (startDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单开始时间格式不正确");
}
endDate = DateUtil.convert2Date(endDateStr, "yyyy-MM-dd HH:mm:ss");
if (endDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单结束时间格式不正确");
}
}
OrderConditionsReq queryOrdersDto = new OrderConditionsReq();
queryOrdersDto.setUserId(userLoginInfoDto.getMemberId());
queryOrdersDto.setPartnerId(userLoginInfoDto.getPartnerId());
queryOrdersDto.setPageSize(queryOrderVo.getPageSize() != null ? queryOrderVo.getPageSize() : 500);
queryOrdersDto.setPageNum(queryOrderVo.getPageNumber() != null ? queryOrderVo.getPageNumber() : 1);
queryOrdersDto.setStartTimestamp(startDate.getTime() / 1000);
queryOrdersDto.setEndTimestamp(endDate.getTime() / 1000);
queryOrdersDto.setOrderClients(Arrays.asList(OrderClientType.I_MEMBER.getIndex()));
queryOrdersDto.setBizType(4);
queryOrdersDto.setOrderStatus(OrderStatus.CALCEL.getCode());
// queryOrdersDto.setPayStatuses(Arrays.asList(PayStatus.HAVE_PAID.getCode()));
BaseDownLoadResponse<List<OrderInfoReqs>> response = orderDownLoadSdkService.queryOrderByConditions(queryOrdersDto, LogThreadLocal.getTrackingNo());
List<ScoreRecordVo> result = new ArrayList<>();
if (null == response || null == response.getResult()) {
return ResponseUtil.success(result);
}
List<OrderInfoReqs> list = response.getResult();
list.forEach(order -> {
ScoreRecordVo responseVo = new ScoreRecordVo();
responseVo.setOrderCode(order.getOrderCode());
if (order.getCreateTime() != null) {
responseVo.setCreateTime(Long.parseLong(order.getCreateTime()));
}
if (CollectionUtils.isNotEmpty(order.getOrderItemList())) {
responseVo.setProductName(order.getOrderItemList().get(0).getProductName());
responseVo.setProductQuantity(order.getOrderItemList().get(0).getProductQuantity());
}
result.add(responseVo);
});
return ResponseUtil.success(result);
}
@Override
public BaseResponse<List<OrderCountResp>> selectCountOrdersByPartnerIds(OrderCountRequestVo orderCountRequestVo, String trackingNo) {
OrderCountReqs orderCountReqs = new OrderCountReqs();
......
package cn.freemud.service.impl;
import cn.freemud.amp.service.SendCouponService;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.Active;
import cn.freemud.entities.dto.BatchQueryActivityInfoRequestDto;
import cn.freemud.entities.dto.BatchQueryActivityInfoResponseDto;
import cn.freemud.entities.dto.product.pointsmall.*;
import cn.freemud.entities.dto.user.UserScoreRequest;
import cn.freemud.entities.dto.user.CustomerPropertyBaseResponse;
import cn.freemud.entities.dto.user.StatislScoreResponse;
import cn.freemud.entities.dto.user.StatisticalScoreRequestVo;
import cn.freemud.entities.dto.user.UseScoreRequest;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderVo;
import cn.freemud.entities.vo.ScoreRecordVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.CouponService;
import cn.freemud.service.PointsMallOrderService;
import cn.freemud.service.thirdparty.CustomerPropertyClient;
import cn.freemud.service.thirdparty.PointMallProductClient;
import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.OrderAffirmReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.PaySuccessReq;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.sdk.api.assortment.order.request.order.OrderProductAddInfoDto;
import com.freemud.sdk.api.assortment.order.request.order.ProductBindingCouponType;
......@@ -50,7 +65,10 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
private CouponService couponService;
@Autowired
private CustomerPropertyClient customerPropertyClient;
@Autowired
private SendCouponService sendCouponService;
@Autowired
private OrderDownLoadSdkService orderDownLoadSdkService;
@Override
......@@ -62,9 +80,11 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
String partnerId = userLoginInfoDto.getPartnerId();
String storeId = "99999";
String memberId = userLoginInfoDto.getMemberId();
String appId = userLoginInfoDto.getAppId();
String skuId = "";
if(CollectionUtils.isNotEmpty(createOrderVo.getProducts())){
if (CollectionUtils.isNotEmpty(createOrderVo.getProducts())) {
skuId = createOrderVo.getProducts().get(0).getSkuId();
}
//查询商品信息并且校验用户是否能购买 /product/listProductInfo 查询积分商品详情,可根据入参校验商品
......@@ -74,53 +94,64 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
productInfoRequest.setValidateMember(true);
productInfoRequest.setValidateStock(true);
productInfoRequest.setValidateTime(true);
// PointMallListProductInfoResponse<IntegralProductType> productInfosDto = pointMallProductClient.listProductInfo(productInfoRequest);
PointMallListProductInfoResponse<IntegralProductType> productInfosDto = new PointMallListProductInfoResponse<>();
IntegralProductType integralProductType = new IntegralProductType();
integralProductType.setProductType(2);
integralProductType.setIntegralPrice(1);
integralProductType.setCashPrice(1);
productInfosDto.setStatusCode(100);
productInfosDto.setResult(integralProductType);
if(!Objects.equals(100,productInfosDto.getStatusCode())){
return ResponseUtil.error(productInfosDto.getStatusCode().toString(),productInfosDto.getMessage());
PointMallListProductInfoResponse<List<IntegralProductType>> productInfosDto = pointMallProductClient.listProductInfo(productInfoRequest);
if (!Objects.equals(100, productInfosDto.getStatusCode()) || CollectionUtils.isEmpty(productInfosDto.getResult())) {
return ResponseUtil.error("101", "商品异常");
}
String activityCode = productInfosDto.getResult().getCouponCode();
Integer points = productInfosDto.getResult().getIntegralPrice();
boolean isCoupon = productInfosDto.getResult().getProductType() == 1;
IntegralProductType integralProductType = productInfosDto.getResult().get(0);
if(!Objects.equals(1,integralProductType.getExchangeType())){
return ResponseUtil.error("101","积分商城暂不支持现金兑换");
}
// integralProductType.setIntegralPrice(2);
// integralProductType.setCashPrice(0);
// integralProductType.setExchangeType(1);
Integer points = integralProductType.getIntegralPrice();
Integer exchangeType = integralProductType.getExchangeType();
boolean isCoupon = integralProductType.getProductType() == 1;
Active active = null;
if(isCoupon){
if (isCoupon) {
String activityCode = integralProductType.getCouponCode();
//券商品查询券活动信息校验券有效 
BatchQueryActivityInfoRequestDto queryActivityInfoRequestDto = new BatchQueryActivityInfoRequestDto();
queryActivityInfoRequestDto.setActiveCode(Arrays.asList(activityCode));
// queryActivityInfoRequestDto.setActiveCode(Arrays.asList("V1628760321931083"));
queryActivityInfoRequestDto.setPartnerId(Integer.valueOf(partnerId));
BatchQueryActivityInfoResponseDto batchQueryActivityInfoResponseDto = couponService.batchQueryActivityInfo(queryActivityInfoRequestDto);
if(!Objects.equals("100",batchQueryActivityInfoResponseDto.getStatusCode())){
return ResponseUtil.error(batchQueryActivityInfoResponseDto.getStatusCode(),"优惠券异常");
if (!Objects.equals("0", batchQueryActivityInfoResponseDto.getStatusCode())) {
return ResponseUtil.error(batchQueryActivityInfoResponseDto.getStatusCode(), "优惠券异常");
}
active = batchQueryActivityInfoResponseDto.getActivities().get(0);
}
if (exchangeType != 2) {
//查询积分信息
StatisticalScoreRequestVo statisticalScoreRequest = new StatisticalScoreRequestVo();
statisticalScoreRequest.setPartnerId(userLoginInfoDto.getPartnerId());
statisticalScoreRequest.setMemberId(userLoginInfoDto.getMemberId());
CustomerPropertyBaseResponse<StatislScoreResponse> statislScoreResponseBaseResponse = customerPropertyClient.statisticalScore(statisticalScoreRequest);
if (!Objects.equals("100", statislScoreResponseBaseResponse.getCode())) {
return ResponseUtil.error(statislScoreResponseBaseResponse.getCode(), "查询积分异常");
}
if (statislScoreResponseBaseResponse.getData() != null && statislScoreResponseBaseResponse.getData().getCurrentScore() < points) {
return ResponseUtil.error(statislScoreResponseBaseResponse.getCode(), "积分不足");
}
}
//创建订单 order/v2/create
OrderItemCreateReq orderItemCreateReq = convent2OrderItemCreateReq(productInfosDto.getResult(), partnerId, skuId, active);
CreateOrderRequest createOrderRequest = convent2NEWCreateOrderRequest(OrderClientType.I_MEMBER.getIndex(),userLoginInfoDto,
orderItemCreateReq,"","","",4,orderItemCreateReq.getProductPrice());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> createOrderResponse = orderSdkService.createOrder(createOrderRequest, "");
if(!Objects.equals("100",createOrderResponse.getCode())){
return ResponseUtil.error(createOrderResponse.getCode(),"创建订单异常");
}
String orderCode= createOrderResponse.getResult().getOrderCode();
//扣减积分商品商品库存  /stock/update
//创建订单
CreateOrderRequest createOrderRequest = convent2NEWCreateOrderRequest(OrderClientType.I_MEMBER.getIndex(), userLoginInfoDto,
storeId, "", "", 4, integralProductType, skuId, active);
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> createOrderResponseDto = orderSdkService.createOrder(createOrderRequest, "");
if (!Objects.equals("100", createOrderResponseDto.getCode())) {
return ResponseUtil.error(createOrderResponseDto.getCode(), "创建订单异常");
}
String orderCode = createOrderResponseDto.getResult().getOrderCode();
//扣减积分商品商品库存
UpdatePointsMallStocksRequest updatePointsMallStocksRequest = new UpdatePointsMallStocksRequest();
updatePointsMallStocksRequest.setPartnerId(partnerId);
updatePointsMallStocksRequest.setMemberId(memberId);
updatePointsMallStocksRequest.setChangeType("2");
updatePointsMallStocksRequest.setRemark("积分兑换");
updatePointsMallStocksRequest.setTransTime(DateUtil.convert2String(new Date(),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
updatePointsMallStocksRequest.setChangeType(2);
updatePointsMallStocksRequest.setRemark("积分商城兑换");
updatePointsMallStocksRequest.setTransTime(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
updatePointsMallStocksRequest.setTransNo(orderCode);
ProductStockRequest productStockRequest = new ProductStockRequest();
productStockRequest.setProductId(skuId);
......@@ -128,53 +159,221 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
productStockRequest.setStockNumber(1);
updatePointsMallStocksRequest.setProductStocks(Arrays.asList(productStockRequest));
PointMallListProductInfoResponse pointMallListProductInfoResponse = pointMallProductClient.updateStock(updatePointsMallStocksRequest);
if(!Objects.equals(100,pointMallListProductInfoResponse.getStatusCode())){
return ResponseUtil.error(createOrderResponse.getCode(),"扣减库存失败");
if (!Objects.equals(100, pointMallListProductInfoResponse.getStatusCode())) {
return ResponseUtil.error(pointMallListProductInfoResponse.getStatusCode().toString(), "扣减库存失败");
}
//扣减积分 (失败:失败冲正活动库存)
UserScoreRequest userScoreRequest = new UserScoreRequest();
boolean isReduce = true;
if (exchangeType != 2) {
UseScoreRequest userScoreRequest = new UseScoreRequest();
userScoreRequest.setMemberId(memberId);
userScoreRequest.setPartnerId(partnerId);
userScoreRequest.setReduceAmount(points * -1);
userScoreRequest.setScoreOrderNo(orderCode);
userScoreRequest.setChangeType(isReduce ? 2 : 1);
userScoreRequest.setOperationType(isReduce ? 14 : 2);
userScoreRequest.setStoreId("");
BaseResponse baseResponse = customerPropertyClient.useScore(userScoreRequest);
if(!Objects.equals("100",baseResponse.getCode())){
return ResponseUtil.error(createOrderResponse.getCode(),"扣减积分失败");
userScoreRequest.setChangeScore(points);
userScoreRequest.setOperationType(12);
userScoreRequest.setOperationName("积分兑换");
userScoreRequest.setChangeType(2);
userScoreRequest.setOrderId(orderCode);
userScoreRequest.setOrgCode("");
userScoreRequest.setOrgType(1);
userScoreRequest.setIdempotencyBussinessId(LogThreadLocal.getTrackingNo());
userScoreRequest.setIdempotencyBussinessType("5");
userScoreRequest.setAppId(userLoginInfoDto.getAppId());
CustomerPropertyBaseResponse baseResponse = customerPropertyClient.useScore(userScoreRequest);
if (!Objects.equals("100", baseResponse.getCode())) {
createOrderFail(true, false, partnerId, memberId, orderCode, skuId, points, appId);
return ResponseUtil.error(baseResponse.getCode(), "扣减积分失败");
}
}
//订单完成 (失败:失败冲正活动库存)
String nickName = userLoginInfoDto.getNickName();
if(isCoupon){
com.freemud.application.sdk.api.ordercenter.response.BaseResponse updateOrderStateResp = null;
if (isCoupon) {
OrderAffirmReq request = new OrderAffirmReq();
request.setOrderCode(orderCode);
request.setPayState(2);
request.setOperator(nickName);
com.freemud.application.sdk.api.ordercenter.response.BaseResponse updateOrderStateResp = orderSdkService.orderAffirm(request, LogThreadLocal.getTrackingNo());
if(!Objects.equals("100",createOrderResponse.getCode())){
return ResponseUtil.error(createOrderResponse.getCode(),"创建订单异常");
updateOrderStateResp = orderSdkService.orderAffirm(request, LogThreadLocal.getTrackingNo());
if (Objects.equals("100", updateOrderStateResp.getCode())) {
//发券mq
sendCouponService.sendCouponMq(createOrderResponseDto.getResult());
}
//发券
}else {
} else {
PaySuccessReq request = new PaySuccessReq();
request.setOrderCode(orderCode);
request.setOperator(nickName);
orderSdkService.paySuccess(request,LogThreadLocal.getTrackingNo());
if(!Objects.equals("100",createOrderResponse.getCode())){
return ResponseUtil.error(createOrderResponse.getCode(),"创建订单异常");
updateOrderStateResp = orderSdkService.paySuccess(request, LogThreadLocal.getTrackingNo());
}
if (!Objects.equals("100", updateOrderStateResp.getCode())) {
createOrderFail(false, true, partnerId, memberId, orderCode, skuId, points, appId);
return ResponseUtil.error(updateOrderStateResp.getCode(), "创建订单异常");
}
CreateOrderResponseVo createOrderResponse = new CreateOrderResponseVo();
createOrderResponse.setOid(orderCode);
return ResponseUtil.success(createOrderResponse);
}
@Override
public BaseResponse scoreRecord(QueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
Date startDate;
Date endDate;
if (StringUtils.isBlank(queryOrderVo.getStartDate()) || StringUtils.isBlank(queryOrderVo.getEndDate())) {
Date now = new Date();
startDate = DateUtil.addMonths(now, -6);
endDate = DateUtil.addDays(now, 1);
} else {
String startDateStr = queryOrderVo.getStartDate() + " 00:00:00";
String endDateStr = queryOrderVo.getEndDate() + " 23:59:59";
startDate = DateUtil.convert2Date(startDateStr, "yyyy-MM-dd HH:mm:ss");
if (startDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单开始时间格式不正确");
}
endDate = DateUtil.convert2Date(endDateStr, "yyyy-MM-dd HH:mm:ss");
if (endDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单结束时间格式不正确");
}
}
OrderConditionsReq queryOrdersDto = new OrderConditionsReq();
queryOrdersDto.setUserId(userLoginInfoDto.getMemberId());
queryOrdersDto.setPartnerId(userLoginInfoDto.getPartnerId());
queryOrdersDto.setPageSize(queryOrderVo.getPageSize() != null ? queryOrderVo.getPageSize() : 500);
queryOrdersDto.setPageNum(queryOrderVo.getPageNumber() != null ? queryOrderVo.getPageNumber() : 1);
queryOrdersDto.setStartTimestamp(startDate.getTime() / 1000);
queryOrdersDto.setEndTimestamp(endDate.getTime() / 1000);
queryOrdersDto.setOrderClients(Arrays.asList(OrderClientType.I_MEMBER.getIndex()));
queryOrdersDto.setBizType(4);
if (queryOrderVo.getQueryOrderStatus() != null) {
if (queryOrderVo.getQueryOrderStatus() == 1) {
queryOrdersDto.setOrderStatus(2);
}
if (queryOrderVo.getQueryOrderStatus() == 2) {
queryOrdersDto.setOrderStatus(6);
}
if (queryOrderVo.getQueryOrderStatus() == 3) {
queryOrdersDto.setOrderStatuses(Arrays.asList(2, 6));
}
} else {
queryOrdersDto.setOrderStatus(6);
}
BaseDownLoadResponse<List<OrderInfoReqs>> response = orderDownLoadSdkService.queryOrderByConditions(queryOrdersDto, LogThreadLocal.getTrackingNo());
List<ScoreRecordVo> result = new ArrayList<>();
if (null == response || null == response.getResult()) {
return ResponseUtil.success(result);
}
List<OrderInfoReqs> list = response.getResult();
list.forEach(order -> {
ScoreRecordVo responseVo = new ScoreRecordVo();
responseVo.setOrderCode(order.getOrderCode());
responseVo.setOrderStatus(order.getOrderState());
responseVo.setExpressChannelName(order.getExpressChannelName());
responseVo.setExpressChannelCode(order.getExpressChannelCode());
if (order.getCreateTime() != null) {
responseVo.setCreateTime(Long.parseLong(order.getCreateTime()));
}
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(order.getOrderItemList())) {
OrderItemResp orderItemResp = order.getOrderItemList().get(0);
responseVo.setProductName(orderItemResp.getProductName());
responseVo.setProductQuantity(orderItemResp.getProductQuantity());
responseVo.setProductType(orderItemResp.getProductType());
responseVo.setIntegralPrice(orderItemResp.getProductPrice().intValue());
responseVo.setCashPrice(orderItemResp.getSalePrice().intValue());
responseVo.setProductPicUrl(orderItemResp.getProductPicUrl());
}
return ResponseUtil.success();
result.add(responseVo);
});
return ResponseUtil.success(result);
}
private void fail(boolean useScoreFail,boolean orderFail){
@Override
public BaseResponse scoreRecordDetail(QueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
if (StringUtils.isEmpty(queryOrderVo.getOid())) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING);
}
String orderCode = queryOrderVo.getOid();
QueryByCodeResponse queryByCodeResponse = orderSdkService.getOrderInfo("", orderCode, "", null, LogThreadLocal.getTrackingNo());
List<ScoreRecordVo> result = new ArrayList<>();
if (null == queryByCodeResponse || null == queryByCodeResponse.getResult()) {
return ResponseUtil.success(result);
}
OrderInfoReqs order = queryByCodeResponse.getResult();
ScoreRecordVo responseVo = new ScoreRecordVo();
responseVo.setOrderCode(order.getOrderCode());
responseVo.setOrderStatus(order.getOrderState());
responseVo.setExpressChannelName(order.getExpressChannelName());
responseVo.setExpressChannelCode(order.getExpressChannelCode());
if (order.getCreateTime() != null) {
responseVo.setCreateTime(Long.parseLong(order.getCreateTime()));
}
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(order.getOrderItemList())) {
OrderItemResp orderItemResp = order.getOrderItemList().get(0);
responseVo.setProductName(orderItemResp.getProductName());
responseVo.setProductQuantity(orderItemResp.getProductQuantity());
responseVo.setProductType(orderItemResp.getProductType());
responseVo.setIntegralPrice(orderItemResp.getProductPrice().intValue());
responseVo.setCashPrice(orderItemResp.getSalePrice().intValue());
responseVo.setProductPicUrl(orderItemResp.getProductPicUrl());
}
result.add(responseVo);
return ResponseUtil.success(result);
}
private ProductBindingCouponType convent2ProductBindingCouponType(Active active){
/**
* 失败冲正
*/
private void createOrderFail(boolean useScoreFail, boolean orderFail, String partnerId, String memberId, String orderCode,
String skuId, Integer points, String appId) {
try {
//扣减积分失败冲正活动库存
if (useScoreFail || orderFail) {
//扣减积分商品商品库存
UpdatePointsMallStocksRequest updatePointsMallStocksRequest = new UpdatePointsMallStocksRequest();
updatePointsMallStocksRequest.setMemberId(memberId);
updatePointsMallStocksRequest.setChangeType(2);
updatePointsMallStocksRequest.setRemark("积分兑换");
updatePointsMallStocksRequest.setTransTime(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
updatePointsMallStocksRequest.setTransNo(orderCode);
ProductStockRequest productStockRequest = new ProductStockRequest();
productStockRequest.setProductId(skuId);
productStockRequest.setExchangeNumber(1);
productStockRequest.setStockNumber(1);
updatePointsMallStocksRequest.setProductStocks(Arrays.asList(productStockRequest));
PointMallListProductInfoResponse pointMallListProductInfoResponse = pointMallProductClient.updateStock(updatePointsMallStocksRequest);
}
//确认订单或支付成功失败,冲正活动库存与积分
if (orderFail) {
UseScoreRequest userScoreRequest = new UseScoreRequest();
userScoreRequest.setMemberId(memberId);
userScoreRequest.setPartnerId(partnerId);
userScoreRequest.setChangeScore(points);
userScoreRequest.setOperationType(12);
userScoreRequest.setOperationName("积分兑换");
userScoreRequest.setChangeType(1);
userScoreRequest.setOrderId(orderCode);
userScoreRequest.setOrgCode("");
userScoreRequest.setOrgType(1);
userScoreRequest.setIdempotencyBussinessId(LogThreadLocal.getTrackingNo());
userScoreRequest.setIdempotencyBussinessType("5");
userScoreRequest.setAppId(appId);
CustomerPropertyBaseResponse baseResponse = customerPropertyClient.useScore(userScoreRequest);
}
} catch (Exception e) {
AppLogUtil.errorLog("createOrderFail_error", null, null, e);
}
}
private ProductBindingCouponType convent2ProductBindingCouponType(Active active) {
ProductBindingCouponType productBindingCouponType2 = new ProductBindingCouponType();
productBindingCouponType2.setActivityCode(active.getActiveCode());
productBindingCouponType2.setNum(1);
......@@ -182,34 +381,34 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
return productBindingCouponType2;
}
private OrderItemCreateReq convent2OrderItemCreateReq(IntegralProductType productBean,String partnerId,String skuId,
Active active){
private OrderItemCreateReq convent2OrderItemCreateReq(IntegralProductType productBean, String partnerId, String skuId,
Active active) {
boolean isCoupon = productBean.getProductType() == 1;
Long price = 0L;
if(isCoupon){
price = productBean.getIntegralPrice().longValue();
}else {
price = productBean.getCashPrice().longValue();
}
//积分价格
Integer integralPrice = productBean.getIntegralPrice() == null ? 0 : productBean.getIntegralPrice();
//现金价格(分)
Integer cashPrice = productBean.getCashPrice() == null ? 0 : productBean.getCashPrice();
Integer settlementAmount = integralPrice + cashPrice;
OrderItemCreateReq orderItemCreateReq = new OrderItemCreateReq();
orderItemCreateReq.setPartnerId(partnerId);
orderItemCreateReq.setSalePrice(price);
orderItemCreateReq.setProductPrice(price);
orderItemCreateReq.setSettlementPrice(price);
orderItemCreateReq.setSalePrice(cashPrice.longValue());
orderItemCreateReq.setProductPrice(integralPrice.longValue());
orderItemCreateReq.setSettlementPrice(settlementAmount.longValue());
orderItemCreateReq.setProductId(skuId);
orderItemCreateReq.setProductSpec(skuId);
orderItemCreateReq.setProductName(productBean.getProductName());
orderItemCreateReq.setProductSpecName(productBean.getProductName());
if(CollectionUtils.isNotEmpty(productBean.getPictureList())){
orderItemCreateReq.setProductType(productBean.getProductType());
if (CollectionUtils.isNotEmpty(productBean.getPictureList())) {
orderItemCreateReq.setProductPicUrl(productBean.getPictureList().get(0));
}
orderItemCreateReq.setProductSeq(1);
if(productBean.getEntityProductInfo() != null){
if (productBean.getEntityProductInfo() != null) {
orderItemCreateReq.setProductCode(productBean.getEntityProductInfo().getProductId());
orderItemCreateReq.setThirdProductId(productBean.getEntityProductInfo().getProductId());
orderItemCreateReq.setProductPicUrl(productBean.getEntityProductInfo().getPicture());
}
if(isCoupon){
if (isCoupon) {
//添加商品绑定的券
OrderProductAddInfoDto orderProductAddInfoDto = new OrderProductAddInfoDto();
List<ProductBindingCouponType> productBindingCoupons = new ArrayList<>();
......@@ -221,14 +420,26 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
return orderItemCreateReq;
}
private OrderSettlementCreateReq convent2OrderSettlementCreateReq(IntegralProductType productBean) {
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
orderSettlementCreateReq.setNumber(productBean.getIntegralPrice());
orderSettlementCreateReq.setProductSeq(1);
orderSettlementCreateReq.setExternalObjectId("");
//商家优惠
orderSettlementCreateReq.setShopDiscountAmount(0L);
//结算金额
orderSettlementCreateReq.setSettlementAmount(productBean.getIntegralPrice().longValue());
//是否线上 false:不是 true:是
orderSettlementCreateReq.setIsOnline(true);
orderSettlementCreateReq.setSettlementType(OrderSettlementType.POINTS.getIndex());
return orderSettlementCreateReq;
}
private CreateOrderRequest convent2NEWCreateOrderRequest(Integer orderClient,AssortmentCustomerInfoVo userLoginInfoDto,
OrderItemCreateReq orderItemList,
String shopId,
String cardCode,
String channel,
Integer bizType,
Long price){
private CreateOrderRequest convent2NEWCreateOrderRequest(Integer orderClient, AssortmentCustomerInfoVo userLoginInfoDto,
String shopId, String cardCode,
String channel, Integer bizType,
IntegralProductType productBean, String skuId,
Active active) {
CreateOrderRequest request = new CreateOrderRequest();
String partnerId = userLoginInfoDto.getPartnerId();
request.setOrderClient(orderClient);
......@@ -244,19 +455,28 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
request.setUserName(userLoginInfoDto.getNickName());
request.setOrderState(1);
request.setPayState(1);
if(StringUtils.isNotBlank(cardCode)){
if (StringUtils.isNotBlank(cardCode)) {
request.setPayChannel("10102");
request.setPayChannelName("储值卡支付");
}
//积分价格
Integer integralPrice = productBean.getIntegralPrice() == null ? 0 : productBean.getIntegralPrice();
//现金价格(分)
Integer cashPrice = productBean.getCashPrice() == null ? 0 : productBean.getCashPrice();
Integer settlementAmount = integralPrice + cashPrice;
//订单原始金额,单位分
//用户在界面上看到的支付金额
request.setSettlementAmount(price);
request.setSettlementAmount(settlementAmount.longValue());
//实际支付现金金额,扣除支付自生优惠,单位分`
request.setActualPayAmount(price);
request.setOriginalAmount(price);
request.setActualPayAmount(cashPrice.longValue());
request.setOriginalAmount(settlementAmount.longValue());
request.setOrderType(OrderType.GENERAL_DINE_IN.getIndex());
//商品信息赋值
request.setOrderItemList(Arrays.asList(orderItemList));
OrderItemCreateReq orderItemCreateReq = convent2OrderItemCreateReq(productBean, partnerId, skuId, active);
request.setOrderItemList(Arrays.asList(orderItemCreateReq));
//积分优惠
OrderSettlementCreateReq orderSettlementCreateReq = convent2OrderSettlementCreateReq(productBean);
request.setOrderSettlementDetailList(Arrays.asList(orderSettlementCreateReq));
//收货人信息转换
List<DeliveryContactInfoCreateReq> deliveryContactInfoList = new ArrayList<>();
DeliveryContactInfoCreateReq deliveryContactInfoCreateReq = new DeliveryContactInfoCreateReq();
......
......@@ -152,7 +152,7 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ
// }
// }
// 扣减积分,扣减失败冲正积分返回错误
// UserScoreRequest userScoreRequest = orderSdkAdapter.convent2UserScoreRequest(orderBean, accounts, true);
// UseScoreRequest userScoreRequest = orderSdkAdapter.convent2UserScoreRequest(orderBean, accounts, true);
// if (userScoreRequest != null) {
// BaseResponse userScoreResponse = memberScoreService.useScore(userScoreRequest, "");
// if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, userScoreResponse.getCode())) {
......
package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.user.UserScoreRequest;
import cn.freemud.entities.dto.user.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "customer-property-service", url = "http://saastestapi.sandload.cn/customer-application-service/")//${saas.customerpropertyclient.feign.url}
@FeignClient(name = "customer-property-service", url = "${customer.property.service.url:}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface CustomerPropertyClient {
//
@LogIgnoreFeign(logMessage="useScore")
@PostMapping(value = "user/useScore")
BaseResponse useScore(@RequestBody UserScoreRequest userScoreRequest);
@PostMapping(value = "/propertyservice/score/pay")
CustomerPropertyBaseResponse<PayScoreResponse> useScore(@RequestBody UseScoreRequest userScoreRequest);
@LogIgnoreFeign(logMessage="statisticalScore")
@PostMapping({"/propertyservice/score/statisticalScore"})
CustomerPropertyBaseResponse<StatislScoreResponse> statisticalScore(StatisticalScoreRequestVo request);
}
......@@ -12,7 +12,9 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(value = "PRODUCTSERVICE",url="http://172.16.19.240:9996")//${saas.pointMallProductClient.feign.url}
import java.util.List;
@FeignClient(name = "INTEGRAL-MALL-SERVICE", url = "${ssas.integralMall.feign.url:}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface PointMallProductClient {
......@@ -22,7 +24,7 @@ public interface PointMallProductClient {
*/
@LogIgnoreFeign(logMessage="listProductInfos",statusCodeFieldName=ResponseCodeKeyConstant.STATUS_CODE)
@PostMapping("/biz/product/listProductInfo")
PointMallListProductInfoResponse<IntegralProductType> listProductInfo(@RequestBody PointMallListProductInfoRequest productInfoRequest);
PointMallListProductInfoResponse<List<IntegralProductType>> listProductInfo(@RequestBody PointMallListProductInfoRequest productInfoRequest);
@LogIgnoreFeign(logMessage="listProductInfos",statusCodeFieldName=ResponseCodeKeyConstant.STATUS_CODE)
......
......@@ -77,7 +77,7 @@ public class EncircleOrderServiceImplTest {
createOrderVo.setPartnerId("1864");
createOrderVo.setShopId("2700968");
createOrderVo.setPeopleNumber(12);
System.out.println(JSON.toJSONString(encircleOrderService.createReserveOrder(createOrderVo)));
// System.out.println(JSON.toJSONString(encircleOrderService.createReserveOrder(createOrderVo)));
}
......@@ -111,7 +111,7 @@ public class EncircleOrderServiceImplTest {
CreateReserveOrderVo reserveOrderVo = new CreateReserveOrderVo();
reserveOrderVo.setSessionId("00e7be90e5fd45b5568da134a36a8d44ea01bd92");
reserveOrderVo.setRepastNumber(5);
System.out.println(JSON.toJSONString(encircleOrderService.updateReserveOrder(reserveOrderVo)));
// System.out.println(JSON.toJSONString(encircleOrderService.updateReserveOrder(reserveOrderVo)));
}
/**
......@@ -133,7 +133,7 @@ public class EncircleOrderServiceImplTest {
//TODO: Test goes here...
CreateReserveOrderVo createReserveOrderVo = new CreateReserveOrderVo();
createReserveOrderVo.setSessionId("fbc82ad9a7449590bcd56f96db1b11352e1f3470");
System.out.println(JSON.toJSONString(encircleOrderService.createPrepaymentOrder(createReserveOrderVo)));
// System.out.println(JSON.toJSONString(encircleOrderService.createPrepaymentOrder(createReserveOrderVo)));
}
/**
......
......@@ -97,6 +97,7 @@ public class OrderSdkService {
* @param trackingNo 交易号
* @return
*/
@Deprecated
public QueryByCodeResponse getOrderInfo(String orderId, Integer withOperationHistory, String trackingNo) {
String url = InterfaceAddressConstant.GET_ORDER_INFO + "?orderCode=" + orderId;
if (withOperationHistory != null && withOperationHistory == 1) {
......
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