Commit 17d89f6c by 周晓航

下单 消费黑名单限制

parent 0a0a9873
package cn.freemud.entities.dto.blacklist;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 13:40
* @description :
*/
@Data
public class BlacklistDto {
/**
* 商户号
*/
private String partnerId;
/**
* 用户id
*/
private String memberId;
/**
* 当前这一笔订单需要消费的金额
*/
private Long amount;
}
package cn.freemud.entities.dto.blacklist;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 15:06
* @description : 返回前端提示数据
*/
@Data
public class OrderBlacklistResp {
@ApiModelProperty(value = "客服电话")
private String moblie;
@ApiModelProperty(value = "金额限制(单位:分)")
private Long surplusAmount;
}
package cn.freemud.entities.dto.blacklist;
import lombok.Data;
import java.util.Objects;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 14:49
* @description :
*/
@Data
public class Result<T> {
private boolean status = false;
private String message;
private T result;
private String statusCode;
public boolean isOk() {
return Objects.equals(statusCode, "200");
}
}
package cn.freemud.entities.dto.blacklist.req;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 14:34
* @description :
*/
@Data
public class BlackListQueryByClient {
/**
* 0储值卡黑名单
*/
public static final int RECORD_TYPE_SVC = 0;
/**
* 1消费黑名单
*/
public static final int RECORD_TYPE_CUSTOMER = 1;
@ApiModelProperty(value = "商户id")
@NotBlank(message = "商户id不能为空")
private String partnerId;
@ApiModelProperty("会员id")
private String memberId;
@ApiModelProperty("添加的黑名单类型 0储值卡黑名单 1消费黑名单")
@Range(min = 0, max = 1, message = "添加的黑名单类型 0储值卡黑名单 1消费黑名单")
private Integer recordType;
}
package cn.freemud.entities.dto.blacklist.resp;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 14:35
* @description :
*/
@Data
public class MemberBlacklistVO {
/**
* 是否存在黑名单中
*/
private boolean exist;
// ---------> 消费黑名单才有下面的配置
@ApiModelProperty(value = "客服电话")
private String moblie;
@ApiModelProperty(value = "金额限制(单位:分)")
private Long limitAmount;
@ApiModelProperty(value = "已经消费的累积金额(单位:分)")
private Long shoppingTotalAmount;
}
......@@ -195,6 +195,7 @@ public enum ResponseResult {
ORDER_BIZ_TYPE_ERROR("45086", "订单业务类型异常",""),
COUPON_ORDER_VERIFY_FAIL("45087","买券订单校验异常",""),
COUPON_ORDER_COMMON_VERIFY_FAIL("45088","卖券订单基础校验失败",""),
TOUCH_SHOPPING_BLACK_LIST("45089","触发消费黑名单",""),
/**
* 售后单
......
package cn.freemud.handler;
import cn.freemud.entities.dto.blacklist.BlacklistDto;
import cn.freemud.entities.dto.blacklist.OrderBlacklistResp;
import cn.freemud.entities.dto.blacklist.Result;
import cn.freemud.entities.dto.blacklist.req.BlackListQueryByClient;
import cn.freemud.entities.dto.blacklist.resp.MemberBlacklistVO;
import cn.freemud.service.thirdparty.DataCenterClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 11:59
* @description :
*/
@Component
public class MemberBlacklistHandler {
@Autowired
private DataCenterClient dataCenterClient;
/**
* 查询用户是否在黑名单中
*
* @param blacklistDto
*/
public OrderBlacklistResp checkisTrueBlacklist(BlacklistDto blacklistDto) {
//step1 查询是否存在
BlackListQueryByClient req = new BlackListQueryByClient();
req.setPartnerId(blacklistDto.getPartnerId());
req.setMemberId(blacklistDto.getMemberId());
// 默认只查询消费黑名单
req.setRecordType(BlackListQueryByClient.RECORD_TYPE_CUSTOMER);
Result<MemberBlacklistVO> memberBlacklistVOResult = dataCenterClient.queryByMemberId(req);
if (!memberBlacklistVOResult.isOk()) {
return null;
}
MemberBlacklistVO result = memberBlacklistVOResult.getResult();
if (!result.isExist()) {
return null;
}
//step2 存在校验剩余余额
Long limitAmount = result.getLimitAmount();
Long shoppingTotalAmount = result.getShoppingTotalAmount();
if (limitAmount.compareTo(shoppingTotalAmount + blacklistDto.getAmount()) >= 0) {
// 满足
return null;
}
// step3 余额不足组装前端参数 考虑负数默认0
long surplusAmount = limitAmount - shoppingTotalAmount - blacklistDto.getAmount();
OrderBlacklistResp orderBlacklistResp = new OrderBlacklistResp();
orderBlacklistResp.setMoblie(result.getMoblie());
orderBlacklistResp.setSurplusAmount(surplusAmount < 0 ? 0L : surplusAmount);
return orderBlacklistResp;
}
}
......@@ -24,6 +24,8 @@ import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseObj;
import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto;
import cn.freemud.entities.dto.blacklist.BlacklistDto;
import cn.freemud.entities.dto.blacklist.OrderBlacklistResp;
import cn.freemud.entities.dto.coupon.CheckAndCancelRequest;
import cn.freemud.entities.dto.coupon.CheckAndCancelResponseDTO;
import cn.freemud.entities.dto.coupon.CouponResponseDTO;
......@@ -50,6 +52,7 @@ import cn.freemud.entities.dto.user.UserCouponCheckRequest;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.*;
import cn.freemud.enums.*;
import cn.freemud.handler.MemberBlacklistHandler;
import cn.freemud.handler.WeChatLiveMsgHandle;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request;
......@@ -295,6 +298,9 @@ public class OrderServiceImpl implements Orderservice {
private StockHandle stockHandle;
@Autowired
private MemberBlacklistHandler memberBlacklistHandler;
@Autowired
private OrderManagerAdapter orderManagerAdapter;
@Value("${sellcoupon.test.order.refund.fail:}")
......@@ -2457,6 +2463,18 @@ public class OrderServiceImpl implements Orderservice {
* @return
*/
public BaseResponse sdkCreateOrder(CreateOrderBONew createOrderBO) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setCode();
baseResponse.setMessage();
baseResponse.setVer();
baseResponse.setResult();
return baseResponse;
BaseResponse baseResponse = new BaseResponse();
baseResponse.setCode();
baseResponse.setMessage();
baseResponse.setVer();
baseResponse.setResult();
return baseResponse;
CreateOrderVo createOrderVo = createOrderBO.getCreateOrderVo();
StoreMixResponseDto storeMixResponseDto = createOrderBO.getStoreMixResponseDto();
StoreResponseDto storeResponseDto = storeMixResponseDto.getStoreInfo();
......@@ -2489,6 +2507,18 @@ public class OrderServiceImpl implements Orderservice {
//组装老的创建订单数据模型
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto, storeResponseDto);
// fisherman 订单支付价格 _> 处理 消费黑面名单逻辑
Long amount = baseCreateOrderRequest.getAmount();
BlacklistDto blacklistDto = new BlacklistDto();
blacklistDto.setAmount(amount);
blacklistDto.setPartnerId(createOrderVo.getPartnerId());
blacklistDto.setMemberId(createOrderVo.getUserId());
OrderBlacklistResp orderBlacklistResp = memberBlacklistHandler.checkisTrueBlacklist(blacklistDto);
if (Objects.nonNull(orderBlacklistResp)) {
return ResponseUtil.error(ResponseResult.TOUCH_SHOPPING_BLACK_LIST, orderBlacklistResp);
}
// 预先前置 设置 支付方式
this.preSetPayChannelType(baseCreateOrderRequest, createOrderVo);
......
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.blacklist.Result;
import cn.freemud.entities.dto.blacklist.req.BlackListQueryByClient;
import cn.freemud.entities.dto.blacklist.resp.MemberBlacklistVO;
import com.freemud.application.sdk.api.ordercenter.annotation.LogIgnoreFeign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 14:17
* @description :
*/
@FeignClient(name = "data-center")
@RequestMapping(produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public interface DataCenterClient {
/**
* 查询用户是否在黑名单中
*/
@LogIgnoreFeign(logMessage="queryByMemberId")
@PostMapping("/blacklist/query-by-memberId")
Result<MemberBlacklistVO> queryByMemberId(@RequestBody BlackListQueryByClient req);
}
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