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

Commit d76606f3 authored by zhangguobing's avatar zhangguobing

~api:券商品业务-商品下单+关联人信息记录;

parent b0026567
...@@ -16,4 +16,10 @@ public class GoblinOrderSkuParam { ...@@ -16,4 +16,10 @@ public class GoblinOrderSkuParam {
private String spuId; private String spuId;
@ApiModelProperty(required = true, value = "数量") @ApiModelProperty(required = true, value = "数量")
private Integer number; private Integer number;
@ApiModelProperty(required = false, value = "关联人证件类型:1-大陆身份证,2-港澳通行证,3-台胞证,4-护照,5-军官证")
private Integer idType;
@ApiModelProperty(required = false, value = "关联人姓名")
private String idName;
@ApiModelProperty(required = false, value = "关联人证件号码")
private String idNo;
} }
package com.liquidnet.service.goblin.param; package com.liquidnet.service.goblin.param;
import com.liquidnet.service.goblin.dto.manage.GoblinOrderSkuParam;
import com.liquidnet.service.goblin.entity.GoblinOrderAttr; import com.liquidnet.service.goblin.entity.GoblinOrderAttr;
import com.liquidnet.service.goblin.entity.GoblinOrderSku; import com.liquidnet.service.goblin.entity.GoblinOrderSku;
import com.liquidnet.service.goblin.entity.GoblinStoreOrder; import com.liquidnet.service.goblin.entity.GoblinStoreOrder;
...@@ -9,6 +10,7 @@ import lombok.Data; ...@@ -9,6 +10,7 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;
@ApiModel(value = "GoblinOrderPreParam") @ApiModel(value = "GoblinOrderPreParam")
...@@ -48,6 +50,7 @@ public class GoblinOrderPreParam implements Cloneable{ ...@@ -48,6 +50,7 @@ public class GoblinOrderPreParam implements Cloneable{
private List<GoblinOrderSku> orderSkuList; private List<GoblinOrderSku> orderSkuList;
private List<String> storeSpuIds; private List<String> storeSpuIds;
private List<String> platformSpuIds; private List<String> platformSpuIds;
private Map<String, GoblinOrderSkuParam> orderSkuParamMap;
private static final GoblinOrderPreParam obj = new GoblinOrderPreParam(); private static final GoblinOrderPreParam obj = new GoblinOrderPreParam();
......
package com.liquidnet.service.goblin.param; package com.liquidnet.service.goblin.param;
import com.liquidnet.service.goblin.dto.manage.GoblinOrderSkuParam;
import com.liquidnet.service.goblin.entity.GoblinOrderAttr; import com.liquidnet.service.goblin.entity.GoblinOrderAttr;
import com.liquidnet.service.goblin.entity.GoblinOrderSku; import com.liquidnet.service.goblin.entity.GoblinOrderSku;
import com.liquidnet.service.goblin.entity.GoblinStoreOrder; import com.liquidnet.service.goblin.entity.GoblinStoreOrder;
...@@ -9,6 +10,7 @@ import lombok.Data; ...@@ -9,6 +10,7 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;
@ApiModel(value = "GoblinOrderSqlParam") @ApiModel(value = "GoblinOrderSqlParam")
...@@ -18,6 +20,7 @@ public class GoblinOrderSqlParam implements Cloneable{ ...@@ -18,6 +20,7 @@ public class GoblinOrderSqlParam implements Cloneable{
private GoblinStoreOrder storeOrder; private GoblinStoreOrder storeOrder;
private GoblinOrderAttr orderAttr; private GoblinOrderAttr orderAttr;
private List<GoblinOrderSku> orderSkuList; private List<GoblinOrderSku> orderSkuList;
private Map<String, GoblinOrderSkuParam> orderSkuParamMap;
private static final GoblinOrderSqlParam obj = new GoblinOrderSqlParam(); private static final GoblinOrderSqlParam obj = new GoblinOrderSqlParam();
......
...@@ -3,6 +3,8 @@ package com.liquidnet.service.order.service.impl; ...@@ -3,6 +3,8 @@ package com.liquidnet.service.order.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.constant.LnsRegex;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo; import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo; import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
...@@ -42,6 +44,7 @@ import java.math.BigDecimal; ...@@ -42,6 +44,7 @@ import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.regex.Pattern;
import static com.liquidnet.commons.lang.util.DateUtil.*; import static com.liquidnet.commons.lang.util.DateUtil.*;
...@@ -150,6 +153,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -150,6 +153,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
sqlParam.setStoreOrder(pre.getStoreOrder()); sqlParam.setStoreOrder(pre.getStoreOrder());
sqlParam.setOrderAttr(pre.getOrderAttr()); sqlParam.setOrderAttr(pre.getOrderAttr());
sqlParam.setOrderSkuList(pre.getOrderSkuList()); sqlParam.setOrderSkuList(pre.getOrderSkuList());
sqlParam.setOrderSkuParamMap(pre.getOrderSkuParamMap());
orderSqlParams.add(sqlParam); orderSqlParams.add(sqlParam);
}//GoblinOrderStoreParam }//GoblinOrderStoreParam
if (preParam.getOrderIdList().equals("")) { if (preParam.getOrderIdList().equals("")) {
...@@ -238,6 +242,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -238,6 +242,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
List<String> platformSpuIds = CollectionUtil.linkedListString(); List<String> platformSpuIds = CollectionUtil.linkedListString();
String marketId = ""; String marketId = "";
String marketType = ""; String marketType = "";
Map<String, GoblinOrderSkuParam> orderSkuParamMap = ObjectUtil.cloneGoblinOrderSkuParamMap();
for (GoblinOrderSkuParam skuParam : storeParam.getGoblinOrderSkuParamArrayList()) { for (GoblinOrderSkuParam skuParam : storeParam.getGoblinOrderSkuParamArrayList()) {
String pre = GoblinStatusConst.MarketPreStatus.getPre(skuParam.getSkuId()); String pre = GoblinStatusConst.MarketPreStatus.getPre(skuParam.getSkuId());
GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(skuParam.getSkuId()); GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(skuParam.getSkuId());
...@@ -248,6 +253,46 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -248,6 +253,46 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
if (!(skuVo.getStatus().equals("3") && skuVo.getShelvesStatus().equals("3")) || skuVo.getDelFlg().equals("1")) { if (!(skuVo.getStatus().equals("3") && skuVo.getShelvesStatus().equals("3")) || skuVo.getDelFlg().equals("1")) {
throw new Exception("不可购买"); throw new Exception("不可购买");
} }
// 校验是否需要关联实名人
if (2 == skuVo.getSkuType() && Objects.equals(skuVo.getIsTrueName(), 1)) {// 券类商品 && 需要实名关联
if (Objects.isNull(skuParam.getIdType()) || Objects.isNull(skuParam.getIdName()) || Objects.isNull(skuParam.getIdNo())) {
throw new LiquidnetServiceException("-1", "关联人信息缺失,请核实");
}
switch (skuParam.getIdType()) {// 证件类型:1-大陆身份证,2-港澳通行证,3-台胞证,4-护照,5-军官证
case 1:
if (!Pattern.matches(LnsRegex.Valid.CN_HANZI, skuParam.getIdName())) {
throw new LiquidnetServiceException("-1", "身份证姓名不合规");
}
if (!Pattern.matches(LnsRegex.Valid.CN_ID_CARD_REF, skuParam.getIdNo())) {
throw new LiquidnetServiceException("-1", "身份证号码不合规");
}
break;
case 2:
if (!Pattern.matches(LnsRegex.Valid.CN_ID_CARD_HM, skuParam.getIdNo())) {
throw new LiquidnetServiceException("-1", "港澳居民来往内地通行证号码不合规");
}
break;
case 3:
if (!Pattern.matches(LnsRegex.Valid.CN_ID_CARD_TW, skuParam.getIdNo())) {
throw new LiquidnetServiceException("-1", "台湾居民来往大陆通行证号码不合规");
}
break;
case 4:
if (Pattern.matches(LnsRegex.Valid.CN_ID_CARD_PP, skuParam.getIdNo())) {
throw new LiquidnetServiceException("-1", "不支持中国大陆护照");
}
if (!Pattern.matches(LnsRegex.Valid.CN_ID_CARD_PP_NON, skuParam.getIdNo())) {
throw new LiquidnetServiceException("-1", "护照号码不合规");
}
break;
case 5:
if (!Pattern.matches(LnsRegex.Valid.CN_ID_CARD_MO, skuParam.getIdNo())) {
throw new LiquidnetServiceException("-1", "军官证号不合规");
}
break;
}
orderSkuParamMap.put(skuParam.getSkuId(), skuParam);
}
marketId = spuVo.getMarketId(); marketId = spuVo.getMarketId();
marketType = pre; marketType = pre;
skuName = skuName.concat(skuVo.getName()).concat(","); skuName = skuName.concat(skuVo.getName()).concat(",");
...@@ -435,6 +480,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -435,6 +480,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
preParam.setOrderSkuList(goblinOrderSkuList); preParam.setOrderSkuList(goblinOrderSkuList);
preParam.setStoreSpuIds(storeSpuIds); preParam.setStoreSpuIds(storeSpuIds);
preParam.setPlatformSpuIds(platformSpuIds); preParam.setPlatformSpuIds(platformSpuIds);
preParam.setOrderSkuParamMap(orderSkuParamMap);
return preParam; return preParam;
} }
...@@ -541,14 +587,17 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -541,14 +587,17 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
sqls.add(SqlMapping.get("goblin.order.create.sku_insert")); sqls.add(SqlMapping.get("goblin.order.create.sku_insert"));
sqls.add(SqlMapping.get("goblin.order.create.order_insert")); sqls.add(SqlMapping.get("goblin.order.create.order_insert"));
sqls.add(SqlMapping.get("goblin.order.create.attr_insert")); sqls.add(SqlMapping.get("goblin.order.create.attr_insert"));
sqls.add(SqlMapping.get("goblin_order_sku_assoc.insert"));
LinkedList<Object[]> sqlDataSku = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> sqlDataSku = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlDataOrder = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> sqlDataOrder = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlDataAttr = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> sqlDataAttr = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> initGoblinOrderSkuAssocObjs = CollectionUtil.linkedListObjectArr();
List<GoblinStoreOrderVo> orderVoList = ObjectUtil.getGoblinStoreOrderVoArrayList(); List<GoblinStoreOrderVo> orderVoList = ObjectUtil.getGoblinStoreOrderVoArrayList();
List<GoblinOrderSkuVo> skuVoList = ObjectUtil.getGoblinOrderSkuVoArrayList(); List<GoblinOrderSkuVo> skuVoList = ObjectUtil.getGoblinOrderSkuVoArrayList();
for (GoblinOrderSqlParam item : sqlParams) { for (GoblinOrderSqlParam item : sqlParams) {
List<String> goblinOrderSkuIdList = CollectionUtil.linkedListString(); List<String> goblinOrderSkuIdList = CollectionUtil.linkedListString();
BigDecimal restVoucherPrice = item.getStoreOrder().getPriceVoucher(); BigDecimal restVoucherPrice = item.getStoreOrder().getPriceVoucher();
Map<String, GoblinOrderSkuParam> orderSkuParamMap = item.getOrderSkuParamMap();
int erpHosting = 0; int erpHosting = 0;
for (int i = 0; i < item.getOrderSkuList().size(); i++) { for (int i = 0; i < item.getOrderSkuList().size(); i++) {
GoblinOrderSku orderSku = item.getOrderSkuList().get(i); GoblinOrderSku orderSku = item.getOrderSkuList().get(i);
...@@ -617,6 +666,16 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -617,6 +666,16 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
}); });
//订单 orderSku Vo //订单 orderSku Vo
GoblinOrderSkuVo orderSkuVo = GoblinOrderSkuVo.getNew().copy(orderSku); GoblinOrderSkuVo orderSkuVo = GoblinOrderSkuVo.getNew().copy(orderSku);
// 关联人信息处理
GoblinOrderSkuParam orderSkuParam = orderSkuParamMap.get(orderSku.getSkuId());
if (Objects.isNull(orderSkuParam)) {
orderSkuVo.setIsTrueName(1);
orderSkuVo.setIdType(orderSkuParam.getIdType());
orderSkuVo.setIdName(orderSkuParam.getIdName());
orderSkuVo.setIdNo(orderSkuParam.getIdNo());
initGoblinOrderSkuAssocObjs.add(new Object[]{orderSkuVo.getSkuId(), orderSkuVo.getIdType(), orderSkuVo.getIdName(), orderSkuVo.getIdNo(), uid, orderSkuVo.getCreatedAt()});
}
redisUtils.setGoblinOrderSku(orderSkuVo.getOrderSkuId(), orderSkuVo); redisUtils.setGoblinOrderSku(orderSkuVo.getOrderSkuId(), orderSkuVo);
goblinOrderSkuIdList.add(orderSkuVo.getOrderSkuId()); goblinOrderSkuIdList.add(orderSkuVo.getOrderSkuId());
skuVoList.add(orderSkuVo); skuVoList.add(orderSkuVo);
...@@ -660,7 +719,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -660,7 +719,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
mongoUtils.insertGoblinStoreOrderVos(orderVoList); mongoUtils.insertGoblinStoreOrderVos(orderVoList);
//mysql 执行sql //mysql 执行sql
String sqlData = SqlMapping.gets(sqls, sqlDataSku, sqlDataOrder, sqlDataAttr); String sqlData = SqlMapping.gets(sqls, sqlDataSku, sqlDataOrder, sqlDataAttr, initGoblinOrderSkuAssocObjs);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CREATE_PAY.getKey(), sqlData); queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CREATE_PAY.getKey(), sqlData);
if (isFree && preParam.getPayType().equals("huifu")) { if (isFree && preParam.getPayType().equals("huifu")) {
......
package com.liquidnet.service.order.utils; package com.liquidnet.service.order.utils;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo; import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.goblin.dto.manage.GoblinOrderSkuParam;
import com.liquidnet.service.goblin.dto.vo.*; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.entity.GoblinNftOrder; import com.liquidnet.service.goblin.entity.GoblinNftOrder;
import com.liquidnet.service.goblin.entity.GoblinOrderSku; import com.liquidnet.service.goblin.entity.GoblinOrderSku;
...@@ -59,6 +60,7 @@ public class ObjectUtil { ...@@ -59,6 +60,7 @@ public class ObjectUtil {
private static final HashMap<String, List<GoblinGoodsSkuInfoVo>> goblinGoodsSkuInfoVoMap = new HashMap(); private static final HashMap<String, List<GoblinGoodsSkuInfoVo>> goblinGoodsSkuInfoVoMap = new HashMap();
private static final HashMap<String, String[]> mixIdMap = new HashMap(); private static final HashMap<String, String[]> mixIdMap = new HashMap();
private static final ArrayList<CouponOutLineVo> couponOutLineVo = new ArrayList<>(); private static final ArrayList<CouponOutLineVo> couponOutLineVo = new ArrayList<>();
private static final HashMap<String, GoblinOrderSkuParam> goblinOrderSkuParamMap = new HashMap();
public static Object[] objectsArray; public static Object[] objectsArray;
public static final Integer[] integerArray2 = new Integer[2]; public static final Integer[] integerArray2 = new Integer[2];
...@@ -185,4 +187,8 @@ public class ObjectUtil { ...@@ -185,4 +187,8 @@ public class ObjectUtil {
public static ArrayList<WriteModel<Document>> getWriteModelDocumentArrayList() { public static ArrayList<WriteModel<Document>> getWriteModelDocumentArrayList() {
return (ArrayList<WriteModel<Document>>) writeModelDocumentArrayList.clone(); return (ArrayList<WriteModel<Document>>) writeModelDocumentArrayList.clone();
} }
public static HashMap<String, GoblinOrderSkuParam> cloneGoblinOrderSkuParamMap() {
return (HashMap<String, GoblinOrderSkuParam>) goblinOrderSkuParamMap.clone();
}
} }
...@@ -33,6 +33,7 @@ kylin_order_refund_entities.overtimeRefund=INSERT INTO kylin_order_refund_entiti ...@@ -33,6 +33,7 @@ kylin_order_refund_entities.overtimeRefund=INSERT INTO kylin_order_refund_entiti
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`,`pay_code`,`price_actual`,`price_refund`,`price_express`,`price_coupon`,`store_price_coupon`,`price_voucher`,`status`,`ucoupon_id`,`store_coupon_id`,`pay_type`,`device_from`,`source`,`version`,`is_member`,`order_type`,`write_off_code`,`pay_countdown_minute`,`ip_address`,`market_id`,`market_type`,`created_at`,`mix_id`,`mix_code`) 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`,`pay_code`,`price_actual`,`price_refund`,`price_express`,`price_coupon`,`store_price_coupon`,`price_voucher`,`status`,`ucoupon_id`,`store_coupon_id`,`pay_type`,`device_from`,`source`,`version`,`is_member`,`order_type`,`write_off_code`,`pay_countdown_minute`,`ip_address`,`market_id`,`market_type`,`created_at`,`mix_id`,`mix_code`) 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.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`,`spu_erp_code`,`sku_erp_code`,`erp_type`,`erp_warehouse_no`,`erp_hosting`,`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`,`spu_erp_code`,`sku_erp_code`,`erp_type`,`erp_warehouse_no`,`erp_hosting`,`created_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
goblin_order_sku_assoc.insert=INSERT INTO goblin_order_sku_assoc (order_sku_id,id_type,id_name,id_no,operator,created_at) VALUES (?,?,?,?,?,?)
#---- \u518D\u6B21\u652F\u4ED8 #---- \u518D\u6B21\u652F\u4ED8
goblin_order.pay.again=UPDATE goblin_store_order SET pay_type = ? ,device_from = ? ,pay_code = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null) goblin_order.pay.again=UPDATE goblin_store_order SET pay_type = ? ,device_from = ? ,pay_code = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
#---- \u8BA2\u5355\u521B\u5EFA&\u652F\u4ED8 #---- \u8BA2\u5355\u521B\u5EFA&\u652F\u4ED8
......
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