package com.example.xiaoshiweixinback.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.xiaoshiweixinback.business.utils.DateUtils; import com.example.xiaoshiweixinback.domain.AssoPersonVip; import com.example.xiaoshiweixinback.domain.Vip; import com.example.xiaoshiweixinback.mapper.AssoPersonVipMapper; import org.springframework.stereotype.Service; import java.util.Date; /** * @author admin * @description 针对表【asso_person_vip(人员会员管理表)】的数据库操作Service实现 * @createDate 2024-03-29 15:32:20 */ @Service public class AssoPersonVipService extends ServiceImpl { public AssoPersonVip getAsso(String personUuid,Vip vip) { AssoPersonVip assoPersonVip = new AssoPersonVip(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AssoPersonVip::getPersonUuid, personUuid) .eq(AssoPersonVip::getVipType, vip.getVipType()) .orderByDesc(AssoPersonVip::getExpiryTime); assoPersonVip = this.getOne(queryWrapper, false); if (assoPersonVip != null) { this.updateAssoPersonVip(assoPersonVip,personUuid,vip); } else { assoPersonVip = this.addAssoPersonVip(personUuid, vip);} return assoPersonVip; } public AssoPersonVip addAssoPersonVip(String personUuid, Vip vip) { //判断是否被邀请过 Date date = new Date(); AssoPersonVip assoPersonVip = new AssoPersonVip(); assoPersonVip.setCreateTime(date); Integer lastTime = vip.getLastTime(); Date expiryDate = DateUtils.getPlusMonthDate(date, lastTime); assoPersonVip.setExpiryTime(expiryDate); assoPersonVip.setVipUuid(vip.getVipUuid()); assoPersonVip.setPersonUuid(personUuid); assoPersonVip.setVipType(vip.getVipType()); assoPersonVip.insert(); return assoPersonVip; } public AssoPersonVip updateAssoPersonVip(AssoPersonVip assoPersonVip, String personUuid, Vip vip) { Date date = new Date(); Date orgExpiry = assoPersonVip.getExpiryTime(); Integer lastTime = vip.getLastTime(); Date expiryDate = null; if (orgExpiry.compareTo(date) > 0) { expiryDate = DateUtils.getPlusMonthDate(orgExpiry, lastTime); } else { expiryDate = DateUtils.getPlusMonthDate(date, lastTime); } assoPersonVip.setExpiryTime(expiryDate); assoPersonVip.setVipUuid(vip.getVipUuid()); assoPersonVip.setVipType(vip.getVipType()); assoPersonVip.setPersonUuid(personUuid); assoPersonVip.updateById(); return assoPersonVip; } /** * * @param personUuid * @param dateType 0天 1月 2年 * @param lastTime * @return */ public AssoPersonVip addAssoPersonVipByTime(String personUuid,Integer dateType,Integer lastTime) { Date date = new Date(); AssoPersonVip assoPersonVip = new AssoPersonVip(); assoPersonVip.setCreateTime(date); Date expiryDate = DateUtils.getPlusDayDate(date, lastTime); assoPersonVip.setExpiryTime(expiryDate); assoPersonVip.setPersonUuid(personUuid); assoPersonVip.setVipType(1); assoPersonVip.insert(); return assoPersonVip; } }