会员购买
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
package com.czg.controller.user;
|
||||||
|
|
||||||
|
import com.czg.market.dto.MemberOrderDTO;
|
||||||
|
import com.czg.market.entity.MemberOrder;
|
||||||
|
import com.czg.market.entity.MkShopConsumeDiscountRecord;
|
||||||
|
import com.czg.market.service.MkShopConsumeDiscountRecordService;
|
||||||
|
import com.czg.market.service.TbMemberConfigService;
|
||||||
|
import com.czg.resp.CzgResult;
|
||||||
|
import com.czg.sa.StpKit;
|
||||||
|
import com.czg.utils.ServletUtil;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新客立减相关
|
||||||
|
*
|
||||||
|
* @author Administrator
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/user/member")
|
||||||
|
public class UMemberController {
|
||||||
|
@Resource
|
||||||
|
private TbMemberConfigService memberConfigService;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.czg.market.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
*/
|
||||||
|
public class MemberJoinDTO {
|
||||||
|
@NotNull(message = "店铺id不为空")
|
||||||
|
private Long shopId;
|
||||||
|
}
|
||||||
@@ -4,6 +4,8 @@ import com.czg.constant.TableValueConstant;
|
|||||||
import com.czg.exception.ApiNotPrintException;
|
import com.czg.exception.ApiNotPrintException;
|
||||||
import com.czg.market.dto.MemberConfigDTO;
|
import com.czg.market.dto.MemberConfigDTO;
|
||||||
import com.czg.market.dto.MemberLevelDTO;
|
import com.czg.market.dto.MemberLevelDTO;
|
||||||
|
import com.czg.market.dto.MemberOrderDTO;
|
||||||
|
import com.czg.market.entity.MemberOrder;
|
||||||
import com.czg.market.vo.MemberConfigVO;
|
import com.czg.market.vo.MemberConfigVO;
|
||||||
import com.czg.market.vo.MemberLevelVO;
|
import com.czg.market.vo.MemberLevelVO;
|
||||||
import com.mybatisflex.core.service.IService;
|
import com.mybatisflex.core.service.IService;
|
||||||
|
|||||||
@@ -77,51 +77,30 @@ public class MemberOrderServiceImpl extends ServiceImpl<MemberOrderMapper, Membe
|
|||||||
.findFirst()
|
.findFirst()
|
||||||
.orElseThrow(() -> new CzgException("会员开通方案未配置,请联系店铺"));
|
.orElseThrow(() -> new CzgException("会员开通方案未配置,请联系店铺"));
|
||||||
|
|
||||||
boolean canOpen = false;
|
if ("PAY".equals(memberConfigVO.getOpenType())){
|
||||||
if ("CONDITION".equals(memberConfigVO.getOpenType())){
|
//生成订单
|
||||||
for (MemberConfigDTO.condition item : memberConfigVO.getConditionList()) {
|
MemberOrder orderInfo = new MemberOrder();
|
||||||
canOpen = switch (item.getCode()) {
|
|
||||||
case "BIND_PHONE" -> StrUtil.isNotBlank(shopUser.getPhone());
|
|
||||||
case "ORDER" ->
|
|
||||||
orderInfoService.count(new QueryWrapper().eq(OrderInfo::getShopId, shopUser.getSourceShopId()).eq(OrderInfo::getUserId, shopUser.getUserId())
|
|
||||||
.notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode())) > Integer.parseInt(item.getValue());
|
|
||||||
case "COST_AMOUNT" ->
|
|
||||||
orderInfoService.list(new QueryWrapper().eq(OrderInfo::getShopId, shopUser.getSourceShopId()).eq(OrderInfo::getUserId, shopUser.getUserId())
|
|
||||||
.notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode()))
|
|
||||||
.stream().map(OrderInfo::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) > 0;
|
|
||||||
case "RECHARGE_AMOUNT" ->
|
|
||||||
orderPaymentService.list(new QueryWrapper().eq(OrderPayment::getShopId, shopUser.getSourceShopId())
|
|
||||||
.eq(OrderPayment::getSourceId, shopUser.getId()).isNotNull(OrderPayment::getTradeNumber))
|
|
||||||
.stream().map(OrderPayment::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) > 0;
|
|
||||||
default -> throw new CzgException("会员开通条件类型错误");
|
|
||||||
};
|
|
||||||
|
|
||||||
|
orderInfo.setOrderNo(orderDTO.getPlatformType() + IdUtil.getSnowflakeNextId());
|
||||||
|
orderInfo.setShopId(orderDTO.getShopId());
|
||||||
|
orderInfo.setPayAmount(BigDecimal.ZERO);
|
||||||
|
orderInfo.setStatus(OrderStatusEnums.UNPAID.getCode());
|
||||||
|
orderInfo.setAmount(configItem.getPrice().multiply(BigDecimal.valueOf(orderDTO.getNum())));
|
||||||
|
orderInfo.setPrice(configItem.getPrice());
|
||||||
|
orderInfo.setName(configItem.getName());
|
||||||
|
orderInfo.setUserId(orderDTO.getUserId());
|
||||||
|
orderInfo.setReward(configItem.getReward());
|
||||||
|
orderInfo.setCircleTime(configItem.getCircleTime());
|
||||||
|
orderInfo.setCircleUnit(configItem.getCircleUnit());
|
||||||
|
if (configItem.getCouponList() != null && !configItem.getCouponList().isEmpty()) {
|
||||||
|
orderInfo.setCouponList(JSONObject.toJSONString(configItem.getCouponList()));
|
||||||
}
|
}
|
||||||
|
orderInfo.setNum(orderDTO.getNum());
|
||||||
|
save(orderInfo);
|
||||||
|
return orderInfo;
|
||||||
|
}else {
|
||||||
|
memberConfigService.joinMember(shopInfo.getId(), orderDTO.getUserId(), null);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canOpen) {
|
|
||||||
throw new CzgException("会员开通条件不满足");
|
|
||||||
}
|
|
||||||
|
|
||||||
//生成订单
|
|
||||||
MemberOrder orderInfo = new MemberOrder();
|
|
||||||
|
|
||||||
orderInfo.setOrderNo(orderDTO.getPlatformType() + IdUtil.getSnowflakeNextId());
|
|
||||||
orderInfo.setShopId(orderDTO.getShopId());
|
|
||||||
orderInfo.setPayAmount(BigDecimal.ZERO);
|
|
||||||
orderInfo.setStatus(OrderStatusEnums.UNPAID.getCode());
|
|
||||||
orderInfo.setAmount(configItem.getPrice().multiply(BigDecimal.valueOf(orderDTO.getNum())));
|
|
||||||
orderInfo.setPrice(configItem.getPrice());
|
|
||||||
orderInfo.setName(configItem.getName());
|
|
||||||
orderInfo.setUserId(orderDTO.getUserId());
|
|
||||||
orderInfo.setReward(configItem.getReward());
|
|
||||||
orderInfo.setCircleTime(configItem.getCircleTime());
|
|
||||||
orderInfo.setCircleUnit(configItem.getCircleUnit());
|
|
||||||
if (configItem.getCouponList() != null && !configItem.getCouponList().isEmpty()) {
|
|
||||||
orderInfo.setCouponList(JSONObject.toJSONString(configItem.getCouponList()));
|
|
||||||
}
|
|
||||||
orderInfo.setNum(orderDTO.getNum());
|
|
||||||
save(orderInfo);
|
|
||||||
return orderInfo;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,20 +8,25 @@ import com.alibaba.fastjson2.JSONArray;
|
|||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.czg.constant.TableValueConstant;
|
import com.czg.constant.TableValueConstant;
|
||||||
import com.czg.exception.ApiNotPrintException;
|
import com.czg.exception.ApiNotPrintException;
|
||||||
|
import com.czg.exception.CzgException;
|
||||||
import com.czg.market.dto.MemberConfigDTO;
|
import com.czg.market.dto.MemberConfigDTO;
|
||||||
import com.czg.market.dto.MemberLevelDTO;
|
import com.czg.market.dto.MemberLevelDTO;
|
||||||
import com.czg.account.entity.*;
|
import com.czg.account.entity.*;
|
||||||
import com.czg.account.service.*;
|
import com.czg.account.service.*;
|
||||||
|
import com.czg.market.dto.MemberOrderDTO;
|
||||||
import com.czg.market.dto.MkCouponGiftDTO;
|
import com.czg.market.dto.MkCouponGiftDTO;
|
||||||
import com.czg.market.entity.*;
|
import com.czg.market.entity.*;
|
||||||
import com.czg.market.service.*;
|
import com.czg.market.service.*;
|
||||||
import com.czg.market.vo.MemberConfigVO;
|
import com.czg.market.vo.MemberConfigVO;
|
||||||
import com.czg.market.vo.MemberLevelVO;
|
import com.czg.market.vo.MemberLevelVO;
|
||||||
import com.czg.exception.ApiNotPrintException;
|
import com.czg.exception.ApiNotPrintException;
|
||||||
|
import com.czg.order.entity.OrderInfo;
|
||||||
|
import com.czg.order.entity.OrderPayment;
|
||||||
import com.czg.order.service.OrderInfoService;
|
import com.czg.order.service.OrderInfoService;
|
||||||
import com.czg.order.service.OrderPaymentService;
|
import com.czg.order.service.OrderPaymentService;
|
||||||
import com.czg.service.market.enums.OrderStatusEnums;
|
import com.czg.service.market.enums.OrderStatusEnums;
|
||||||
import com.czg.service.market.mapper.TbMemberConfigMapper;
|
import com.czg.service.market.mapper.TbMemberConfigMapper;
|
||||||
|
import com.czg.utils.AssertUtil;
|
||||||
import com.czg.validator.ValidatorUtil;
|
import com.czg.validator.ValidatorUtil;
|
||||||
import com.czg.validator.group.member.MemberLevelCycleRewardGroup;
|
import com.czg.validator.group.member.MemberLevelCycleRewardGroup;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
@@ -300,6 +305,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean joinMember(Long shopId, Long userId, Long memberOrderId) {
|
public boolean joinMember(Long shopId, Long userId, Long memberOrderId) {
|
||||||
@@ -309,50 +315,90 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
|
|||||||
log.warn("用户不存在, 店铺id: {}, 用户id: {}", shopId, userId);
|
log.warn("用户不存在, 店铺id: {}, 用户id: {}", shopId, userId);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
MemberLevelConfig levelConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId).orderBy(MemberLevelConfig::getExperienceValue, true).limit(1));
|
||||||
|
|
||||||
if (shopUser.getStartTime() == null || shopUser.getEndTime().isBefore(DateUtil.date().toLocalDateTime())) {
|
// 条件开通
|
||||||
|
if (memberOrderId == null) {
|
||||||
|
if(memberConfigVO.getConfigList() == null || memberConfigVO.getConfigList().isEmpty()) {
|
||||||
|
throw new CzgException("会员开通方案未配置,请联系店铺");
|
||||||
|
}
|
||||||
|
|
||||||
|
AssertUtil.isTrue(!"CONDITION".equals(memberConfigVO.getOpenType()), "开通方式未开启");
|
||||||
|
|
||||||
|
for (MemberConfigDTO.condition item : memberConfigVO.getConditionList()) {
|
||||||
|
boolean canOpen = switch (item.getCode()) {
|
||||||
|
case "BIND_PHONE" -> StrUtil.isNotBlank(shopUser.getPhone());
|
||||||
|
case "ORDER" ->
|
||||||
|
orderInfoService.count(new QueryWrapper().eq(OrderInfo::getShopId, shopUser.getSourceShopId()).eq(OrderInfo::getUserId, shopUser.getUserId())
|
||||||
|
.notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode())) > Integer.parseInt(item.getValue());
|
||||||
|
case "COST_AMOUNT" ->
|
||||||
|
orderInfoService.list(new QueryWrapper().eq(OrderInfo::getShopId, shopUser.getSourceShopId()).eq(OrderInfo::getUserId, shopUser.getUserId())
|
||||||
|
.notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode()))
|
||||||
|
.stream().map(OrderInfo::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) > 0;
|
||||||
|
case "RECHARGE_AMOUNT" ->
|
||||||
|
orderPaymentService.list(new QueryWrapper().eq(OrderPayment::getShopId, shopUser.getSourceShopId())
|
||||||
|
.eq(OrderPayment::getSourceId, shopUser.getId()).isNotNull(OrderPayment::getTradeNumber))
|
||||||
|
.stream().map(OrderPayment::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) > 0;
|
||||||
|
default -> throw new CzgException("会员开通条件类型错误");
|
||||||
|
};
|
||||||
|
if (!canOpen) {
|
||||||
|
throw new CzgException("会员开通条件不满足");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DateUtil.isIn(DateUtil.date(), DateUtil.date(shopUser.getStartTime()), DateUtil.date(shopUser.getEndTime()))) {
|
||||||
|
throw new ApiNotPrintException("您已经是会员");
|
||||||
|
}
|
||||||
|
shopUser.setMemberLevelId(levelConfig.getId());
|
||||||
shopUser.setStartTime(DateUtil.date().toLocalDateTime());
|
shopUser.setStartTime(DateUtil.date().toLocalDateTime());
|
||||||
}
|
|
||||||
if (shopUser.getEndTime() == null || shopUser.getEndTime().isBefore(DateUtil.date().toLocalDateTime())) {
|
|
||||||
shopUser.setEndTime(DateUtil.date().toLocalDateTime());
|
|
||||||
}
|
|
||||||
// 购买开通
|
|
||||||
MemberOrder memberOrder = memberOrderService.getOne(new QueryWrapper().eq(MemberOrder::getId, memberOrderId).eq(MemberOrder::getShopId, shopId));
|
|
||||||
if (memberOrder == null) {
|
|
||||||
log.warn("会员购买支付失败,会员订单不存在,会员订单id:{}", memberOrderId);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!OrderStatusEnums.UNPAID.getCode().equals(memberOrder.getStatus())) {
|
|
||||||
log.warn("会员购买支付失败,会员订单状态不为待支付,会员订单id:{}", memberOrderId);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (memberOrder.getCircleUnit()) {
|
// shopUser.setEndTime(shopUser.getStartTime().plusDays(30));
|
||||||
case "天":
|
// 购买开通
|
||||||
shopUser.setEndTime(shopUser.getEndTime().plusDays(memberOrder.getCircleTime()));
|
}else {
|
||||||
break;
|
|
||||||
case "周":
|
|
||||||
shopUser.setEndTime(shopUser.getEndTime().plusWeeks(memberOrder.getCircleTime()));
|
|
||||||
break;
|
|
||||||
case "月":
|
|
||||||
shopUser.setEndTime(shopUser.getEndTime().plusMonths(memberOrder.getCircleTime()));
|
|
||||||
break;
|
|
||||||
case "季":
|
|
||||||
shopUser.setEndTime(shopUser.getEndTime().plusMonths(memberOrder.getCircleTime() * 3L));
|
|
||||||
break;
|
|
||||||
case "年":
|
|
||||||
shopUser.setEndTime(shopUser.getEndTime().plusYears(memberOrder.getCircleTime()));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new ApiNotPrintException("周期单位错误");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memberOrder.getReward() != null) {
|
if (shopUser.getStartTime() == null || shopUser.getEndTime().isBefore(DateUtil.date().toLocalDateTime())) {
|
||||||
deliver(shopId, userId, TableValueConstant.MemberExpFlow.Type.PAY, memberOrder.getPayAmount(), memberOrder.getReward(), memberOrderId);
|
shopUser.setStartTime(DateUtil.date().toLocalDateTime());
|
||||||
}
|
}
|
||||||
|
if (shopUser.getEndTime() == null || shopUser.getEndTime().isBefore(DateUtil.date().toLocalDateTime())) {
|
||||||
|
shopUser.setEndTime(DateUtil.date().toLocalDateTime());
|
||||||
|
}
|
||||||
|
|
||||||
if (StrUtil.isNotBlank(memberOrder.getCouponList())) {
|
MemberOrder memberOrder = memberOrderService.getOne(new QueryWrapper().eq(MemberOrder::getId, memberOrderId).eq(MemberOrder::getShopId, shopId));
|
||||||
// TODO 发券流程
|
if (memberOrder == null) {
|
||||||
|
log.warn("会员购买支付失败,会员订单不存在,会员订单id:{}", memberOrderId);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!OrderStatusEnums.UNPAID.getCode().equals(memberOrder.getStatus())) {
|
||||||
|
log.warn("会员购买支付失败,会员订单状态不为待支付,会员订单id:{}", memberOrderId);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (memberOrder.getCircleUnit()) {
|
||||||
|
case "天":
|
||||||
|
shopUser.setEndTime(shopUser.getEndTime().plusDays(memberOrder.getCircleTime()));
|
||||||
|
break;
|
||||||
|
case "周":
|
||||||
|
shopUser.setEndTime(shopUser.getEndTime().plusWeeks(memberOrder.getCircleTime()));
|
||||||
|
break;
|
||||||
|
case "月":
|
||||||
|
shopUser.setEndTime(shopUser.getEndTime().plusMonths(memberOrder.getCircleTime()));
|
||||||
|
break;
|
||||||
|
case "季":
|
||||||
|
shopUser.setEndTime(shopUser.getEndTime().plusMonths(memberOrder.getCircleTime() * 3L));
|
||||||
|
break;
|
||||||
|
case "年":
|
||||||
|
shopUser.setEndTime(shopUser.getEndTime().plusYears(memberOrder.getCircleTime()));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new ApiNotPrintException("周期单位错误");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (memberOrder.getReward() != null) {
|
||||||
|
deliver(shopId, userId, TableValueConstant.MemberExpFlow.Type.PAY, memberOrder.getPayAmount(), memberOrder.getReward(), memberOrderId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isNotBlank(memberOrder.getCouponList())) {
|
||||||
|
// TODO 发券流程
|
||||||
// ArrayList<MkCouponGiftDTO> giftDTOS = new ArrayList<>();
|
// ArrayList<MkCouponGiftDTO> giftDTOS = new ArrayList<>();
|
||||||
// JSONArray.parseArray(memberOrder.getCouponList()).toJavaList(MemberConfigDTO.ConfigCoupon.class).forEach(item -> {
|
// JSONArray.parseArray(memberOrder.getCouponList()).toJavaList(MemberConfigDTO.ConfigCoupon.class).forEach(item -> {
|
||||||
// giftDTOS.add(new MkCouponGiftDTO().setCouponId(item.getCoupon().getId())
|
// giftDTOS.add(new MkCouponGiftDTO().setCouponId(item.getCoupon().getId())
|
||||||
@@ -364,15 +410,15 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
|
|||||||
// .setNum(item.getNum()));
|
// .setNum(item.getNum()));
|
||||||
// });
|
// });
|
||||||
// couponGiftService.addCouponGift(memberOrderId, "会员开通赠券", 1, giftDTOS);
|
// couponGiftService.addCouponGift(memberOrderId, "会员开通赠券", 1, giftDTOS);
|
||||||
|
}
|
||||||
|
|
||||||
|
memberOrder.setStatus(OrderStatusEnums.DONE.getCode());
|
||||||
|
memberOrderService.updateById(memberOrder);
|
||||||
|
if (shopUser.getMemberLevelId() == null) {
|
||||||
|
shopUser.setMemberLevelId(levelConfig.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MemberLevelConfig levelConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId).orderBy(MemberLevelConfig::getExperienceValue, true).limit(1));
|
|
||||||
shopUser.setMemberLevelId(levelConfig.getId());
|
|
||||||
shopUser.setIsVip(1);
|
shopUser.setIsVip(1);
|
||||||
shopUserService.updateById(shopUser);
|
return shopUserService.updateById(shopUser);
|
||||||
|
|
||||||
memberOrder.setStatus(OrderStatusEnums.DONE.getCode());
|
|
||||||
memberOrderService.updateById(memberOrder);
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -520,7 +520,7 @@ public abstract class PrinterHandler {
|
|||||||
String balance = "0";
|
String balance = "0";
|
||||||
|
|
||||||
if ("deposit".equals(orderInfo.getPayType())) {
|
if ("deposit".equals(orderInfo.getPayType())) {
|
||||||
ShopUser user = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getShopId, orderInfo.getShopId()).eq(ShopUser::getUserId, orderInfo.getUserId()));
|
ShopUser user = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getSourceShopId, orderInfo.getShopId()).eq(ShopUser::getUserId, orderInfo.getUserId()));
|
||||||
if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getAmount())) {
|
if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getAmount())) {
|
||||||
balance = user.getAmount().toPlainString();
|
balance = user.getAmount().toPlainString();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -859,7 +859,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.CASH_IN);
|
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.CASH_IN);
|
||||||
}
|
}
|
||||||
//更新会员余额 并生成流水
|
//更新会员余额 并生成流水
|
||||||
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
Long flowId = shopUserService.updateMoney(shopUser.getSourceShopId(), shopUserMoneyEditDTO);
|
||||||
if (payment.getRelatedId() == null) {
|
if (payment.getRelatedId() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -971,7 +971,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
}
|
}
|
||||||
if (!orderInfo.getPayType().equals(PayEnums.CREDIT_PAY.getValue())) {
|
if (!orderInfo.getPayType().equals(PayEnums.CREDIT_PAY.getValue())) {
|
||||||
//消费赠券 挂账支付不赠送
|
//消费赠券 挂账支付不赠送
|
||||||
consumerCouponService.receiveConsumerCoupon(shopUser.getShopId(), orderInfo.getId(), orderInfo.getPayAmount(), shopUser.getUserId(), shopUser.getId());
|
consumerCouponService.receiveConsumerCoupon(shopUser.getSourceShopId(), orderInfo.getId(), orderInfo.getPayAmount(), shopUser.getUserId(), shopUser.getId());
|
||||||
}
|
}
|
||||||
String[] payTypes = {PayEnums.VIP_PAY.getValue(), PayEnums.CREDIT_PAY.getValue()};
|
String[] payTypes = {PayEnums.VIP_PAY.getValue(), PayEnums.CREDIT_PAY.getValue()};
|
||||||
if ((orderInfo.getPayType() != null && !ArrayUtil.contains(payTypes, orderInfo.getPayType()))
|
if ((orderInfo.getPayType() != null && !ArrayUtil.contains(payTypes, orderInfo.getPayType()))
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
}
|
}
|
||||||
payParam.getCheckOrderPay().setUserId(shopUser.getUserId());
|
payParam.getCheckOrderPay().setUserId(shopUser.getUserId());
|
||||||
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
|
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
|
||||||
if (!shopUser.getShopId().equals(orderInfo.getShopId())) {
|
if (!shopUser.getSourceShopId().equals(orderInfo.getShopId())) {
|
||||||
return CzgResult.failure("违规操作,请确认店铺后重试");
|
return CzgResult.failure("违规操作,请确认店铺后重试");
|
||||||
}
|
}
|
||||||
if (shopUser.getAmount().compareTo(orderInfo.getOrderAmount()) < 0) {
|
if (shopUser.getAmount().compareTo(orderInfo.getOrderAmount()) < 0) {
|
||||||
@@ -239,7 +239,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
.setBizEnum(ShopUserFlowBizEnum.ORDER_PAY)
|
.setBizEnum(ShopUserFlowBizEnum.ORDER_PAY)
|
||||||
.setRelationId(orderInfo.getId());
|
.setRelationId(orderInfo.getId());
|
||||||
//更新会员余额 并生成流水
|
//更新会员余额 并生成流水
|
||||||
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
Long flowId = shopUserService.updateMoney(shopUser.getSourceShopId(), shopUserMoneyEditDTO);
|
||||||
orderInfoService.upOrderInfo(orderInfo, orderInfo.getOrderAmount(),
|
orderInfoService.upOrderInfo(orderInfo, orderInfo.getOrderAmount(),
|
||||||
LocalDateTime.now(), flowId, PayEnums.VIP_PAY);
|
LocalDateTime.now(), flowId, PayEnums.VIP_PAY);
|
||||||
return CzgResult.success();
|
return CzgResult.success();
|
||||||
@@ -370,7 +370,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
.setRemark("现金充值")
|
.setRemark("现金充值")
|
||||||
.setBizEnum(ShopUserFlowBizEnum.CASH_IN);
|
.setBizEnum(ShopUserFlowBizEnum.CASH_IN);
|
||||||
//更新会员余额 并生成流水
|
//更新会员余额 并生成流水
|
||||||
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
Long flowId = shopUserService.updateMoney(shopUser.getSourceShopId(), shopUserMoneyEditDTO);
|
||||||
//TODO 以前的会员活动
|
//TODO 以前的会员活动
|
||||||
//shopActivateService.giveActivate(shopUser, payParam.getAmount(), payParam.getActivateId(), flowId);
|
//shopActivateService.giveActivate(shopUser, payParam.getAmount(), payParam.getActivateId(), flowId);
|
||||||
return CzgResult.success();
|
return CzgResult.success();
|
||||||
@@ -395,7 +395,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
public CzgResult<Map<String, Object>> ltPayMember(String clientIP, VipMemberPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> ltPayMember(String clientIP, VipMemberPayParamDTO payParam) {
|
||||||
MemberOrder memberOrder = memberOrderService.getOne(new QueryWrapper().eq(MemberOrder::getId, payParam.getMemberOrderId()));
|
MemberOrder memberOrder = memberOrderService.getOne(new QueryWrapper().eq(MemberOrder::getId, payParam.getMemberOrderId()));
|
||||||
AssertUtil.isNull(memberOrder, "充值会员失败 该会员订单不存在");
|
AssertUtil.isNull(memberOrder, "充值会员失败 该会员订单不存在");
|
||||||
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getSourceShopId, payParam.getShopId()).eq(ShopUser::getId, payParam.getShopUserId()));
|
||||||
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||||
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||||
@@ -535,7 +535,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
.setRelationId(refPaymentId)
|
.setRelationId(refPaymentId)
|
||||||
.setRechargeId(inFlow.getId());
|
.setRechargeId(inFlow.getId());
|
||||||
//更新会员余额 并生成流水
|
//更新会员余额 并生成流水
|
||||||
shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
shopUserService.updateMoney(shopUser.getSourceShopId(), shopUserMoneyEditDTO);
|
||||||
userFlowService.updateRefund(inFlow.getId(), refPayParam.getRefAmount());
|
userFlowService.updateRefund(inFlow.getId(), refPayParam.getRefAmount());
|
||||||
if (giftFlow != null && (giftFlow.getAmount().subtract(giftFlow.getRefundAmount())).compareTo(BigDecimal.ZERO) > 0) {
|
if (giftFlow != null && (giftFlow.getAmount().subtract(giftFlow.getRefundAmount())).compareTo(BigDecimal.ZERO) > 0) {
|
||||||
ShopUserMoneyEditDTO giftFlowEdit = new ShopUserMoneyEditDTO()
|
ShopUserMoneyEditDTO giftFlowEdit = new ShopUserMoneyEditDTO()
|
||||||
@@ -547,7 +547,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
.setRelationId(refPaymentId)
|
.setRelationId(refPaymentId)
|
||||||
.setRechargeId(giftFlow.getId());
|
.setRechargeId(giftFlow.getId());
|
||||||
//更新会员余额 并生成流水
|
//更新会员余额 并生成流水
|
||||||
shopUserService.updateMoney(shopUser.getShopId(), giftFlowEdit);
|
shopUserService.updateMoney(shopUser.getSourceShopId(), giftFlowEdit);
|
||||||
userFlowService.updateRefund(giftFlow.getId(), giftFlow.getAmount());
|
userFlowService.updateRefund(giftFlow.getId(), giftFlow.getAmount());
|
||||||
}
|
}
|
||||||
//移除优惠券
|
//移除优惠券
|
||||||
@@ -670,7 +670,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
.setType(1)
|
.setType(1)
|
||||||
.setRelationId(orderInfo.getId())
|
.setRelationId(orderInfo.getId())
|
||||||
.setBizEnum(ShopUserFlowBizEnum.ORDER_REFUND);
|
.setBizEnum(ShopUserFlowBizEnum.ORDER_REFUND);
|
||||||
shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
shopUserService.updateMoney(shopUser.getSourceShopId(), shopUserMoneyEditDTO);
|
||||||
} else if (orderInfo.getPayType().equals(PayEnums.CREDIT_PAY.getValue())) {
|
} else if (orderInfo.getPayType().equals(PayEnums.CREDIT_PAY.getValue())) {
|
||||||
AssertUtil.isNull(orderInfo.getCreditBuyerId(), "挂账单退款失败,未查询到挂账人");
|
AssertUtil.isNull(orderInfo.getCreditBuyerId(), "挂账单退款失败,未查询到挂账人");
|
||||||
buyerOrderService.partRefund(orderInfo.getCreditBuyerId().toString(), orderInfo.getId(), param.getRefundAmount());
|
buyerOrderService.partRefund(orderInfo.getCreditBuyerId().toString(), orderInfo.getId(), param.getRefundAmount());
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public class ShopStorageServiceImpl extends ServiceImpl<ShopStorageMapper, ShopS
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean add(Long shopId, ShopStorageAddDTO shopStorageAddDTO) {
|
public Boolean add(Long shopId, ShopStorageAddDTO shopStorageAddDTO) {
|
||||||
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getUserId, shopStorageAddDTO.getUserId()).eq(ShopUser::getShopId, shopId));
|
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getUserId, shopStorageAddDTO.getUserId()).eq(ShopUser::getSourceShopId, shopId));
|
||||||
if (shopUser == null) {
|
if (shopUser == null) {
|
||||||
throw new ApiNotPrintException("店铺用户不存在");
|
throw new ApiNotPrintException("店铺用户不存在");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user