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; ...@@ -19,10 +19,7 @@ import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo; import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
import cn.freemud.handler.OrderReportJobHandler; import cn.freemud.handler.OrderReportJobHandler;
import cn.freemud.monitorcenter.tools.HealthUtil; import cn.freemud.monitorcenter.tools.HealthUtil;
import cn.freemud.service.EncircleOrderService; import cn.freemud.service.*;
import cn.freemud.service.MCCafeOrderService;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice;
import cn.freemud.service.impl.MallOrderServiceImpl; import cn.freemud.service.impl.MallOrderServiceImpl;
import cn.freemud.utils.AppLogUtil; import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
...@@ -57,6 +54,8 @@ public class OrderController { ...@@ -57,6 +54,8 @@ public class OrderController {
private OrderReportJobHandler orderReportJobHandler; private OrderReportJobHandler orderReportJobHandler;
@Autowired @Autowired
private OrderCountJobHandler orderCountJobHandler; private OrderCountJobHandler orderCountJobHandler;
@Autowired
private PointsMallOrderService pointsMallOrderService;
/** /**
* 创建订单之前校验前面排队的订单数 * 创建订单之前校验前面排队的订单数
...@@ -377,12 +376,21 @@ public class OrderController { ...@@ -377,12 +376,21 @@ public class OrderController {
} }
/** /**
* 积分兑换记录查询(农工商) * 积分兑换记录查询(农工商加开个店积分商城
*/ */
@ApiAnnotation(logMessage = "scoreRecord") @ApiAnnotation(logMessage = "scoreRecord")
@PostMapping("/scoreRecord") @PostMapping("/scoreRecord")
public BaseResponse scoreRecord(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) { 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; ...@@ -20,7 +20,7 @@ import java.util.List;
public class UpdatePointsMallStocksRequest { public class UpdatePointsMallStocksRequest {
// @ApiModelProperty(value = "1增加库存或兑换数量,2减少库存,3修改库存,兑换数量只支持新增", required = true) // @ApiModelProperty(value = "1增加库存或兑换数量,2减少库存,3修改库存,兑换数量只支持新增", required = true)
public String changeType; public Integer changeType;
// @ApiModelProperty(value = "交易号, maxLength = 36", required = true) // @ApiModelProperty(value = "交易号, maxLength = 36", required = true)
public String transNo; public String transNo;
...@@ -37,5 +37,7 @@ public class UpdatePointsMallStocksRequest { ...@@ -37,5 +37,7 @@ public class UpdatePointsMallStocksRequest {
// @ApiModelProperty(value = "会员编号", required = true) // @ApiModelProperty(value = "会员编号", required = true)
public String memberId; 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; ...@@ -2,16 +2,16 @@ package cn.freemud.entities.dto.user;
import lombok.Data; import lombok.Data;
@Data @Data
public class UserScoreRequest { public class StatisticalScoreRequestVo {
private Integer reduceAmount; // @NotEmpty(message = "partnerId 不能为空")
private String scoreOrderNo;
private Integer UseScore;
private Integer changeType;
private Integer operationType;
private String memberId;
private String 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 { ...@@ -35,4 +35,26 @@ public class ScoreRecordVo {
//数量 //数量
private Integer productQuantity; 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; ...@@ -21,11 +21,16 @@ import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
public interface EncircleOrderService { public interface EncircleOrderService {
/** /**
* 创建订单
*/
BaseResponse createOrder(CreateOrderVo createOrderVo);
/**
* 围餐--开台 * 围餐--开台
* @param createOrderVo * @param createOrderVo
* @return * @return
*/ */
BaseResponse createReserveOrder(CreateOrderVo createOrderVo); // BaseResponse createReserveOrder(CreateOrderVo createOrderVo);
/** /**
* 查询桌号是否开台 * 查询桌号是否开台
...@@ -38,7 +43,7 @@ public interface EncircleOrderService { ...@@ -38,7 +43,7 @@ public interface EncircleOrderService {
* @param createReserveOrderVo * @param createReserveOrderVo
* @return * @return
*/ */
BaseResponse updateReserveOrder(CreateReserveOrderVo createReserveOrderVo); // BaseResponse updateReserveOrder(CreateReserveOrderVo createReserveOrderVo);
/** /**
* 围餐--预览订单 * 围餐--预览订单
...@@ -52,7 +57,7 @@ public interface EncircleOrderService { ...@@ -52,7 +57,7 @@ public interface EncircleOrderService {
* @param createReserveOrderVo * @param createReserveOrderVo
* @return * @return
*/ */
BaseResponse createPrepaymentOrder(CreateReserveOrderVo createReserveOrderVo); // BaseResponse createPrepaymentOrder(CreateReserveOrderVo createReserveOrderVo);
/** /**
* 清台 * 清台
......
...@@ -159,7 +159,7 @@ public interface Orderservice { ...@@ -159,7 +159,7 @@ public interface Orderservice {
BaseResponse spellGroupOrderFailRefund(SpellGroupFailRefundVo refundVo); BaseResponse spellGroupOrderFailRefund(SpellGroupFailRefundVo refundVo);
BaseResponse scoreRecord(QueryOrderVo queryOrderVo); // BaseResponse scoreRecord(QueryOrderVo queryOrderVo);
/** /**
* 【ID1028455】 【订单】非码-腾讯有数数据上报V1.0.0 * 【ID1028455】 【订单】非码-腾讯有数数据上报V1.0.0
......
...@@ -2,6 +2,7 @@ package cn.freemud.service; ...@@ -2,6 +2,7 @@ package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo; import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderVo;
public interface PointsMallOrderService { public interface PointsMallOrderService {
...@@ -9,4 +10,9 @@ public interface PointsMallOrderService { ...@@ -9,4 +10,9 @@ public interface PointsMallOrderService {
* 创建订单 * 创建订单
*/ */
BaseResponse createOrder(CreateOrderVo createOrderVo); BaseResponse createOrder(CreateOrderVo createOrderVo);
BaseResponse scoreRecord(QueryOrderVo queryOrderVo);
BaseResponse scoreRecordDetail(QueryOrderVo queryOrderVo);
} }
...@@ -121,6 +121,36 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -121,6 +121,36 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
private static FastDateFormat dateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss", Locale.CHINA); private static FastDateFormat dateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
@Override @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) { public BaseResponse createReserveOrder(CreateOrderVo createOrderVo) {
//查询用户缓存信息(用户信息,用户绑定桌号信息) //查询用户缓存信息(用户信息,用户绑定桌号信息)
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createOrderVo.getSessionId()); AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createOrderVo.getSessionId());
...@@ -267,7 +297,6 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -267,7 +297,6 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
} }
@Override
public BaseResponse updateReserveOrder(CreateReserveOrderVo createReserveOrderVo) { public BaseResponse updateReserveOrder(CreateReserveOrderVo createReserveOrderVo) {
//获取缓存(用户信息,桌号信息,桌号与订单号信息) //获取缓存(用户信息,桌号信息,桌号与订单号信息)
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createReserveOrderVo.getSessionId()); AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createReserveOrderVo.getSessionId());
...@@ -458,7 +487,6 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -458,7 +487,6 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
} }
@Override
public BaseResponse createPrepaymentOrder(CreateReserveOrderVo createReserveOrderVo) { public BaseResponse createPrepaymentOrder(CreateReserveOrderVo createReserveOrderVo) {
//获取缓存(用户信息,桌号信息,桌号与订单号信息) //获取缓存(用户信息,桌号信息,桌号与订单号信息)
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createReserveOrderVo.getSessionId()); AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createReserveOrderVo.getSessionId());
......
...@@ -130,51 +130,20 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -130,51 +130,20 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
// 扩展字段中存储 sessionKey // 扩展字段中存储 sessionKey
createOrderVo.setSessionKey(assortmentCustomerInfoVo.getSessionKey()); createOrderVo.setSessionKey(assortmentCustomerInfoVo.getSessionKey());
if (IappIdType.WC_XCX.getCode().equals(assortmentCustomerInfoVo.getIappId())) { //i围餐 if (IappIdType.WC_XCX.getCode().equals(assortmentCustomerInfoVo.getIappId())) { //i围餐
BaseResponse baseResponse = null; return encircleOrderService.createOrder(createOrderVo);
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;
} }
/** //积分商城
* 积分商城
*/
if (OrderChannelType.POINTSMALL.getCode().equals(createOrderVo.getChannelType())) { if (OrderChannelType.POINTSMALL.getCode().equals(createOrderVo.getChannelType())) {
return pointsMallOrderService.createOrder(createOrderVo); return pointsMallOrderService.createOrder(createOrderVo);
} }
/** //微商城订单
* 商城订单
*/
if (OrderChannelType.SAASMALL.getCode().equals(createOrderVo.getChannelType())) { if (OrderChannelType.SAASMALL.getCode().equals(createOrderVo.getChannelType())) {
return mallOrderService.createOrder(createOrderVo); return mallOrderService.createOrder(createOrderVo);
} }
/** //APP下单
* APP下单
*/
if (UserLoginChannelEnum.APP.getCode().equals(assortmentCustomerInfoVo.getChannel())) { if (UserLoginChannelEnum.APP.getCode().equals(assortmentCustomerInfoVo.getChannel())) {
return appOrderService.createOrderFlow(createOrderVo); return appOrderService.createOrderFlow(createOrderVo);
} }
......
...@@ -4075,66 +4075,6 @@ public class OrderServiceImpl implements Orderservice { ...@@ -4075,66 +4075,6 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(); 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 @Override
public BaseResponse<List<OrderCountResp>> selectCountOrdersByPartnerIds(OrderCountRequestVo orderCountRequestVo, String trackingNo) { public BaseResponse<List<OrderCountResp>> selectCountOrdersByPartnerIds(OrderCountRequestVo orderCountRequestVo, String trackingNo) {
OrderCountReqs orderCountReqs = new OrderCountReqs(); OrderCountReqs orderCountReqs = new OrderCountReqs();
......
package cn.freemud.service.impl; package cn.freemud.service.impl;
import cn.freemud.amp.service.SendCouponService;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.Active; import cn.freemud.entities.Active;
import cn.freemud.entities.dto.BatchQueryActivityInfoRequestDto; import cn.freemud.entities.dto.BatchQueryActivityInfoRequestDto;
import cn.freemud.entities.dto.BatchQueryActivityInfoResponseDto; import cn.freemud.entities.dto.BatchQueryActivityInfoResponseDto;
import cn.freemud.entities.dto.product.pointsmall.*; 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.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderVo;
import cn.freemud.entities.vo.ScoreRecordVo;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import cn.freemud.service.PointsMallOrderService; import cn.freemud.service.PointsMallOrderService;
import cn.freemud.service.thirdparty.CustomerPropertyClient; import cn.freemud.service.thirdparty.CustomerPropertyClient;
import cn.freemud.service.thirdparty.PointMallProductClient; import cn.freemud.service.thirdparty.PointMallProductClient;
import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.log.LogThreadLocal; 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.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.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.OrderAffirmReq; 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.PaySuccessReq;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest; 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.DeliveryContactInfoCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq; 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.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.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.OrderProductAddInfoDto;
import com.freemud.sdk.api.assortment.order.request.order.ProductBindingCouponType; import com.freemud.sdk.api.assortment.order.request.order.ProductBindingCouponType;
...@@ -50,7 +65,10 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService { ...@@ -50,7 +65,10 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
private CouponService couponService; private CouponService couponService;
@Autowired @Autowired
private CustomerPropertyClient customerPropertyClient; private CustomerPropertyClient customerPropertyClient;
@Autowired
private SendCouponService sendCouponService;
@Autowired
private OrderDownLoadSdkService orderDownLoadSdkService;
@Override @Override
...@@ -62,9 +80,11 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService { ...@@ -62,9 +80,11 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
return ResponseUtil.error(ResponseResult.NOT_LOGIN); return ResponseUtil.error(ResponseResult.NOT_LOGIN);
} }
String partnerId = userLoginInfoDto.getPartnerId(); String partnerId = userLoginInfoDto.getPartnerId();
String storeId = "99999";
String memberId = userLoginInfoDto.getMemberId(); String memberId = userLoginInfoDto.getMemberId();
String appId = userLoginInfoDto.getAppId();
String skuId = ""; String skuId = "";
if(CollectionUtils.isNotEmpty(createOrderVo.getProducts())){ if (CollectionUtils.isNotEmpty(createOrderVo.getProducts())) {
skuId = createOrderVo.getProducts().get(0).getSkuId(); skuId = createOrderVo.getProducts().get(0).getSkuId();
} }
//查询商品信息并且校验用户是否能购买 /product/listProductInfo 查询积分商品详情,可根据入参校验商品 //查询商品信息并且校验用户是否能购买 /product/listProductInfo 查询积分商品详情,可根据入参校验商品
...@@ -74,53 +94,64 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService { ...@@ -74,53 +94,64 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
productInfoRequest.setValidateMember(true); productInfoRequest.setValidateMember(true);
productInfoRequest.setValidateStock(true); productInfoRequest.setValidateStock(true);
productInfoRequest.setValidateTime(true); productInfoRequest.setValidateTime(true);
// PointMallListProductInfoResponse<IntegralProductType> productInfosDto = pointMallProductClient.listProductInfo(productInfoRequest); PointMallListProductInfoResponse<List<IntegralProductType>> productInfosDto = pointMallProductClient.listProductInfo(productInfoRequest);
PointMallListProductInfoResponse<IntegralProductType> productInfosDto = new PointMallListProductInfoResponse<>(); if (!Objects.equals(100, productInfosDto.getStatusCode()) || CollectionUtils.isEmpty(productInfosDto.getResult())) {
IntegralProductType integralProductType = new IntegralProductType(); return ResponseUtil.error("101", "商品异常");
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());
} }
IntegralProductType integralProductType = productInfosDto.getResult().get(0);
String activityCode = productInfosDto.getResult().getCouponCode(); if(!Objects.equals(1,integralProductType.getExchangeType())){
Integer points = productInfosDto.getResult().getIntegralPrice(); return ResponseUtil.error("101","积分商城暂不支持现金兑换");
boolean isCoupon = productInfosDto.getResult().getProductType() == 1; }
// 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; Active active = null;
if(isCoupon){ if (isCoupon) {
String activityCode = integralProductType.getCouponCode();
//券商品查询券活动信息校验券有效  //券商品查询券活动信息校验券有效 
BatchQueryActivityInfoRequestDto queryActivityInfoRequestDto = new BatchQueryActivityInfoRequestDto(); BatchQueryActivityInfoRequestDto queryActivityInfoRequestDto = new BatchQueryActivityInfoRequestDto();
queryActivityInfoRequestDto.setActiveCode(Arrays.asList(activityCode)); queryActivityInfoRequestDto.setActiveCode(Arrays.asList(activityCode));
// queryActivityInfoRequestDto.setActiveCode(Arrays.asList("V1628760321931083"));
queryActivityInfoRequestDto.setPartnerId(Integer.valueOf(partnerId)); queryActivityInfoRequestDto.setPartnerId(Integer.valueOf(partnerId));
BatchQueryActivityInfoResponseDto batchQueryActivityInfoResponseDto = couponService.batchQueryActivityInfo(queryActivityInfoRequestDto); BatchQueryActivityInfoResponseDto batchQueryActivityInfoResponseDto = couponService.batchQueryActivityInfo(queryActivityInfoRequestDto);
if(!Objects.equals("100",batchQueryActivityInfoResponseDto.getStatusCode())){ if (!Objects.equals("0", batchQueryActivityInfoResponseDto.getStatusCode())) {
return ResponseUtil.error(batchQueryActivityInfoResponseDto.getStatusCode(),"优惠券异常"); return ResponseUtil.error(batchQueryActivityInfoResponseDto.getStatusCode(), "优惠券异常");
} }
active = batchQueryActivityInfoResponseDto.getActivities().get(0); 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,
CreateOrderRequest createOrderRequest = convent2NEWCreateOrderRequest(OrderClientType.I_MEMBER.getIndex(),userLoginInfoDto, storeId, "", "", 4, integralProductType, skuId, active);
orderItemCreateReq,"","","",4,orderItemCreateReq.getProductPrice()); com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> createOrderResponseDto = orderSdkService.createOrder(createOrderRequest, "");
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> createOrderResponse = orderSdkService.createOrder(createOrderRequest, ""); if (!Objects.equals("100", createOrderResponseDto.getCode())) {
if(!Objects.equals("100",createOrderResponse.getCode())){ return ResponseUtil.error(createOrderResponseDto.getCode(), "创建订单异常");
return ResponseUtil.error(createOrderResponse.getCode(),"创建订单异常");
} }
String orderCode= createOrderResponse.getResult().getOrderCode(); String orderCode = createOrderResponseDto.getResult().getOrderCode();
//扣减积分商品商品库存  /stock/update //扣减积分商品商品库存
UpdatePointsMallStocksRequest updatePointsMallStocksRequest = new UpdatePointsMallStocksRequest(); UpdatePointsMallStocksRequest updatePointsMallStocksRequest = new UpdatePointsMallStocksRequest();
updatePointsMallStocksRequest.setPartnerId(partnerId);
updatePointsMallStocksRequest.setMemberId(memberId); updatePointsMallStocksRequest.setMemberId(memberId);
updatePointsMallStocksRequest.setChangeType("2"); updatePointsMallStocksRequest.setChangeType(2);
updatePointsMallStocksRequest.setRemark("积分兑换"); updatePointsMallStocksRequest.setRemark("积分商城兑换");
updatePointsMallStocksRequest.setTransTime(DateUtil.convert2String(new Date(),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS)); updatePointsMallStocksRequest.setTransTime(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
updatePointsMallStocksRequest.setTransNo(orderCode); updatePointsMallStocksRequest.setTransNo(orderCode);
ProductStockRequest productStockRequest = new ProductStockRequest(); ProductStockRequest productStockRequest = new ProductStockRequest();
productStockRequest.setProductId(skuId); productStockRequest.setProductId(skuId);
...@@ -128,53 +159,221 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService { ...@@ -128,53 +159,221 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
productStockRequest.setStockNumber(1); productStockRequest.setStockNumber(1);
updatePointsMallStocksRequest.setProductStocks(Arrays.asList(productStockRequest)); updatePointsMallStocksRequest.setProductStocks(Arrays.asList(productStockRequest));
PointMallListProductInfoResponse pointMallListProductInfoResponse = pointMallProductClient.updateStock(updatePointsMallStocksRequest); PointMallListProductInfoResponse pointMallListProductInfoResponse = pointMallProductClient.updateStock(updatePointsMallStocksRequest);
if(!Objects.equals(100,pointMallListProductInfoResponse.getStatusCode())){ if (!Objects.equals(100, pointMallListProductInfoResponse.getStatusCode())) {
return ResponseUtil.error(createOrderResponse.getCode(),"扣减库存失败"); return ResponseUtil.error(pointMallListProductInfoResponse.getStatusCode().toString(), "扣减库存失败");
} }
//扣减积分 (失败:失败冲正活动库存) //扣减积分 (失败:失败冲正活动库存)
UserScoreRequest userScoreRequest = new UserScoreRequest(); if (exchangeType != 2) {
boolean isReduce = true; UseScoreRequest userScoreRequest = new UseScoreRequest();
userScoreRequest.setMemberId(memberId); userScoreRequest.setMemberId(memberId);
userScoreRequest.setPartnerId(partnerId); userScoreRequest.setPartnerId(partnerId);
userScoreRequest.setReduceAmount(points * -1); userScoreRequest.setChangeScore(points);
userScoreRequest.setScoreOrderNo(orderCode); userScoreRequest.setOperationType(12);
userScoreRequest.setChangeType(isReduce ? 2 : 1); userScoreRequest.setOperationName("积分兑换");
userScoreRequest.setOperationType(isReduce ? 14 : 2); userScoreRequest.setChangeType(2);
userScoreRequest.setStoreId(""); userScoreRequest.setOrderId(orderCode);
BaseResponse baseResponse = customerPropertyClient.useScore(userScoreRequest); userScoreRequest.setOrgCode("");
if(!Objects.equals("100",baseResponse.getCode())){ userScoreRequest.setOrgType(1);
return ResponseUtil.error(createOrderResponse.getCode(),"扣减积分失败"); 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(); String nickName = userLoginInfoDto.getNickName();
if(isCoupon){ com.freemud.application.sdk.api.ordercenter.response.BaseResponse updateOrderStateResp = null;
if (isCoupon) {
OrderAffirmReq request = new OrderAffirmReq(); OrderAffirmReq request = new OrderAffirmReq();
request.setOrderCode(orderCode); request.setOrderCode(orderCode);
request.setPayState(2); request.setPayState(2);
request.setOperator(nickName); request.setOperator(nickName);
com.freemud.application.sdk.api.ordercenter.response.BaseResponse updateOrderStateResp = orderSdkService.orderAffirm(request, LogThreadLocal.getTrackingNo()); updateOrderStateResp = orderSdkService.orderAffirm(request, LogThreadLocal.getTrackingNo());
if(!Objects.equals("100",createOrderResponse.getCode())){ if (Objects.equals("100", updateOrderStateResp.getCode())) {
return ResponseUtil.error(createOrderResponse.getCode(),"创建订单异常"); //发券mq
sendCouponService.sendCouponMq(createOrderResponseDto.getResult());
} }
//发券 } else {
}else {
PaySuccessReq request = new PaySuccessReq(); PaySuccessReq request = new PaySuccessReq();
request.setOrderCode(orderCode); request.setOrderCode(orderCode);
request.setOperator(nickName); request.setOperator(nickName);
orderSdkService.paySuccess(request,LogThreadLocal.getTrackingNo()); updateOrderStateResp = orderSdkService.paySuccess(request, LogThreadLocal.getTrackingNo());
if(!Objects.equals("100",createOrderResponse.getCode())){ }
return ResponseUtil.error(createOrderResponse.getCode(),"创建订单异常"); 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());
}
result.add(responseVo);
});
return ResponseUtil.success(result);
}
@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());
} }
return ResponseUtil.success(); result.add(responseVo);
return ResponseUtil.success(result);
} }
private void fail(boolean useScoreFail,boolean orderFail){
/**
* 失败冲正
*/
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){ private ProductBindingCouponType convent2ProductBindingCouponType(Active active) {
ProductBindingCouponType productBindingCouponType2 = new ProductBindingCouponType(); ProductBindingCouponType productBindingCouponType2 = new ProductBindingCouponType();
productBindingCouponType2.setActivityCode(active.getActiveCode()); productBindingCouponType2.setActivityCode(active.getActiveCode());
productBindingCouponType2.setNum(1); productBindingCouponType2.setNum(1);
...@@ -182,34 +381,34 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService { ...@@ -182,34 +381,34 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
return productBindingCouponType2; return productBindingCouponType2;
} }
private OrderItemCreateReq convent2OrderItemCreateReq(IntegralProductType productBean,String partnerId,String skuId, private OrderItemCreateReq convent2OrderItemCreateReq(IntegralProductType productBean, String partnerId, String skuId,
Active active){ Active active) {
boolean isCoupon = productBean.getProductType() == 1; boolean isCoupon = productBean.getProductType() == 1;
Long price = 0L; //积分价格
if(isCoupon){ Integer integralPrice = productBean.getIntegralPrice() == null ? 0 : productBean.getIntegralPrice();
price = productBean.getIntegralPrice().longValue(); //现金价格(分)
}else { Integer cashPrice = productBean.getCashPrice() == null ? 0 : productBean.getCashPrice();
price = productBean.getCashPrice().longValue(); Integer settlementAmount = integralPrice + cashPrice;
}
OrderItemCreateReq orderItemCreateReq = new OrderItemCreateReq(); OrderItemCreateReq orderItemCreateReq = new OrderItemCreateReq();
orderItemCreateReq.setPartnerId(partnerId); orderItemCreateReq.setPartnerId(partnerId);
orderItemCreateReq.setSalePrice(price); orderItemCreateReq.setSalePrice(cashPrice.longValue());
orderItemCreateReq.setProductPrice(price); orderItemCreateReq.setProductPrice(integralPrice.longValue());
orderItemCreateReq.setSettlementPrice(price); orderItemCreateReq.setSettlementPrice(settlementAmount.longValue());
orderItemCreateReq.setProductId(skuId); orderItemCreateReq.setProductId(skuId);
orderItemCreateReq.setProductSpec(skuId); orderItemCreateReq.setProductSpec(skuId);
orderItemCreateReq.setProductName(productBean.getProductName()); orderItemCreateReq.setProductName(productBean.getProductName());
orderItemCreateReq.setProductSpecName(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.setProductPicUrl(productBean.getPictureList().get(0));
} }
orderItemCreateReq.setProductSeq(1); orderItemCreateReq.setProductSeq(1);
if(productBean.getEntityProductInfo() != null){ if (productBean.getEntityProductInfo() != null) {
orderItemCreateReq.setProductCode(productBean.getEntityProductInfo().getProductId()); orderItemCreateReq.setProductCode(productBean.getEntityProductInfo().getProductId());
orderItemCreateReq.setThirdProductId(productBean.getEntityProductInfo().getProductId()); orderItemCreateReq.setThirdProductId(productBean.getEntityProductInfo().getProductId());
orderItemCreateReq.setProductPicUrl(productBean.getEntityProductInfo().getPicture()); orderItemCreateReq.setProductPicUrl(productBean.getEntityProductInfo().getPicture());
} }
if(isCoupon){ if (isCoupon) {
//添加商品绑定的券 //添加商品绑定的券
OrderProductAddInfoDto orderProductAddInfoDto = new OrderProductAddInfoDto(); OrderProductAddInfoDto orderProductAddInfoDto = new OrderProductAddInfoDto();
List<ProductBindingCouponType> productBindingCoupons = new ArrayList<>(); List<ProductBindingCouponType> productBindingCoupons = new ArrayList<>();
...@@ -221,14 +420,26 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService { ...@@ -221,14 +420,26 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
return orderItemCreateReq; 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, private CreateOrderRequest convent2NEWCreateOrderRequest(Integer orderClient, AssortmentCustomerInfoVo userLoginInfoDto,
OrderItemCreateReq orderItemList, String shopId, String cardCode,
String shopId, String channel, Integer bizType,
String cardCode, IntegralProductType productBean, String skuId,
String channel, Active active) {
Integer bizType,
Long price){
CreateOrderRequest request = new CreateOrderRequest(); CreateOrderRequest request = new CreateOrderRequest();
String partnerId = userLoginInfoDto.getPartnerId(); String partnerId = userLoginInfoDto.getPartnerId();
request.setOrderClient(orderClient); request.setOrderClient(orderClient);
...@@ -244,19 +455,28 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService { ...@@ -244,19 +455,28 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
request.setUserName(userLoginInfoDto.getNickName()); request.setUserName(userLoginInfoDto.getNickName());
request.setOrderState(1); request.setOrderState(1);
request.setPayState(1); request.setPayState(1);
if(StringUtils.isNotBlank(cardCode)){ if (StringUtils.isNotBlank(cardCode)) {
request.setPayChannel("10102"); request.setPayChannel("10102");
request.setPayChannelName("储值卡支付"); 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.setActualPayAmount(cashPrice.longValue());
request.setOriginalAmount(price); request.setOriginalAmount(settlementAmount.longValue());
request.setOrderType(OrderType.GENERAL_DINE_IN.getIndex()); 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<>(); List<DeliveryContactInfoCreateReq> deliveryContactInfoList = new ArrayList<>();
DeliveryContactInfoCreateReq deliveryContactInfoCreateReq = new DeliveryContactInfoCreateReq(); DeliveryContactInfoCreateReq deliveryContactInfoCreateReq = new DeliveryContactInfoCreateReq();
......
...@@ -152,7 +152,7 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ ...@@ -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) { // if (userScoreRequest != null) {
// BaseResponse userScoreResponse = memberScoreService.useScore(userScoreRequest, ""); // BaseResponse userScoreResponse = memberScoreService.useScore(userScoreRequest, "");
// if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, userScoreResponse.getCode())) { // if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, userScoreResponse.getCode())) {
......
package cn.freemud.service.thirdparty; package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign; import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.entities.dto.user.*;
import cn.freemud.entities.dto.user.UserScoreRequest;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; 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"}) @RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface CustomerPropertyClient { public interface CustomerPropertyClient {
//
@LogIgnoreFeign(logMessage="useScore") @LogIgnoreFeign(logMessage="useScore")
@PostMapping(value = "user/useScore") @PostMapping(value = "/propertyservice/score/pay")
BaseResponse useScore(@RequestBody UserScoreRequest userScoreRequest); 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; ...@@ -12,7 +12,9 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; 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"}) @RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface PointMallProductClient { public interface PointMallProductClient {
...@@ -22,7 +24,7 @@ public interface PointMallProductClient { ...@@ -22,7 +24,7 @@ public interface PointMallProductClient {
*/ */
@LogIgnoreFeign(logMessage="listProductInfos",statusCodeFieldName=ResponseCodeKeyConstant.STATUS_CODE) @LogIgnoreFeign(logMessage="listProductInfos",statusCodeFieldName=ResponseCodeKeyConstant.STATUS_CODE)
@PostMapping("/biz/product/listProductInfo") @PostMapping("/biz/product/listProductInfo")
PointMallListProductInfoResponse<IntegralProductType> listProductInfo(@RequestBody PointMallListProductInfoRequest productInfoRequest); PointMallListProductInfoResponse<List<IntegralProductType>> listProductInfo(@RequestBody PointMallListProductInfoRequest productInfoRequest);
@LogIgnoreFeign(logMessage="listProductInfos",statusCodeFieldName=ResponseCodeKeyConstant.STATUS_CODE) @LogIgnoreFeign(logMessage="listProductInfos",statusCodeFieldName=ResponseCodeKeyConstant.STATUS_CODE)
......
...@@ -77,7 +77,7 @@ public class EncircleOrderServiceImplTest { ...@@ -77,7 +77,7 @@ public class EncircleOrderServiceImplTest {
createOrderVo.setPartnerId("1864"); createOrderVo.setPartnerId("1864");
createOrderVo.setShopId("2700968"); createOrderVo.setShopId("2700968");
createOrderVo.setPeopleNumber(12); 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 { ...@@ -111,7 +111,7 @@ public class EncircleOrderServiceImplTest {
CreateReserveOrderVo reserveOrderVo = new CreateReserveOrderVo(); CreateReserveOrderVo reserveOrderVo = new CreateReserveOrderVo();
reserveOrderVo.setSessionId("00e7be90e5fd45b5568da134a36a8d44ea01bd92"); reserveOrderVo.setSessionId("00e7be90e5fd45b5568da134a36a8d44ea01bd92");
reserveOrderVo.setRepastNumber(5); 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 { ...@@ -133,7 +133,7 @@ public class EncircleOrderServiceImplTest {
//TODO: Test goes here... //TODO: Test goes here...
CreateReserveOrderVo createReserveOrderVo = new CreateReserveOrderVo(); CreateReserveOrderVo createReserveOrderVo = new CreateReserveOrderVo();
createReserveOrderVo.setSessionId("fbc82ad9a7449590bcd56f96db1b11352e1f3470"); 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 { ...@@ -97,6 +97,7 @@ public class OrderSdkService {
* @param trackingNo 交易号 * @param trackingNo 交易号
* @return * @return
*/ */
@Deprecated
public QueryByCodeResponse getOrderInfo(String orderId, Integer withOperationHistory, String trackingNo) { public QueryByCodeResponse getOrderInfo(String orderId, Integer withOperationHistory, String trackingNo) {
String url = InterfaceAddressConstant.GET_ORDER_INFO + "?orderCode=" + orderId; String url = InterfaceAddressConstant.GET_ORDER_INFO + "?orderCode=" + orderId;
if (withOperationHistory != null && withOperationHistory == 1) { 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