|
@@ -1,6 +1,11 @@
|
|
|
package cn.cslg.permission.service.qiaobi;
|
|
|
|
|
|
import cn.cslg.permission.common.model.qiaobi.PersonVipMessVO;
|
|
|
+import cn.cslg.permission.common.model.qiaobi.QiaoBiVIPTypeVO;
|
|
|
+import cn.cslg.permission.common.model.qiaobi.QiaoBiVipTypeDTO;
|
|
|
+import cn.cslg.permission.common.model.qiaobi.vipType.PersonVipDiscountMessage;
|
|
|
+import cn.cslg.permission.common.model.qiaobi.vipType.QueryPersonVipDTO;
|
|
|
+import cn.cslg.permission.common.model.qiaobi.vipType.QueryPersonVipVO;
|
|
|
import cn.cslg.permission.common.model.vo.PersonnelUpdateVO;
|
|
|
import cn.cslg.permission.common.utils.DateUtils;
|
|
|
import cn.cslg.permission.domain.TenantVipType;
|
|
@@ -14,7 +19,9 @@ import io.swagger.v3.oas.models.security.SecurityScheme;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* @author admin
|
|
@@ -88,9 +95,9 @@ public class AssoPersonVipTypeService extends ServiceImpl<AssoPersonVipTypeMappe
|
|
|
vipTypeId = appVipType.getTenantVipTypeId();
|
|
|
} else {
|
|
|
Date expireTime = assoPersonVipType.getExpitrTime();
|
|
|
- Date date =new Date();
|
|
|
- Date endDate=DateUtils.getPlusMonthDate(date,1);
|
|
|
- if(expireTime!=null&&endDate.compareTo(expireTime)<0){
|
|
|
+ Date date = new Date();
|
|
|
+ Date endDate = DateUtils.getPlusMonthDate(date, 1);
|
|
|
+ if (expireTime != null && endDate.compareTo(expireTime) < 0) {
|
|
|
return;
|
|
|
}
|
|
|
vipTypeId = assoPersonVipType.getVipTypeId();
|
|
@@ -115,7 +122,7 @@ public class AssoPersonVipTypeService extends ServiceImpl<AssoPersonVipTypeMappe
|
|
|
PersonVipMessVO personVipMessVO = new PersonVipMessVO();
|
|
|
personVipMessVO.setIfInVip(true);
|
|
|
Integer vipId = this.getPersonVipId(personId);
|
|
|
- if(vipId==null){
|
|
|
+ if (vipId == null) {
|
|
|
personVipMessVO.setIfInVip(false);
|
|
|
}
|
|
|
Date expitrTime = null;
|
|
@@ -130,23 +137,22 @@ public class AssoPersonVipTypeService extends ServiceImpl<AssoPersonVipTypeMappe
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- if(vipId!=null){
|
|
|
+ if (vipId != null) {
|
|
|
LambdaQueryWrapper<AssoPersonVipType> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(AssoPersonVipType::getVipTypeId, vipId);
|
|
|
- queryWrapper.eq(AssoPersonVipType::getPersonId,personId);
|
|
|
- AssoPersonVipType assoPersonVipType =this.getOne(queryWrapper,false);
|
|
|
- expitrTime=assoPersonVipType.getExpitrTime();
|
|
|
- TenantVipType tenantVipType = tenantVipTypeService.getById(vipId);
|
|
|
-
|
|
|
- personVipMessVO.setVipTypeName(tenantVipType.getTenantVipName());
|
|
|
- personVipMessVO.setId(vipId);
|
|
|
- personVipMessVO.setExpitrTime(expitrTime);
|
|
|
+ queryWrapper.eq(AssoPersonVipType::getPersonId, personId);
|
|
|
+ AssoPersonVipType assoPersonVipType = this.getOne(queryWrapper, false);
|
|
|
+ expitrTime = assoPersonVipType.getExpitrTime();
|
|
|
+ TenantVipType tenantVipType = tenantVipTypeService.getById(vipId);
|
|
|
+
|
|
|
+ personVipMessVO.setVipTypeName(tenantVipType.getTenantVipName());
|
|
|
+ personVipMessVO.setId(vipId);
|
|
|
+ personVipMessVO.setExpitrTime(expitrTime);
|
|
|
}
|
|
|
- return personVipMessVO;
|
|
|
+ return personVipMessVO;
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
public Boolean updateExpitrTime(PersonnelUpdateVO personnelUpdateVO) {
|
|
|
LambdaQueryWrapper<AssoPersonVipType> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(AssoPersonVipType::getPersonId, personnelUpdateVO.getId());
|
|
@@ -159,6 +165,107 @@ public class AssoPersonVipTypeService extends ServiceImpl<AssoPersonVipTypeMappe
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 用户购买vip后给用户添加vip
|
|
|
+ *
|
|
|
+ * @param vipId
|
|
|
+ * @param lastMonth
|
|
|
+ * @param vipLevel
|
|
|
+ */
|
|
|
+ public void addPersonVIP(Integer vipId, Integer lastMonth, Integer vipLevel) {
|
|
|
+ QueryPersonVipDTO queryPersonVipDTO = new QueryPersonVipDTO();
|
|
|
+ queryPersonVipDTO.setVipType(1);
|
|
|
+ queryPersonVipDTO.setPersonId(1);
|
|
|
+ List<QueryPersonVipVO> queryPersonVipVOList = this.getBaseMapper().getPersonActiveVip(queryPersonVipDTO);
|
|
|
+ if (queryPersonVipVOList.size() == 0) {
|
|
|
+ //直接添加会员
|
|
|
+ } else {
|
|
|
+ Date startDate = null;
|
|
|
+ Date endDate = null;
|
|
|
+ Boolean ifInsert = false;
|
|
|
+ for (int i = 0; i < queryPersonVipVOList.size(); i++) {
|
|
|
+ QueryPersonVipVO queryPersonVipVO = queryPersonVipVOList.get(i);
|
|
|
+ Integer temId = queryPersonVipVO.getId();
|
|
|
+ Date temExpitrTime = queryPersonVipVO.getExpitrTime();
|
|
|
+ Date temCreateTime = queryPersonVipVO.getCreateTime();
|
|
|
+ Integer temLevel = queryPersonVipVO.getVipLevel();
|
|
|
+ Integer temVipId = queryPersonVipVO.getVipTypeId();
|
|
|
+ if (vipId == temVipId) {
|
|
|
+ startDate = temCreateTime;
|
|
|
+ endDate = DateUtils.getPlusMonthDate(temExpitrTime, lastMonth);
|
|
|
+ //TODO 更新
|
|
|
+ ifInsert = true;
|
|
|
+ } else if (vipLevel > temLevel) {
|
|
|
+ //也就是找到了新会员的起始位置
|
|
|
+ if (endDate == null) {
|
|
|
+ startDate = temCreateTime;
|
|
|
+ endDate = DateUtils.getPlusMonthDate(temCreateTime, lastMonth);
|
|
|
+ }
|
|
|
+ if (endDate.compareTo(temCreateTime) > 0 && endDate.compareTo(temExpitrTime) < 0) {
|
|
|
+ temCreateTime = endDate;
|
|
|
+ //TODO 更新
|
|
|
+ } else if (endDate.compareTo(temExpitrTime) >= 0) {
|
|
|
+ this.removeById(temId);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (endDate == null) {
|
|
|
+ QueryPersonVipVO queryPersonVipVOLast = queryPersonVipVOList.get(queryPersonVipVOList.size() - 1);
|
|
|
+ startDate = queryPersonVipVOLast.getExpitrTime();
|
|
|
+ endDate = DateUtils.getPlusMonthDate(startDate, lastMonth);
|
|
|
+ }
|
|
|
+ if (ifInsert == false) {
|
|
|
+ //TODO 插入
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<PersonVipDiscountMessage> getPersonVIPDiscountMessage(Integer vipId, Integer lastMonth, Integer vipLevel) {
|
|
|
+ List<PersonVipDiscountMessage> personVipDiscountMessages = new ArrayList<>();
|
|
|
+ QueryPersonVipDTO queryPersonVipDTO = new QueryPersonVipDTO();
|
|
|
+ queryPersonVipDTO.setVipType(1);
|
|
|
+ queryPersonVipDTO.setPersonId(1);
|
|
|
+ List<QueryPersonVipVO> queryPersonVipVOList = this.getBaseMapper().getPersonActiveVip(queryPersonVipDTO);
|
|
|
+ if (queryPersonVipVOList.size() == 0) {
|
|
|
+ return personVipDiscountMessages;
|
|
|
+ } else {
|
|
|
+ Date startDate = null;
|
|
|
+ Date endDate = null;
|
|
|
+ for (int i = 0; i < queryPersonVipVOList.size(); i++) {
|
|
|
+ QueryPersonVipVO queryPersonVipVO = queryPersonVipVOList.get(i);
|
|
|
+ Integer temId = queryPersonVipVO.getId();
|
|
|
+ Date temExpitrTime = queryPersonVipVO.getExpitrTime();
|
|
|
+ Date temCreateTime = queryPersonVipVO.getCreateTime();
|
|
|
+ Integer temLevel = queryPersonVipVO.getVipLevel();
|
|
|
+ Integer temVipId = queryPersonVipVO.getVipTypeId();
|
|
|
+ if (vipLevel > temLevel) {
|
|
|
+ //也就是找到了新会员的起始位置
|
|
|
+ if (endDate == null) {
|
|
|
+ startDate = temCreateTime;
|
|
|
+ endDate = DateUtils.getPlusMonthDate(startDate, lastMonth);
|
|
|
+ }
|
|
|
+ if (endDate.compareTo(temCreateTime) > 0 && endDate.compareTo(temExpitrTime) < 0) {
|
|
|
+ temExpitrTime = endDate;
|
|
|
+
|
|
|
+ }
|
|
|
+ PersonVipDiscountMessage personVipDiscountMessage = new PersonVipDiscountMessage();
|
|
|
+ personVipDiscountMessage.setVipTypeId(temVipId);
|
|
|
+ personVipDiscountMessage.setCreateTime(temCreateTime);
|
|
|
+ personVipDiscountMessage.setExpitrTime(temExpitrTime);
|
|
|
+ personVipDiscountMessages.add(personVipDiscountMessage);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ return personVipDiscountMessages;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|