master:档口购买会员功能完善;
parent
27ecbd68a6
commit
3106815cc2
|
|
@ -24,8 +24,10 @@ public class StoreMemberCreateVO {
|
|||
@NotNull(message = "支付金额不能为空!")
|
||||
@ApiModelProperty(value = "支付金额", required = true)
|
||||
private BigDecimal payPrice;
|
||||
@NotNull(message = "交易密码不能为空!")
|
||||
@ApiModelProperty(value = "交易密码", required = true)
|
||||
@NotNull(message = "支付方式不能为空!")
|
||||
@ApiModelProperty(value = "支付方式", required = true)
|
||||
private Integer payWay;
|
||||
@ApiModelProperty(value = "交易密码")
|
||||
private String transactionPassword;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
|
|||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
|
|
@ -15,10 +16,15 @@ import java.math.BigDecimal;
|
|||
@Accessors(chain = true)
|
||||
public class StoreMemberCreateDTO {
|
||||
|
||||
@ApiModelProperty(value = "档口ID")
|
||||
@NotNull(message = "档口ID不能为空!")
|
||||
@ApiModelProperty(value = "档口ID", required = true)
|
||||
private Long storeId;
|
||||
@ApiModelProperty(value = "支付金额")
|
||||
@NotNull(message = "支付金额不能为空!")
|
||||
@ApiModelProperty(value = "支付金额", required = true)
|
||||
private BigDecimal payPrice;
|
||||
@NotNull(message = "支付方式不能为空!")
|
||||
@ApiModelProperty(value = "支付方式", required = true)
|
||||
private Integer payWay;
|
||||
@ApiModelProperty(value = "交易密码")
|
||||
private String transactionPassword;
|
||||
|
||||
|
|
|
|||
|
|
@ -13,15 +13,11 @@ import com.ruoyi.common.exception.ServiceException;
|
|||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.xkt.domain.Store;
|
||||
import com.ruoyi.xkt.domain.StoreMember;
|
||||
import com.ruoyi.xkt.dto.advertRound.AdRoundStoreBoughtResDTO;
|
||||
import com.ruoyi.xkt.dto.storeMember.StoreMemberCreateDTO;
|
||||
import com.ruoyi.xkt.dto.storeMember.StoreMemberExpireResDTO;
|
||||
import com.ruoyi.xkt.dto.storeMember.StoreMemberPageDTO;
|
||||
import com.ruoyi.xkt.dto.storeMember.StoreMemberPageResDTO;
|
||||
import com.ruoyi.xkt.enums.NoticeOwnerType;
|
||||
import com.ruoyi.xkt.enums.NoticeType;
|
||||
import com.ruoyi.xkt.enums.StoreMemberLevel;
|
||||
import com.ruoyi.xkt.enums.UserNoticeType;
|
||||
import com.ruoyi.xkt.enums.*;
|
||||
import com.ruoyi.xkt.mapper.StoreMapper;
|
||||
import com.ruoyi.xkt.mapper.StoreMemberMapper;
|
||||
import com.ruoyi.xkt.service.IAssetService;
|
||||
|
|
@ -34,8 +30,10 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
|
|
@ -67,26 +65,49 @@ public class StoreMemberServiceImpl implements IStoreMemberService {
|
|||
if (!SecurityUtils.isAdmin()) {
|
||||
throw new ServiceException("当前用户非管理员账号,无权限操作!", HttpStatus.ERROR);
|
||||
}
|
||||
//校验推广支付方式是否存在
|
||||
AdPayWay.of(createDTO.getPayWay());
|
||||
// 校验使用余额情况下,密码是否正确
|
||||
if (Objects.equals(createDTO.getPayWay(), AdPayWay.BALANCE.getValue())
|
||||
&& !assetService.checkTransactionPassword(createDTO.getStoreId(), createDTO.getTransactionPassword())) {
|
||||
throw new ServiceException("支付密码错误!请重新输入", HttpStatus.ERROR);
|
||||
}
|
||||
Optional.ofNullable(createDTO.getStoreId()).orElseThrow(() -> new RuntimeException("档口ID不能为空!"));
|
||||
Optional.ofNullable(createDTO.getPayPrice()).orElseThrow(() -> new RuntimeException("购买金额不能为空!"));
|
||||
StoreMember storeMember = new StoreMember();
|
||||
storeMember.setStoreId(createDTO.getStoreId());
|
||||
// 最低等级会员:实力质造
|
||||
storeMember.setLevel(StoreMemberLevel.STRENGTH_CONSTRUCT.getValue());
|
||||
storeMember.setStartTime(java.sql.Date.valueOf(LocalDate.now()));
|
||||
// 过期时间设置为1年后
|
||||
storeMember.setEndTime(java.sql.Date.valueOf(LocalDate.now().plusYears(1)));
|
||||
storeMember.setVoucherDate(java.sql.Date.valueOf(LocalDate.now()));
|
||||
storeMember.setCreateBy(SecurityUtils.getUsername());
|
||||
int count = this.storeMemberMapper.insert(storeMember);
|
||||
// 将档口权重增加1
|
||||
Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper<Store>()
|
||||
.eq(Store::getId, createDTO.getStoreId()).eq(Store::getDelFlag, Constants.UNDELETED)))
|
||||
.orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR));
|
||||
store.setStoreWeight(ObjectUtils.defaultIfNull(store.getStoreWeight(), 0) + 1);
|
||||
this.storeMapper.updateById(store);
|
||||
// 将档口会员信息添加到 redis 中
|
||||
redisCache.setCacheObject(CacheConstants.STORE_MEMBER + createDTO.getStoreId(), storeMember);
|
||||
// 看是否已存在会员
|
||||
StoreMember storeMember = this.storeMemberMapper.selectOne(new LambdaQueryWrapper<StoreMember>()
|
||||
.eq(StoreMember::getStoreId, createDTO.getStoreId()).eq(StoreMember::getDelFlag, Constants.UNDELETED));
|
||||
int count;
|
||||
// 已存在会员,则在之前的基础上续期
|
||||
if (ObjectUtils.isNotEmpty(storeMember)) {
|
||||
// 续期结束时间在原来基础上再加一年
|
||||
Date memberEndTime = storeMember.getEndTime();
|
||||
// 直接增加一年
|
||||
Date memberEndTimePlus = Date.from(memberEndTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()
|
||||
.plusYears(1).atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
storeMember.setEndTime(memberEndTimePlus);
|
||||
storeMember.setUpdateBy(SecurityUtils.getUsername());
|
||||
count = this.storeMemberMapper.updateById(storeMember);
|
||||
} else {
|
||||
storeMember = new StoreMember();
|
||||
storeMember.setStoreId(createDTO.getStoreId());
|
||||
// 最低等级会员:实力质造
|
||||
storeMember.setLevel(StoreMemberLevel.STRENGTH_CONSTRUCT.getValue());
|
||||
storeMember.setStartTime(java.sql.Date.valueOf(LocalDate.now()));
|
||||
// 过期时间设置为1年后
|
||||
storeMember.setEndTime(java.sql.Date.valueOf(LocalDate.now().plusYears(1)));
|
||||
storeMember.setVoucherDate(java.sql.Date.valueOf(LocalDate.now()));
|
||||
storeMember.setCreateBy(SecurityUtils.getUsername());
|
||||
count = this.storeMemberMapper.insert(storeMember);
|
||||
// 将档口权重增加1
|
||||
Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper<Store>()
|
||||
.eq(Store::getId, createDTO.getStoreId()).eq(Store::getDelFlag, Constants.UNDELETED)))
|
||||
.orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR));
|
||||
store.setStoreWeight(ObjectUtils.defaultIfNull(store.getStoreWeight(), 0) + 1);
|
||||
this.storeMapper.updateById(store);
|
||||
// 将档口会员信息添加到 redis 中
|
||||
redisCache.setCacheObject(CacheConstants.STORE_MEMBER + createDTO.getStoreId(), storeMember);
|
||||
}
|
||||
// 新增订购成功的消息通知
|
||||
this.noticeService.createSingleNotice(SecurityUtils.getUserId(), "购买会员成功!", NoticeType.NOTICE.getValue(), NoticeOwnerType.SYSTEM.getValue(),
|
||||
createDTO.getStoreId(), UserNoticeType.SYSTEM_MSG.getValue(), "恭喜您!购买:实力质造 会员成功!");
|
||||
|
|
|
|||
Loading…
Reference in New Issue