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

Commit f3e0e5a8 authored by 张国柄's avatar 张国柄

会员下单添加收货地址处理;

 - 针对会员改版上线前,用户购买会员礼包发放;
parent 2113d8a0
......@@ -33,24 +33,28 @@ public class AdamMemberOrderParam implements Serializable {
@Pattern(regexp = LnsRegex.Valid.DATETIME_YMD, message = "生日格式有误")
@NotBlank(message = "生日不能为空")
private String birthday;
@ApiModelProperty(position = 16, required = true, value = "支付终端", allowableValues = "app,wap,js,applet")
@ApiModelProperty(position = 16, required = true, value = "收获地址")
@Size(min = 1, max = 64, message = "收获地址长度限制1-64位字符")
@NotBlank(message = "收获地址不能为空")
private String addressId;
@ApiModelProperty(position = 17, required = true, value = "支付终端", allowableValues = "app,wap,js,applet")
@Pattern(regexp = LnsRegex.Valid.TRIPLE_PF_FOR_PAY_TERMINAL, message = "支付终端类型无效")
@NotBlank(message = "支付终端不能为空")
private String deviceFrom;
@ApiModelProperty(position = 17, required = true, value = "支付方式", allowableValues = "alipay,wepay")
@ApiModelProperty(position = 20, required = true, value = "支付方式", allowableValues = "alipay,wepay")
@Pattern(regexp = LnsRegex.Valid.TRIPLE_PF_FOR_PAY, message = "支付方式无效")
@NotBlank(message = "支付方式不能为空")
private String payType;
@ApiModelProperty(position = 18, required = false, value = "App内Apple支付必传")
@ApiModelProperty(position = 21, required = false, value = "App内Apple支付必传")
private String productId;
@ApiModelProperty(position = 19, required = false, value = "微信内网页及小程序支付必传")
@ApiModelProperty(position = 22, required = false, value = "微信内网页及小程序支付必传")
private String openId;
@ApiModelProperty(position = 23, required = false, value = "取消支付,点击取消支付宝回调地址")
private String showUrl;
@ApiModelProperty(position = 24, required = false, value = "支付成功,点击完成支付宝回调地址")
private String returnUrl;
@ApiModelProperty(position = 19, required = false, value = "姓名[未实名时必传]", example = "王武")
@ApiModelProperty(position = 30, required = false, value = "姓名[未实名时必传]", example = "王武")
private String name;
@ApiModelProperty(position = 20, required = false, value = "身份证件号[未实名时必传]", example = "111111111111111111")
@ApiModelProperty(position = 31, required = false, value = "身份证件号[未实名时必传]", example = "111111111111111111")
private String idCard;
}
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "AdamMemberOrderExtVo", description = "用户会员订单扩展信息")
@Data
public class AdamMemberOrderExtVo implements Serializable, Cloneable {
private static final long serialVersionUID = -1718738306110269600L;
@ApiModelProperty(position = 1, value = "订单号")
private String orderNo;
@ApiModelProperty(position = 2, value = "快递状态")
private Integer expressStatus;
@ApiModelProperty(position = 3, value = "收件人")
private String expressReceiver;
@ApiModelProperty(position = 4, value = "收件人电话")
private String expressPhone;
@ApiModelProperty(position = 5, value = "收件人地址")
private String expressAddress;
private static final AdamMemberOrderExtVo obj = new AdamMemberOrderExtVo();
public static AdamMemberOrderExtVo getNew() {
try {
return (AdamMemberOrderExtVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamMemberOrderExtVo();
}
}
}
......@@ -3,6 +3,7 @@ package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.entity.AdamMemberOrder;
import com.liquidnet.service.adam.entity.AdamMemberOrderExt;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -61,9 +62,12 @@ public class AdamMemberOrderVo implements Serializable, Cloneable {
@ApiModelProperty(position = 20, value = "客户端版本")
private String version;
@ApiModelProperty(position = 21, value = "会员须知")
@ApiModelProperty(position = 21, value = "会员订单扩展信息")
private AdamMemberOrderExtVo extendVo;
@ApiModelProperty(position = 30, value = "会员须知")
private String memberNotes;
@ApiModelProperty(position = 22, value = "会员码信息")
@ApiModelProperty(position = 31, value = "会员码信息")
private AdamMemberCodeVo memberCodeVo;
public static final AdamMemberOrderVo obj = new AdamMemberOrderVo();
......
......@@ -82,8 +82,7 @@ public class AdamUserInfoVo implements java.io.Serializable, Cloneable {
}
public String getPasswd() {
// return passwd;
return "*";
return passwd;
}
public void setPasswd(String passwd) {
......
......@@ -15,9 +15,10 @@ public interface IAdamMemberOrderService {
/**
* 购买会员或会员码
*
* @param uid
* @param param
*/
ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(AdamMemberOrderParam param);
ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(String uid, AdamMemberOrderParam param);
/**
* 支付回调
......
package com.liquidnet.service.adam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 用户会员订单扩展信息表
* </p>
*
* @author liquidnet
* @since 2021-08-11
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class AdamMemberOrderExt implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
private String orderNo;
/**
* 快递状态:0-待揽收|1-已揽收|2-在途中|3-已签收|4-已拒收
*/
private Integer expressStatus;
/**
* 收件人
*/
private String expressReceiver;
/**
* 收件人电话
*/
private String expressPhone;
/**
* 收件人地址
*/
private String expressAddress;
private String comment;
}
package com.liquidnet.service.adam.mapper;
import com.liquidnet.service.adam.entity.AdamMemberOrderExt;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户会员订单扩展信息表 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-08-11
*/
public interface AdamMemberOrderExtMapper extends BaseMapper<AdamMemberOrderExt> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.adam.mapper.AdamMemberOrderExtMapper">
</mapper>
......@@ -325,6 +325,18 @@ create table adam_member_code
create unique index uidx_amember_code_id on adam_member_code (code);
# MDB.idx:code,state
-- >>------------------------------------------------------------------------------------ |20210811用于会员改版前支持用户购买会员选礼包收货地址
drop table if exists adam_member_order_ext;
create table adam_member_order_ext
(
mid bigint unsigned auto_increment primary key,
order_no varchar(64) not null,
express_status tinyint comment '快递状态:0-待揽收|1-已揽收|2-在途中|3-已签收|4-已拒收',
express_receiver varchar(120) comment '收件人',
express_phone varchar(30) comment '收件人电话',
express_address text comment '收件人地址',
comment text
) engine = InnoDB comment '用户会员订单扩展信息表';
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
......@@ -99,13 +99,10 @@ public class AdamMemberOrderController {
if (StringUtils.isBlank(param.getName()) || StringUtils.isBlank(param.getIdCard())) {
return ResponseDto.failure(ErrorMapping.get("10101"));
}
AdamRealInfoVo vo = adamUserService.identity(currentUid, param.getName(), param.getIdCard());
if (null == vo) {
return ResponseDto.failure(ErrorMapping.get("10000"));
}
adamUserService.identity(currentUid, param.getName(), param.getIdCard());
}
return adamMemberOrderService.buyMemberOrMemberCode(param);
return adamMemberOrderService.buyMemberOrMemberCode(currentUid, param);
}
/**
......@@ -190,6 +187,12 @@ public class AdamMemberOrderController {
return ResponseDto.success(0);
}
/**
* 购买会员黑名单校验
*
* @param uid 用户ID
* @return true-命中黑名单
*/
private boolean checkMobileOrUid(String uid) {
List<String> blacklist = adamRdmService.getBlacklistForMember();
return !CollectionUtils.isEmpty(blacklist) && blacklist.contains(uid);
......
......@@ -267,19 +267,18 @@ public class AdamRdmService {
}
public AdamEntersVo getEntersVoByUidEntersId(List<AdamEntersVo> vos, String entersId) {
if (!CollectionUtils.isEmpty(vos)) {
return vos.stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
}
return null;
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
}
public AdamEntersVo getEntersVoByUidEntersId(String uid, String entersId) {
return this.getEntersVoByUid(uid).stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
List<AdamEntersVo> vos = this.getEntersVoByUid(uid);
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
}
public List<AdamEntersVo> getEntersVoByUidEntersIds(String uid, String... entersIds) {
List<String> entersIdList = Arrays.asList(entersIds);
return this.getEntersVoByUid(uid).stream().filter(r -> entersIdList.contains(r.getEntersId())).collect(Collectors.toList());
List<AdamEntersVo> vos = this.getEntersVoByUid(uid);
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> entersIdList.contains(r.getEntersId())).collect(Collectors.toList());
}
public void delEntersVoByUid(String uid) {
......@@ -327,14 +326,12 @@ public class AdamRdmService {
}
public AdamAddressesVo getAddressesVoByUidAddressesId(List<AdamAddressesVo> vos, String addressesId) {
if (!CollectionUtils.isEmpty(vos)) {
return vos.stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
}
return null;
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
}
public AdamAddressesVo getAddressesVoByUidAddressesId(String uid, String addressesId) {
return this.getAddressesVoByUid(uid).stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
List<AdamAddressesVo> vos = this.getAddressesVoByUid(uid);
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
}
public void delAddressesVoByUid(String uid) {
......@@ -453,15 +450,7 @@ public class AdamRdmService {
public AdamMemberPriceVo getMemberPriceVoByPriceId(String memberId, String memberPriceId) {
List<AdamMemberPriceVo> vos = this.getMemberPriceVoByMemberId(memberId);
if (!CollectionUtils.isEmpty(vos)) {
// for (AdamMemberPriceVo r : vos) {
// if (memberPriceId.equals(r.getMemberPriceId())) {
// return r;
// }
// }
return vos.stream().filter(r -> r.getMemberPriceId().equals(memberPriceId)).findAny().orElse(null);
}
return null;
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getMemberPriceId().equals(memberPriceId)).findAny().orElse(null);
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <MEMBER_ID, List<AdamMemberRightsVo>> */
......@@ -530,10 +519,7 @@ public class AdamRdmService {
}
public AdamMemberOrderVo getMemberOrderVoByOrderNo(List<AdamMemberOrderVo> vos, String orderNo) {
if (!CollectionUtils.isEmpty(vos)) {
return vos.stream().filter(r -> r.getOrderNo().equals(orderNo)).findAny().orElse(null);
}
return null;
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getOrderNo().equals(orderNo)).findAny().orElse(null);
}
public void delMemberOrderVoByUid(String uid) {
......
......@@ -48,7 +48,11 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(AdamMemberOrderParam param) {
public ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(String currentUid, AdamMemberOrderParam param) {
AdamAddressesVo addressesVo = adamRdmService.getAddressesVoByUidAddressesId(currentUid, param.getAddressId());
if (null == addressesVo) {
return ResponseDto.failure(ErrorMapping.get("10106"));
}
AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(param.getMemberId());
if (null == memberVo) {
return ResponseDto.failure(ErrorMapping.get("10201"));
......@@ -124,13 +128,24 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
memberOrderVo.setDeviceFrom(param.getDeviceFrom());
memberOrderVo.setPayType(param.getPayType());
memberOrderVo.setState(0);// 0-待支付
memberOrderVo.setUid(CurrentUtil.getCurrentUid());
memberOrderVo.setUid(currentUid);
memberOrderVo.setPrice(param.getPrice());
memberOrderVo.setClientIp(clientIp);
String headerCliVersion = CurrentUtil.getHeaderCliVersion(), headerCliSource = CurrentUtil.getHeaderCliSource();
memberOrderVo.setSource(null == headerCliSource ? "" : headerCliSource);
memberOrderVo.setVersion(null == headerCliVersion ? "" : headerCliVersion);
AdamMemberOrderExtVo memberOrderExtVo = AdamMemberOrderExtVo.getNew();
memberOrderExtVo.setOrderNo(orderNo);
memberOrderExtVo.setExpressStatus(-1);
memberOrderExtVo.setExpressReceiver(addressesVo.getName());
memberOrderExtVo.setExpressPhone(addressesVo.getPhone());
memberOrderExtVo.setExpressAddress(addressesVo.getProvince() + addressesVo.getCity() + addressesVo.getCounty() + addressesVo.getAddress());
memberOrderVo.setExtendVo(memberOrderExtVo);
if (!adamRdmService.setShotMemberOrderVoByOrderNo(orderNo, memberOrderVo)) {
log.warn("###购买会员创建订单失败[memberOrderVo:{}]", JsonUtils.toJson(memberOrderVo));
return ResponseDto.failure(ErrorMapping.get("10210"));
......@@ -201,7 +216,8 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
BeanUtils.copyProperties(shotMemberOrderVo, handleMemberOrderVo);
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> operationObjs = CollectionUtil.linkedListObjectArr(),
updateMemberOrderObjs = CollectionUtil.linkedListObjectArr();
updateMemberOrderObjs = CollectionUtil.linkedListObjectArr(),
initMemberOrderExtObjs = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
if (0 == handleMemberOrderVo.getMode()) {// 购买会员回调
existUserMemberVo = adamRdmService.getUserMemberVoByUid(handleMemberOrderVo.getUid());
......@@ -293,12 +309,28 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
handleMemberOrderVo.getDeviceFrom(), handleMemberOrderVo.getPayType(), handleMemberOrderVo.getPayNo(), handleMemberOrderVo.getPaymentAt(),
handleMemberOrderVo.getCreatedAt(), handleMemberOrderVo.getClientIp(), handleMemberOrderVo.getSource(), handleMemberOrderVo.getVersion()
});
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UMEMBER.getKey(),
SqlMapping.gets(toMqSqls, operationObjs, updateMemberOrderObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
AdamMemberOrderExtVo memberOrderExtVo = handleMemberOrderVo.getExtendVo();
if (null != memberOrderExtVo) {
toMqSqls.add(SqlMapping.get("adam_member_order_ext.add"));
initMemberOrderExtObjs.add(new Object[]{
memberOrderExtVo.getOrderNo(), memberOrderExtVo.getExpressStatus(), memberOrderExtVo.getExpressReceiver(),
memberOrderExtVo.getExpressPhone(), memberOrderExtVo.getExpressAddress()
});
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UMEMBER.getKey(),
SqlMapping.gets(toMqSqls, operationObjs, updateMemberOrderObjs, initMemberOrderExtObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
} else {
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UMEMBER.getKey(),
SqlMapping.gets(toMqSqls, operationObjs, updateMemberOrderObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
}
return ResponseDto.success();
} catch (Exception e) {
......
......@@ -48,6 +48,9 @@ adam_member_code.exchange=UPDATE adam_member_code SET `state`=?, updated_at=?, u
adam_member_order.add=INSERT INTO adam_member_order (order_no, `uid`, `mode`, price, price_paid, member_name, member_id, member_price_id, `days`, `state`, member_no, birthday, device_from, pay_type, pay_no, payment_at, created_at, client_ip, `source`, version) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
adam_member_order.update=UPDATE adam_member_order SET `state`=?, member_no=?, payment_at=?, updated_at=? WHERE order_no=?
# ----------------------------------------------------
adam_member_order_ext.add=INSERT INTO adam_member_order_ext (order_no, express_status, express_receiver, express_phone, express_address) values (?,?,?,?,?)
# ----------------------------------------------------
adam_user_member.add=INSERT INTO adam_user_member (`uid`, member_id, member_no, `state`, expiry_at, created_at) VALUES (?,?,?,?,?,?)
adam_user_member.update=UPDATE adam_user_member SET `state`=?, expiry_at=?, updated_at=? WHERE `uid`=?
......
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