记得上下班打卡 | git大法好,push需谨慎

Commit 9b06a4d5 authored by 胡佳晨's avatar 胡佳晨

修改 用户申请退款 [待测试]

parent dafba009
......@@ -33,8 +33,8 @@ public class GoblinStatusConst {
ORDER_STATUS_5(5, "取消订单(用户未付款前取消订单)"),
ORDER_STATUS_6(6, "退款通过(用户已经付款但是商城还未发货,用户发出退款申请,商城同意退款)"),
ORDER_STATUS_7(7, "退货通过(用户已经确认收货后用户发出退货申请,商城同意所有退货申请 ,一个订单可能有多个单品)"),
ORDER_STATUS_61(61, "发起-退款通过(用户已经付款但是商城还未发货,用户发出退款申请,商城同意退款)"),
ORDER_STATUS_71(71, "发起-退货通过(用户已经确认收货后用户发出退货申请,商城同意所有退货申请 ,一个订单可能有多个单品)"),
ORDER_STATUS_61(61, "发起-退款(用户已经付款但是商城还未发货,用户发出退款申请,商城同意退款)"),
ORDER_STATUS_71(71, "发起-退货(用户已经确认收货后用户发出退货申请,商城同意所有退货申请 ,一个订单可能有多个单品)"),
ORDER_LOG_STATUS_11(11, "确认付款"),
ORDER_LOG_STATUS_12(12, "修改金额"),
......
......@@ -25,6 +25,11 @@ public class GoblinAppOrderDetailsVo implements Serializable, Cloneable {
private GoblinStoreOrderVo storeOrderVo;
@ApiModelProperty(value = " orderSkuVo")
List<GoblinOrderSkuVo> orderSkuVos;
@ApiModelProperty(value = "过期倒计时")
private Long restTime;
@ApiModelProperty(value = "是否可退款")
private int canRefund;
private static final GoblinAppOrderDetailsVo obj = new GoblinAppOrderDetailsVo();
public static GoblinAppOrderDetailsVo getNew() {
try {
......
......@@ -31,6 +31,12 @@ public class GoblinAppOrderListVo implements Serializable, Cloneable {
private String storeName;
@ApiModelProperty(value = " 订单状态[0-待付款(用户刚下单)|2-代发货(用户付完款 等待商城发货)3-代收货(商城已经发货 等待用户确认收货)|4-已完成(用户已经确认收货 订单结束)|5-取消订单(用户未付款前取消订单)|6-退款通过(用户已经付款但是商城还未发货,用户发出退款申请,商城同意退款)|7-退货通过(用户已经确认收货后用户发出退货申请,商城同意所有退货申请 ,一个订单可能有多个单品)]")
private Integer status;
@ApiModelProperty(value = "过期倒计时", example = "")
private Long restTime;
@ApiModelProperty(value = "活动id")
private String marketId;
@ApiModelProperty(value = "活动类型[ZZ-正在下单]")
private String marketType;
@ApiModelProperty(value = " sku")
List<GoblinOrderSkuVo> orderSkuVos;
private static final GoblinAppOrderListVo obj = new GoblinAppOrderListVo();
......
......@@ -98,6 +98,10 @@ public class GoblinStoreOrderVo implements Serializable, Cloneable {
private String paymentId;
@ApiModelProperty(value = " paymentType")
private String paymentType;
@ApiModelProperty(value = " 活动类型[ZZ-正在下单]")
private String marketType;
@ApiModelProperty(value = " 活动id")
private String marketId;
@ApiModelProperty(value = " 创建时间")
private String createdAt;
......
......@@ -296,6 +296,16 @@ public class GoblinStoreOrder implements Serializable,Cloneable {
*/
private String logisticsCode;
/**
* 活动类型
*/
private String marketType;
/**
* 活动id
*/
private String marketId;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
......
......@@ -494,17 +494,21 @@ create table goblin_store_order
price_coupon decimal(8, 2) default 0.0 comment '券优惠金额',
price_red_envelope decimal(8, 2) default 0.0 comment '红包优惠金额',
price_voucher decimal(8, 2) default 0.0 comment '总优惠价格',
status int default 0 comment '订单状态[0-待付款(用户刚下单)|2-代发货(用户付完款 等待商城发货)3-代收货(商城已经发货 等待用户确认收货)|4-已完成(用户已经确认收货 订单结束)|5-取消订单(用户未付款前取消订单)|6-退款通过(用户已经付款但是商城还未发货,用户发出退款申请,商城同意退款)|7-退货通过(用户已经确认收货后用户发出退货申请,商城同意所有退货申请 ,一个订单可能有多个单品)]',
status int default 0 comment '订单状态[0-待付款(用户刚下单)|2-代发货(用户付完款 等待商城发货)|3-代收货(商城已经发货 等待用户确认收货)|4-已完成(用户已经确认收货 订单结束)|5-取消订单(用户未付款前取消订单)|6-退款通过(用户已经付款但是商城还未发货,用户发出退款申请,商城同意退款)|7-退货通过(用户已经确认收货后用户发出退货申请,商城同意所有退货申请 ,一个订单可能有多个单品)|61-6的发起状态|71-7的发起状态]',
status_pre_sale int default 0 comment '预售订单状态[0-第一阶段未支付|1-第一阶段支付第二阶段未支付|3-第二阶段支付]',
status_evaluation int default 0 comment '评价状态[0-未评价|1-已评价]',
red_envelope_code varchar(64) default '' comment '红包code',
ucoupon_id varchar(64) default '' comment '券id',
use_point decimal default 0.0 comment '使用积分数',
pay_type varchar(32) default '' comment '支付类型[wepay-微信支付|alipay-阿里支付|douyinpay-抖音支付|unionpay-银联支付]',
device_from varchar(32) default '' comment '支付类型来源[wap|js]',
payment_type varchar(32) default '' comment '支付中心返回实际支付类型',
payment_id varchar(32) default '' comment '支付中心返回支付id',
cancel_reason varchar(256) default '' comment '取消原因',
pre_deposit_pay int default 0 comment '是否存在预付款[0-不存在|1-存在]',
source varchar(32) default '' comment '订单来源[app|h5|applet]',
version varchar(32) default '' comment '版本号',
is_member int(8) default 0 comment '是否会员',
order_type int default 0 comment '订单类型[0-普通订单|1-定金预售订单|2-全款预售订单|3-拼团订单|4-众筹全款|5-众筹1元|6-众筹无回报|7-虚拟商品订单|8-社区团购订单|9-正在下单]',
pay_time datetime default null comment '支付时间',
cancel_time datetime default null comment '取消时间',
......@@ -515,7 +519,7 @@ create table goblin_store_order
s_recommended_id varchar(64) default '' comment '订单二级推广人的会员id(订单会员的二级推广人 ,也就是订单会员的上级的上级会员id) 如果为'' 则说明该订单会员没有推荐人或者不是推广订单',
crowdfunding_id varchar(64) default '' comment '众筹id',
lottery_status varchar(64) default '' comment '抽奖状态[0-未抽奖|1-中奖|2-已抽奖]',
write_off_code varchar(64) default '' comment '虚拟订单核yi码[正在支付取货码]',
write_off_code varchar(64) default '' comment '虚拟订单核码[正在支付取货码]',
pay_store_id varchar(64) default '' comment '钱到了哪个支付平台 平台的订单id为''',
pay_countdown_minute int DEFAULT 5 COMMENT '订单过期时间(分钟)',
ip_address varchar(32) DEFAULT '' COMMENT 'ip地址',
......@@ -583,6 +587,7 @@ create table goblin_order_sku
order_id varchar(64) default '' comment '订单id',
spu_id varchar(64) default '' comment '商品id',
sku_id varchar(64) default '' comment '款式id',
status int default 0 comment '订单状态[0-待付款(用户刚下单)|2-代发货(用户付完款 等待商城发货)|3-代收货(商城已经发货 等待用户确认收货)|4-已完成(用户已经确认收货 订单结束)|5-取消订单(用户未付款前取消订单)|6-退款通过(用户已经付款但是商城还未发货,用户发出退款申请,商城同意退款)|7-退货通过(用户已经确认收货后用户发出退货申请,商城同意所有退货申请 ,一个订单可能有多个单品)|61-6的发起状态|71-7的发起状态]',
num int default 0 comment '数量',
sku_price decimal(8, 2) default 0 comment '款式原价',
sku_price_actual decimal(8, 2) default 0 comment '款式实付价',
......@@ -590,7 +595,7 @@ create table goblin_order_sku
sku_name varchar(64) default '' comment '款式名称',
sku_no varchar(64) default '' comment '款式编号',
sku_image varchar(128) default '' comment '款式图片',
sku_specs varchar(64) default '' comment '款式规格',
sku_specs varchar(256) default '' comment '款式规格',
price_modify decimal(8, 2) default 0 comment '管理员优惠价格',
price_voucher decimal(8, 2) default 0 comment '款式最终优惠价',
commission_rate decimal(8, 2) default 0 comment '单品的分拥比例 0 表示不分佣金',
......@@ -611,7 +616,7 @@ create table goblin_order_operation_log
order_log_id varchar(64) default '' comment '订单操作日志id',
order_id varchar(64) default '' comment '订单id',
type int default 0 comment '操作类型[1-确认付款|2-修改金额|3-发货|4-取消订单|5-修改物流单号|6-核销虚拟商品订单]',
remark varchar(255) default '' comment '说明',
remark varchar(2048) default '' comment '说明',
operation_name varchar(32) default '' comment '操作人',
created_at datetime,
updated_at datetime,
......@@ -657,7 +662,7 @@ create table goblin_back_order
sku_id_nums varchar(255) default '' comment '退货的单品ID多个用,分开 退款的时候不需要,因为退款只能整单退1001-1,1002-3 表示单品id为1001 的单品退货1件 单品id为1002的单品退货3件',
type int default 0 comment '类型[1-退款|2-退货]',
reason varchar(255) default '' comment '退款/退货原因[1-不想买了|2-收货人信息有误|3-未按指定时间发货|4-其他|5-不想买了|6-商品质量问题|7-收到商品与描述不符|8-其他|9-系统自动申请]',
`desc` varchar(255) default '' comment '问题说明',
describes varchar(255) default '' comment '问题说明',
credential int default 0 comment '申请凭据[0-没有任何凭据|1-有发票|2-有质检报告]',
back_type int default 0 comment '返回方式[1-快递返回]目前只有快递返回 (退货的时候用户给商城寄送商品)',
real_back_price decimal(8, 2) default 0 comment '退货时候实际退款金额',
......@@ -690,7 +695,7 @@ create table goblin_back_order_log
back_order_log_id varchar(64) default '' comment '订单退单log表id',
back_order_id varchar(64) default '' comment '退款订单id',
operation_type int default 0 comment '操作人类型[1-用户|2-商家]',
message varchar(255) default '' comment '留言',
message varchar(2048) default '' comment '留言',
status int default 0 comment '退款申请[1-退款申请(用户发送退款请求)|2-退款成功(商家同意退款)|3-退款拒绝(商家拒绝退款)|4-退货申请(用户发起退货请求)|5-退货拒绝(商家拒绝退货)|6-退货审核通过等待用户填写物流(商家审核通过,等待用户寄回商品)|7-待收货(用户已确认)|8-退货完成(商家收货并且同意退款给用户)|9-退货失败(商家不同意退款)',
created_at datetime,
updated_at datetime,
......@@ -708,7 +713,8 @@ create table goblin_self_marketing
self_market_id varchar(64) default '' comment '官方营销表id',
name varchar(64) default '' comment '营销名称',
type int default 0 comment '营销类型[1-正在下单]',
`desc` varchar(255) default '' comment '营销描述',
status int default 0 comment '活动状态[-1-全部|0-等待开始|1-活动中|2-活动结束|7-停用]',
describes varchar(255) default '' comment '营销描述',
start_time datetime default null comment '营销开始时间',
end_time datetime default null comment '营销结束时间营销为定金预售的时候,该时间也是第二阶段付款的时间营销为全款预售的时候,该时间也是发货时间',
del_flag int default 0 comment '删除标记[0-未删除|1-删除]',
......@@ -723,6 +729,22 @@ create table goblin_self_marketing
KEY `self_marketing_name_index` (`name`)
) engine = InnoDB comment '官方(平台)营销表[活动]表';
drop table if exists goblin_marketing_zhengzai_relation;
create table goblin_marketing_zhengzai_relation
(
mid bigint unsigned auto_increment primary key,
self_market_id varchar(64) default '' comment '官方营销表id',
store_id varchar(64) default '' comment '商铺id',
show_time datetime default null comment '可显示时间',
del_tag int default 0 comment '删除标记[0-未删除|1-删除]',
created_at datetime,
updated_at datetime,
comment text,
KEY `marketing_zhengzai_relation_self_market_id_index` (`self_market_id`),
KEY `marketing_zhengzai_relation_tore_id_index` (`store_id`),
KEY `marketing_zhengzai_relation_del_tag_index` (`del_tag`)
) engine = InnoDB comment '可参加官方活动的店铺表';
drop table if exists goblin_marketing_zhengzai;
create table goblin_marketing_zhengzai
(
......@@ -734,8 +756,10 @@ create table goblin_marketing_zhengzai
sku_id varchar(64) default '' comment '款式id',
price_marketing decimal(8, 2) default 0 comment '活动价格',
stock_marketing int default 0 comment '活动库存',
buy_limit int default 0 comment '用户限购[0-不限购|x-限购数量]',
buy_type int default 0 comment '购买条件[0-全部用户|1-仅支持会员|2-指定用户可买]',
buy_factor int default 0 comment '购买限制[0-全部用户|1-仅会员|2-指定用户]',
buy_roster varchar(128) default '' comment '购买限制人员名单[购买限制为2-指定用户时必填]',
buy_limit int default 0 comment '限量[0-无限制|X:限购数量]',
del_flag int default 0 comment '删除标记[0-未删除|1-删除]',
created_at datetime,
updated_at datetime,
comment text,
......@@ -745,7 +769,7 @@ create table goblin_marketing_zhengzai
KEY `marketing_zhengzai_spu_id_index` (`spu_id`),
KEY `marketing_zhengzai_sku_id_index` (`sku_id`),
KEY `marketing_zhengzai_buy_limit_index` (`buy_limit`),
KEY `marketing_zhengzai_buy_type_index` (`buy_type`)
KEY `marketing_zhengzai_buy_type_index` (`buy_factor`)
) engine = InnoDB comment '官方正在下单营销内容表';
drop table if exists goblin_store_marketing;
......@@ -756,7 +780,8 @@ create table goblin_store_marketing
name varchar(64) default '' comment '营销名称',
type int default 0 comment '营销类型[1-满赠|2-限时秒杀]',
store_id varchar(64) default '' comment '商铺id',
`desc` varchar(255) default '' comment '营销描述',
status int default 0 comment '活动状态[-1-全部|0-等待开始|1-活动中|2-活动结束|7-停用]',
describes varchar(255) default '' comment '营销描述',
start_time datetime default null comment '营销开始时间',
end_time datetime default null comment '营销结束时间营销为定金预售的时候,该时间也是第二阶段付款的时间营销为全款预售的时候,该时间也是发货时间',
del_flag int default 0 comment '删除标记[0-未删除|1-删除]',
......@@ -778,14 +803,16 @@ drop table if exists goblin_store_market_purchasing;
create table goblin_store_market_purchasing
(
mid bigint unsigned auto_increment primary key,
purchase_id varchar(64) default '' comment '营销关联表id',
purchase_id varchar(64) default '' comment '小时秒杀表id',
store_market_id varchar(64) default '' comment '商铺营销表id',
spu_id varchar(64) default '' comment 'spu_id',
sku_id varchar(64) default '' comment 'sku_id',
store_id varchar(64) default '' comment '商铺id',
price_marketing decimal(8, 2) default 0 comment '活动价格',
stock_marketing int default 0 comment '活动库存',
buy_limit int default 0 comment '用户限购[0-不限购|x-限购数量]',
buy_type int default 0 comment '购买条件[0-全部用户|1-仅支持会员|2-指定用户可买]',
buy_factor int default 0 comment '购买限制[0-全部用户|1-仅会员|2-指定用户]',
buy_roster varchar(128) default '' comment '购买限制人员名单[购买限制为2-指定用户时必填]',
buy_limit int default 0 comment '限量[0-无限制|X:限购数量]',
del_flag int default 0 comment '删除标记[0-未删除|1-删除]',
created_at datetime,
updated_at datetime,
......@@ -799,4 +826,7 @@ alter table goblin_order_sku add spu_name varchar(255) default '' comment 'spu
alter table goblin_order_sku add spu_pic varchar(255) default '' comment 'spu图片';
alter table goblin_store_order add store_name varchar(255) default '' comment '商铺名称';
alter table goblin_store_order add market_type varchar(255) default '' comment '活动类型[ZZ-正在下单]';
alter table goblin_store_order add market_id varchar(255) default '' comment '活动id';
alter table goblin_back_order add back_price_express decimal (8,2) default 0 comment '退款快递费';
\ No newline at end of file
package com.liquidnet.service.goblin.service.impl;
import com.google.common.base.Joiner;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
......@@ -12,6 +9,7 @@ import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.entity.GoblinBackOrder;
import com.liquidnet.service.goblin.entity.GoblinBackOrderLog;
import com.liquidnet.service.goblin.entity.GoblinStoreOrder;
import com.liquidnet.service.goblin.param.GoblinAppOrderRefundParam;
import com.liquidnet.service.goblin.service.IGoblinOrderAppService;
import com.liquidnet.service.goblin.util.*;
......@@ -23,8 +21,13 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS;
@Service
@Slf4j
public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
......@@ -55,6 +58,7 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
GoblinStoreOrderVo orderVo = redisUtils.getGoblinOrder(orderId);
GoblinAppOrderListVo vo = GoblinAppOrderListVo.getNew();
BeanUtils.copyProperties(orderVo, vo);
vo.setRestTime(getRestTime(orderVo));
List<GoblinOrderSkuVo> skuVos = ObjectUtil.getGoblinOrderSkuVoArrayList();
for (String orderSkuId : orderVo.getOrderSkuVoIds()) {
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(orderSkuId);
......@@ -79,6 +83,17 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(orderSkuId);
skuVos.add(orderSkuVo);
}
LocalDateTime canRefundTime = getCanRefundTime(orderVo);
if (canRefundTime == null) {
vo.setCanRefund(0);
} else {
if (LocalDateTime.now().isAfter(canRefundTime)) {
vo.setCanRefund(0);
} else {
vo.setCanRefund(1);
}
}
vo.setRestTime(getRestTime(orderVo));
vo.setStoreOrderVo(orderVo);
vo.setOrderSkuVos(skuVos);
return ResponseDto.success(vo);
......@@ -86,6 +101,18 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
@Override
public ResponseDto<Boolean> applyRefund(GoblinAppOrderRefundParam param) {
LinkedList<String> sqls = CollectionUtil.linkedListString();
sqls.add(SqlMapping.get("goblin_order.user.applyRefund"));
sqls.add(SqlMapping.get("goblin_order.store.orderStatus"));
sqls.add(SqlMapping.get("goblin_order.store.orderSkuStatus"));
sqls.add(SqlMapping.get("goblin_order.store.refundLog"));
LinkedList<Object[]> applyRefund = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> orderStatus = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> orderSkuStatus = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> refundLog = CollectionUtil.linkedListObjectArr();
String uid = CurrentUtil.getCurrentUid();
LocalDateTime now = LocalDateTime.now();
String nowStr = DateUtil.getNowTime();
......@@ -97,6 +124,7 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_5.getValue()) {
return ResponseDto.failure("不可操作");
}
//退款订单生成
GoblinBackOrder backOrder = GoblinBackOrder.getNew();
backOrder.setBackOrderId(IDGenerator.nextTimeId2());
backOrder.setBackCode(IDGenerator.storeRefundCode(orderVo.getMasterOrderCode()));
......@@ -107,7 +135,7 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
backOrder.setType(GoblinStatusConst.Type.BACK_TYPE_1.getValue());
backOrder.setStatus(GoblinStatusConst.Status.ORDER_BACK_STATUS_1.getValue());
backOrder.setCreatedAt(now);
if (orderVo.getMailNo() == null || orderVo.getMailNo().equals("")) {//未发货
if (orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_2.getValue()) {//未发货
backOrder.setRealBackPrice(orderVo.getPriceActual());
backOrder.setBackPriceExpress(orderVo.getPriceExpress());
backOrder.setReason(param.getReason());
......@@ -129,10 +157,18 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
vo.setCreatedAt(nowStr);
List<GoblinBackOrderSkuVo> orderSkuVoList = ObjectUtil.goblinBackOrderSkuVoArrayList();
if (param.getOrderSkuId() == null) {
//订单状态修改
orderVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_61.getValue());
orderStatus.add(new Object[]{
orderVo.getStatus(), now,
orderVo.getOrderId(), now, now
});
for (String orderSkuId : orderVo.getOrderSkuVoIds()) {
//订单款式状态修改
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(orderSkuId);
orderSkuVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_61.getValue());
GoblinBackOrderSkuVo backOrderSkuVo = GoblinBackOrderSkuVo.getNew();
backOrderSkuVo.setOrderSkuId(orderSkuId);
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(orderSkuId);
backOrderSkuVo.setSpuId(orderSkuVo.getSpuId());
backOrderSkuVo.setSpuName(orderSkuVo.getSpuName());
backOrderSkuVo.setSkuId(orderSkuVo.getSkuId());
......@@ -142,11 +178,21 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
backOrderSkuVo.setCreatedAt(nowStr);
orderSkuVoList.add(backOrderSkuVo);
backOrderLog(orderVo, orderSkuVo, now);
//redis
redisUtils.setGoblinOrderSku(orderSkuVo.getOrderSkuId(), orderSkuVo);
//mongo
mongoUtils.updateGoblinOrderSkuVo(orderSkuVo.getOrderSkuId(), orderSkuVo);
orderSkuStatus.add(new Object[]{
orderSkuVo.getStatus(), now,
orderSkuVo.getOrderSkuId(), now, now
});
}
} else {
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(param.getOrderSkuId());
//订单款式状态修改
orderSkuVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_61.getValue());
GoblinBackOrderSkuVo backOrderSkuVo = GoblinBackOrderSkuVo.getNew();
backOrderSkuVo.setOrderSkuId(param.getOrderSkuId());
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(param.getOrderSkuId());
backOrderSkuVo.setSpuId(orderSkuVo.getSpuId());
backOrderSkuVo.setSpuName(orderSkuVo.getSpuName());
backOrderSkuVo.setSkuId(orderSkuVo.getSkuId());
......@@ -156,6 +202,14 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
backOrderSkuVo.setCreatedAt(nowStr);
orderSkuVoList.add(backOrderSkuVo);
backOrderLog(orderVo, orderSkuVo, now);
//redis
redisUtils.setGoblinOrderSku(orderSkuVo.getOrderSkuId(), orderSkuVo);
//mongo
mongoUtils.updateGoblinOrderSkuVo(orderSkuVo.getOrderSkuId(), orderSkuVo);
orderSkuStatus.add(new Object[]{
orderSkuVo.getStatus(), now,
orderSkuVo.getOrderSkuId(), now, now
});
}
vo.setBackOrderSkuVos(orderSkuVoList);
//添加日志
......@@ -163,29 +217,27 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
backOrderLog.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_21.getValue());
backOrderLog.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_1.getValue());
backOrderLog.setMessage("用户发起发起:" + JsonUtils.toJson(param));
//mysql
//redis
redisUtils.setBackOrderVo(backOrder.getBackOrderId(), vo);
redisUtils.setGoblinOrder(orderVo.getOrderId(), orderVo);
//mongo
mongoUtils.insertGoblinBackOrderVo(vo);
mongoUtils.updateGoblinStoreOrderVo(orderVo.getOrderId(), orderVo);
//mysql
queueUtils.sendMsgByRedis(
MQConst.GoblinQueue.GOBLIN_USER_ORDER_OPERA.getKey(),
SqlMapping.get("goblin_order.user.applyRefund",
backOrder.getBackOrderId(), backOrder.getBackCode(), backOrder.getOrderId(),
backOrder.getOrderCode(), backOrder.getStoreId(), backOrder.getUserId(),
backOrder.getSkuIdNums(), backOrder.getType(), backOrder.getReason(),
backOrder.getDescribes(), backOrder.getRealBackPrice(),backOrder.getBackPriceExpress(), backOrder.getStatus(),
backOrder.getCreatedAt()
)
);
applyRefund.add(new Object[]{
backOrder.getBackOrderId(), backOrder.getBackCode(), backOrder.getOrderId(),
backOrder.getOrderCode(), backOrder.getStoreId(), backOrder.getUserId(),
backOrder.getSkuIdNums(), backOrder.getType(), backOrder.getReason(),
backOrder.getDescribes(), backOrder.getRealBackPrice(), backOrder.getBackPriceExpress(), backOrder.getStatus(),
backOrder.getCreatedAt()
});
//添加日志
queueUtils.sendMsgByRedis(
MQConst.GoblinQueue.GOBLIN_USER_ORDER_OPERA.getKey(),
SqlMapping.get("goblin_order.store.refundLog",
backOrderLog.getBackOrderLogId(), backOrderLog.getBackOrderId(), backOrderLog.getOperationType(),
backOrderLog.getMessage(), backOrderLog.getOperationName(), backOrderLog.getStatus(), now
)
);
refundLog.add(new Object[]{
backOrderLog.getBackOrderLogId(), backOrderLog.getBackOrderId(), backOrderLog.getOperationType(),
backOrderLog.getMessage(), backOrderLog.getOperationName(), backOrderLog.getStatus(), now
});
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_USER_ORDER_OPERA.getKey(),
SqlMapping.get("goblin_order.pay.again", SqlMapping.gets(sqls, applyRefund, orderStatus, orderSkuStatus, refundLog)));
return ResponseDto.success();
}
......@@ -220,4 +272,37 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
logVo.setCreatedAt(now);
mongoUtils.insertGoblinOrderLogVo(logVo);
}
//获取 订单剩余可支付时间[S]
private long getRestTime(GoblinStoreOrderVo orderVo) {
long restTime = 0L;
if (orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_0.getValue()) {
try {
Date OverdueAt = DateUtil.addMin(DateUtil.parse(orderVo.getCreatedAt(), "yyyy-MM-dd HH:mm:ss"), orderVo.getPayCountdownMinute());
restTime = DateUtil.intervalSeconds(
OverdueAt,
DateUtil.parse(DateUtil.getNowTime(), "yyyy-MM-dd HH:mm:ss")
);
if (restTime <= 0L) {
restTime = 0L;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return restTime;
}
//获取 可申请退款时间
private LocalDateTime getCanRefundTime(GoblinStoreOrderVo orderVo) {
LocalDateTime canRefundTimeDateTime = null;
if (orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_2.getValue()) {
try {
canRefundTimeDateTime = LocalDateTime.parse(orderVo.getPayTime(), DTF_YMD_HMS).plusDays(7);
} catch (Exception e) {
e.printStackTrace();
}
}
return canRefundTimeDateTime;
}
}
......@@ -196,10 +196,14 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
BigDecimal voucherMarket = BigDecimal.ZERO;//活动优惠金额
String writeOffCode = ""; //取货码
List<GoblinOrderSku> goblinOrderSkuList = ObjectUtil.getGoblinOrderSkuArrayList();
String marketId = "";
String marketType = "";
for (GoblinOrderSkuParam skuParam : storeParam.getGoblinOrderSkuParamArrayList()) {
String pre = GoblinStatusConst.MarketPreStatus.getPre(skuParam.getSkuId());
GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(skuParam.getSkuId());
GoblinGoodsInfoVo spuVo = redisUtils.getGoodsInfoVo(skuParam.getSpuId());
marketId = spuVo.getMarketId();
marketType = pre;
skuName = skuName.concat(skuVo.getName()).concat(",");
if (pre != null && pre.contains(GoblinStatusConst.MarketPreStatus.MARKET_PRE_PURCHASE.getValue())) {
writeOffCode = "EMPTY";
......@@ -286,6 +290,9 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
storeOrder.setPayCountdownMinute(5);
storeOrder.setIpAddress(CurrentUtil.getCliIpAddr());
storeOrder.setCreatedAt(now);
storeOrder.setMarketId(marketId);
storeOrder.setMarketType(marketType);
//订单attr
GoblinOrderAttr orderAttr = GoblinOrderAttr.getNew();
orderAttr.setOrderAttrId(IDGenerator.nextTimeId2());
......@@ -391,7 +398,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
sqlDataOrder.add(new Object[]{
storeOrder.getMasterOrderCode(), storeOrder.getOrderId(), storeOrder.getStoreId(), storeOrder.getStoreName(), storeOrder.getOrderCode(), storeOrder.getUserId(), storeOrder.getUserName(), storeOrder.getUserMobile(), storeOrder.getPriceTotal(),
storeOrder.getPriceActual(), storeOrder.getPriceRefund(), storeOrder.getPriceExpress(), storeOrder.getPriceCoupon(), storeOrder.getPriceVoucher(), storeOrder.getStatus(), storeOrder.getUcouponId(), storeOrder.getPayType(), storeOrder.getDeviceFrom(),
storeOrder.getSource(), storeOrder.getVersion(), storeOrder.getIsMember(), storeOrder.getOrderType(), storeOrder.getWriteOffCode(), storeOrder.getPayCountdownMinute(), storeOrder.getIpAddress(), storeOrder.getPayCode(), storeOrder.getCreatedAt()
storeOrder.getSource(), storeOrder.getVersion(), storeOrder.getIsMember(), storeOrder.getOrderType(), storeOrder.getWriteOffCode(), storeOrder.getPayCountdownMinute(), storeOrder.getIpAddress(), storeOrder.getPayCode(), storeOrder.getMarketId(),storeOrder.getMarketType(),storeOrder.getCreatedAt()
});
GoblinOrderAttr orderAttr = item.getOrderAttr();
sqlDataAttr.add(new Object[]{
......
......@@ -7,12 +7,8 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.entity.GoblinBackOrder;
import com.liquidnet.service.goblin.entity.GoblinBackOrderLog;
import com.liquidnet.service.goblin.entity.GoblinOrderOperationLog;
import com.liquidnet.service.goblin.param.RefundCallbackParam;
import com.liquidnet.service.goblin.service.manage.IGoblinStoreBackOrderService;
import com.liquidnet.service.goblin.service.manage.IGoblinStoreOrderService;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil;
......@@ -27,7 +23,6 @@ import org.springframework.util.MultiValueMap;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@Service
......@@ -212,7 +207,7 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
//mysql
queueUtils.sendMsgByRedis(
MQConst.GoblinQueue.GOBLIN_STORE_ORDER_OPERA.getKey(),
SqlMapping.get("goblin_order.store.changeStatus",
SqlMapping.get("goblin_order.store.backOrderStatus",
backOrderVo.getStatus(), now,
backOrderId, now, now
)
......
......@@ -54,7 +54,7 @@ goblin.self.market.insertRelation=INSERT INTO goblin_marketing_zhengzai (`zhengz
goblin.self.market.updateRelation=UPDATE goblin_marketing_zhengzai SET price_marketing=? ,stock_marketing=? , buy_factor=?,buy_roster=?,buy_limit=?,updated_at=? WHERE self_market_id =? and store_id =?
goblin.self.market.delSpuRelation=UPDATE goblin_marketing_zhengzai SET del_flag = ?,updated_at = ? WHERE self_market_id =? and store_id =? and spu_id=?
#---- 订单创建&支付
goblin.order.create.order_insert=INSERT INTO goblin_store_order (`master_order_code`,`order_id`,`store_id`,`store_name`,`order_code`,`user_id`,`user_name`,`user_mobile`,`price_total`,`price_actual`,`price_refund`,`price_express`,`price_coupon`,`price_voucher`,`status`,`ucoupon_id`,`pay_type`,`device_from`,`source`,`version`,`is_member`,`order_type`,`write_off_code`,`pay_countdown_minute`,`ip_address`,`pay_code`,`created_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
goblin.order.create.order_insert=INSERT INTO goblin_store_order (`master_order_code`,`order_id`,`store_id`,`store_name`,`order_code`,`user_id`,`user_name`,`user_mobile`,`price_total`,`price_actual`,`price_refund`,`price_express`,`price_coupon`,`price_voucher`,`status`,`ucoupon_id`,`pay_type`,`device_from`,`source`,`version`,`is_member`,`order_type`,`write_off_code`,`pay_countdown_minute`,`ip_address`,`pay_code`,`market_id`,`market_type`,`created_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
goblin.order.create.attr_insert=INSERT INTO goblin_order_attr (`order_attr_id`,`order_id`,`express_contacts`,`express_address`,`express_address_detail`,`express_phone`,`express_type`,`created_at`) VALUES (?,?,?,?,?,?,?,?)
goblin.order.create.sku_insert=INSERT INTO goblin_order_sku (`order_sku_id`,`order_id`,`spu_id`,`spu_name`,`spu_pic`,`sku_id`,`num`,`sku_price`,`sku_price_actual`,`sku_name`,`sku_no`,`sku_image`,`sku_specs`,`price_voucher`,`created_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
goblin_order.pay.order=UPDATE goblin_store_order SET payment_type = ? ,payment_id=?,pay_code = ? ,pay_time = ?,write_off_code = ? ,status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
......@@ -79,7 +79,9 @@ goblin_order.store.refundSkuPrice=UPDATE goblin_order_sku SET price_refund = ? ,
goblin_order.store.refundBackOrder=UPDATE goblin_back_order SET status = ? , updated_at = ? WHERE back_order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
goblin_order.store.changeExpress=UPDATE goblin_back_order SET real_back_price = ? ,back_price_express = ? updated_at = ? WHERE back_order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
goblin_order.store.changeSku=UPDATE goblin_back_order SET real_back_price = ? , updated_at = ? WHERE back_order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
goblin_order.store.changeStatus=UPDATE goblin_back_order SET status = ? , updated_at = ? WHERE back_order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
goblin_order.store.backOrderStatus=UPDATE goblin_back_order SET status = ? , updated_at = ? WHERE back_order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
goblin_order.store.orderStatus=UPDATE goblin_store_order SET status = ? , updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
goblin_order.store.applyRefund=UPDATE goblin_back_order SET status = ? ,reason=?, updated_at = ? WHERE back_order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
......
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