lrj 3 ヶ月 前
コミット
2f56110118

+ 12 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/vipType/PersonVipDiscountMessage.java

@@ -0,0 +1,12 @@
+package cn.cslg.permission.common.model.qiaobi.vipType;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class PersonVipDiscountMessage {
+    private Integer vipTypeId;
+    private Date createTime;
+    private Date expitrTime;
+}

+ 15 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/vipType/QueryPersonVipDTO.java

@@ -0,0 +1,15 @@
+package cn.cslg.permission.common.model.qiaobi.vipType;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class QueryPersonVipDTO {
+
+
+    private Integer personId;
+
+    private Integer vipType;
+
+}

+ 19 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/vipType/QueryPersonVipVO.java

@@ -0,0 +1,19 @@
+package cn.cslg.permission.common.model.qiaobi.vipType;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class QueryPersonVipVO {
+    private Integer id;
+
+    private Integer personId;
+
+    private Integer vipTypeId;
+    private Date createTime;
+
+    private Date expitrTime;
+
+    private Integer vipLevel;
+}

+ 0 - 1
PCS/src/main/java/cn/cslg/permission/domain/qiaobi/AssoPersonVipType.java

@@ -21,7 +21,6 @@ public class AssoPersonVipType extends Model {
     private Integer personId;
 
     private Integer vipTypeId;
-
     private Date createTime;
 
     private Date expitrTime;

+ 34 - 0
PCS/src/main/java/cn/cslg/permission/domain/qiaobi/Goods.java

@@ -0,0 +1,34 @@
+package cn.cslg.permission.domain.qiaobi;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+/**
+ * @TableName GOODS
+ */
+@TableName(value ="GOODS")
+@Data
+public class Goods extends Model {
+    private Integer id;
+
+    private Double price;
+
+    private Integer goodType;
+
+    private Integer byeType;
+
+    private Integer goodCount;
+
+    private Integer goodUnit;
+
+    private String createId;
+
+    private Date createTime;
+}

+ 6 - 0
PCS/src/main/java/cn/cslg/permission/mapper/qiaobi/AssoPersonVipTypeMapper.java

@@ -1,9 +1,14 @@
 package cn.cslg.permission.mapper.qiaobi;
 
+import cn.cslg.permission.common.model.qiaobi.QiaoBiVipTypeDTO;
+import cn.cslg.permission.common.model.qiaobi.vipType.QueryPersonVipDTO;
+import cn.cslg.permission.common.model.qiaobi.vipType.QueryPersonVipVO;
 import cn.cslg.permission.domain.qiaobi.AssoPersonVipType;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
 * @author admin
 * @description 针对表【ASSO_PERSON_VIP_TYPE(人员的会员)】的数据库操作Mapper
@@ -13,6 +18,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface AssoPersonVipTypeMapper extends BaseMapper<AssoPersonVipType> {
 
+    public List<QueryPersonVipVO> getPersonActiveVip(QueryPersonVipDTO queryPersonVipDTO);
 }
 
 

+ 18 - 0
PCS/src/main/java/cn/cslg/permission/mapper/qiaobi/GoodsMapper.java

@@ -0,0 +1,18 @@
+package cn.cslg.permission.mapper.qiaobi;
+
+import cn.cslg.permission.domain.qiaobi.Goods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author admin
+* @description 针对表【GOODS(商品表)】的数据库操作Mapper
+* @createDate 2025-06-20 17:06:25
+* @Entity generator.domain.Goods
+*/
+public interface GoodsMapper extends BaseMapper<Goods> {
+
+}
+
+
+
+

+ 2 - 0
PCS/src/main/java/cn/cslg/permission/service/qiaobi/AppVipTypeService.java

@@ -231,6 +231,8 @@ public class AppVipTypeService extends ServiceImpl<AppVipTypeMapper, AppVipType>
         PersonVipMessVO personVipMessVO = assoPersonVipTypeService.getPersonVipMessage(personId);
         return personVipMessVO;
     }
+
+
 }
 
 

+ 122 - 15
PCS/src/main/java/cn/cslg/permission/service/qiaobi/AssoPersonVipTypeService.java

@@ -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;
+    }
 }
 
 

+ 20 - 0
PCS/src/main/java/cn/cslg/permission/service/qiaobi/GoodsService.java

@@ -0,0 +1,20 @@
+package cn.cslg.permission.service.qiaobi;
+
+import cn.cslg.permission.domain.qiaobi.Goods;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.cslg.permission.mapper.qiaobi.GoodsMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author admin
+* @description 针对表【GOODS(商品表)】的数据库操作Service实现
+* @createDate 2025-06-20 17:06:25
+*/
+@Service
+public class GoodsService extends ServiceImpl<GoodsMapper, Goods>{
+
+}
+
+
+
+

+ 15 - 5
PCS/src/main/resources/mapper/AssoPersonVipTypeMapper.xml

@@ -4,16 +4,26 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.cslg.permission.mapper.qiaobi.AssoPersonVipTypeMapper">
 
-    <resultMap id="BaseResultMap" type="cn.cslg.permission.domain.qiaobi.AssoPersonVipType">
+    <resultMap id="BaseResultMap" type="cn.cslg.permission.common.model.qiaobi.vipType.QueryPersonVipVO">
             <result property="id" column="ID" jdbcType="INTEGER"/>
             <result property="personId" column="PERSON_ID" jdbcType="INTEGER"/>
             <result property="vipTypeId" column="VIP_TYPE_ID" jdbcType="INTEGER"/>
             <result property="createTime" column="CREATE_TIME" jdbcType="TIMESTAMP"/>
             <result property="expitrTime" column="EXPITR_TIME" jdbcType="TIMESTAMP"/>
+            <result property="vipLevel" column="VIP_LEVEL" jdbcType="INTEGER"/>
+
     </resultMap>
 
-    <sql id="Base_Column_List">
-        ID,PERSON_ID,VIP_TYPE_ID,
-        CREATE_TIME,EXPITR_TIME
-    </sql>
+
+    <select id="getPersonActiveVip" resultMap="BaseResultMap">
+        select a.ID as id,b.VIP_LEVEL as level from  ASSO_PERSON_VIP_TYPE a left join APP_VIP_TYPE b on
+       a.VIP_TYPE_ID=b.TENANT_VIP_TYPE_ID and b.VIP_LEVEL
+        <where>
+            a.PERSON_ID=#{personId}
+        and a.EXPITR_TIME> NOW()
+        and b.VIP_TYPE=#{vipType}
+        order by b.VIP_LEVEL DESC
+        </where>
+
+    </select>
 </mapper>

+ 23 - 0
PCS/src/main/resources/mapper/GoodsMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.cslg.permission.mapper.qiaobi.GoodsMapper">
+
+    <resultMap id="BaseResultMap" type="cn.cslg.permission.domain.qiaobi.Goods">
+            <result property="id" column="ID" jdbcType="INTEGER"/>
+            <result property="price" column="PRICE" jdbcType="DOUBLE"/>
+            <result property="goodType" column="GOOD_TYPE" jdbcType="INTEGER"/>
+            <result property="byeType" column="BYE_TYPE" jdbcType="INTEGER"/>
+            <result property="goodCount" column="GOOD_COUNT" jdbcType="INTEGER"/>
+            <result property="goodUnit" column="GOOD_UNIT" jdbcType="INTEGER"/>
+            <result property="createId" column="CREATE_ID" jdbcType="VARCHAR"/>
+            <result property="createTime" column="CREATE_TIME" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,PRICE,GOOD_TYPE,
+        BYE_TYPE,GOOD_COUNT,GOOD_UNIT,
+        CREATE_ID,CREATE_TIME
+    </sql>
+</mapper>