diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreController.java index ab13e9304..fa5e0dbe4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreController.java @@ -99,6 +99,13 @@ public class StoreController extends XktBaseController { return R.ok(BeanUtil.toBean(storeService.getInfo(storeId), StoreResVO.class)); } + @ApiOperation(value = "档口过期时间", httpMethod = "GET", response = R.class) + @GetMapping(value = "/expire/{storeId}/{target}") + public R getExpireInfo(@PathVariable("storeId") Long storeId, @PathVariable("target") Integer target) { + return R.ok(BeanUtil.toBean(storeService.getExpireInfo(storeId, target), StoreExpireResVO.class)); + } + + @ApiOperation(value = "PC 商城首页 获取档口基础信息", httpMethod = "GET", response = R.class) @GetMapping(value = "/simple/{storeId}") public R getSimpleInfo(@PathVariable("storeId") Long storeId) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/store/StoreExpireResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/store/StoreExpireResVO.java new file mode 100644 index 000000000..aad6fe051 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/store/StoreExpireResVO.java @@ -0,0 +1,26 @@ +package com.ruoyi.web.controller.xkt.vo.store; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +@ApiModel +public class StoreExpireResVO { + + @ApiModelProperty(value = "档口ID") + private Long storeId; + @ApiModelProperty(value = "目标 1[正式版] 2[实力质造会员]") + private Integer target; + @ApiModelProperty(value = "试用过期时间 正式版过期时间 会员过期时间") + private Date serviceEndTime; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/store/StoreSimpleResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/store/StoreSimpleResVO.java index 2948765bf..f04904d49 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/store/StoreSimpleResVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/store/StoreSimpleResVO.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.Date; /** * @author liujiang @@ -43,6 +44,10 @@ public class StoreSimpleResVO { private SSFileVO logo; @ApiModelProperty(value = "档口库存系统 1 步橘网 2 天友 3 发货宝") private Integer stockSys; + @ApiModelProperty(value = "档口状态") + private Integer storeStatus; + @ApiModelProperty(value = "会员等级") + private Integer memberLevel; @Data public static class SSFileVO { diff --git a/sql/ry_20240629.sql b/sql/ry_20240629.sql index d75fcee1e..9e7094f28 100644 --- a/sql/ry_20240629.sql +++ b/sql/ry_20240629.sql @@ -3210,7 +3210,7 @@ CREATE TABLE `store` `prod_scale` tinyint UNSIGNED NULL DEFAULT NULL COMMENT '生产规模', `integrity_gold` decimal(10, 2) NULL DEFAULT NULL COMMENT '保证金', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - `trial_end_time` date NULL DEFAULT NULL COMMENT '试用截止时间', + `service_end_time` date NULL DEFAULT NULL COMMENT '服务截止时间', `storage_usage` decimal(10, 3) NULL DEFAULT NULL COMMENT '已使用文件大小', `template_num` int UNSIGNED NULL DEFAULT NULL COMMENT '档口模板ID', `store_status` tinyint UNSIGNED NULL DEFAULT NULL COMMENT '档口状态', diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/Store.java b/xkt/src/main/java/com/ruoyi/xkt/domain/Store.java index 7f8c0c753..371a9d158 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/Store.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/Store.java @@ -106,11 +106,11 @@ public class Store extends XktBaseEntity { private BigDecimal integrityGold; /** - * 试用截止时间 + * 服务截止时间(storeStatus=3 试用截止时间 storeStatus=4 年费到期时间) */ @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "试用截止时间", width = 30, dateFormat = "yyyy-MM-dd") - private Date trialEndTime; + @Excel(name = "服务截止时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date serviceEndTime; /** * 已使用文件大小 diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/store/StoreExpireResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/store/StoreExpireResDTO.java new file mode 100644 index 000000000..e375e2251 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/store/StoreExpireResDTO.java @@ -0,0 +1,27 @@ +package com.ruoyi.xkt.dto.store; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +@ApiModel +@Accessors(chain = true) +public class StoreExpireResDTO { + + @ApiModelProperty(value = "档口ID") + private Long storeId; + @ApiModelProperty(value = "目标 1[正式版] 2[实力质造会员]") + private Integer target; + @ApiModelProperty(value = "试用过期时间 正式版过期时间 会员过期时间") + private Date serviceEndTime; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/store/StoreSimpleResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/store/StoreSimpleResDTO.java index 40502995e..6644a4967 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/store/StoreSimpleResDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/store/StoreSimpleResDTO.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.experimental.Accessors; import java.math.BigDecimal; +import java.util.Date; /** * @author liujiang @@ -45,6 +46,10 @@ public class StoreSimpleResDTO { private SSFileDTO logo; @ApiModelProperty(value = "档口库存系统 1 步橘网 2 天友 3 发货宝") private Integer stockSys; + @ApiModelProperty(value = "档口状态") + private Integer storeStatus; + @ApiModelProperty(value = "会员等级") + private Integer memberLevel; @Data public static class SSFileDTO { diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreService.java index 720b62c27..622d81f39 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreService.java @@ -24,13 +24,6 @@ public interface IStoreService { */ int updateStore(StoreUpdateDTO storeUpdateDTO); - /** - * 注册时新增档口信息 - * - * @return int - */ - int create(); - /** * 档口分页数据 * @@ -198,4 +191,13 @@ public interface IStoreService { * @return Integer */ Integer getStockSys(Long storeId); + + /** + * 获取档口到期信息 + * + * @param storeId 档口ID + * @param target 目标 1[正式版] 2[实力质造会员] + * @return StoreExpireResDTO + */ + StoreExpireResDTO getExpireInfo(Long storeId, Integer target); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreCertificateServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreCertificateServiceImpl.java index c71535fde..5104dbd37 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreCertificateServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreCertificateServiceImpl.java @@ -221,9 +221,9 @@ public class StoreCertificateServiceImpl implements IStoreCertificateService { store.setStorageUsage(BigDecimal.ZERO); // 默认使用第一个模板 store.setTemplateNum(1); - // 当前时间往后推1年为试用期时间 - Date oneYearAfter = Date.from(LocalDate.now().plusYears(1).atStartOfDay(ZoneId.systemDefault()).toInstant()); - store.setTrialEndTime(oneYearAfter); + // 试用期往后推3个月 + Date threeMonthAfter = Date.from(LocalDate.now().plusMonths(3).atStartOfDay(ZoneId.systemDefault()).toInstant()); + store.setServiceEndTime(threeMonthAfter); // 设置档口默认权重 0 store.setStoreWeight(Constants.WEIGHT_DEFAULT_ZERO); // 设置默认的库存系统为 步橘 ,后续可在条码迁移之处修改 diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java index f67ac2b88..8b170f5fe 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java @@ -79,35 +79,7 @@ public class StoreServiceImpl implements IStoreService { final SysFileMapper fileMapper; final IStoreCertificateService storeCertService; final EsClientWrapper esClientWrapper; - - - /** - * 注册时新增档口数据 - * - * @return 结果 - */ - @Override - @Transactional - public int create() { - Store store = new Store(); - // 初始化注册时只需绑定用户ID即可 - store.setUserId(SecurityUtils.getUserId()); - // 默认档口状态为:待审核 - store.setStoreStatus(StoreStatus.UN_AUDITED.getValue()); - // 当前时间往后推1年为试用期时间 - Date oneYearAfter = Date.from(LocalDate.now().plusYears(1).atStartOfDay(ZoneId.systemDefault()).toInstant()); - store.setTrialEndTime(oneYearAfter); - // 设置档口默认权重 0 - store.setStoreWeight(Constants.WEIGHT_DEFAULT_ZERO); - int count = this.storeMapper.insert(store); - // 创建档口账户 - assetService.createInternalAccountIfNotExists(store.getId()); - // 档口用户绑定 - userService.refreshRelStore(store.getUserId(), ESystemRole.SUPPLIER.getId()); - // 放到redis中 - redisCache.setCacheObject(CacheConstants.STORE_KEY + store.getId(), store); - return count; - } + final StoreMemberMapper storeMemberMapper; /** * 档口分页数据 @@ -458,6 +430,34 @@ public class StoreServiceImpl implements IStoreService { return store.getStockSys(); } + /** + * 获取档口到期信息 + * + * @param storeId 档口ID + * @param target 目标 1[正式版] 2[实力质造会员] + * @return StoreExpireResDTO + */ + @Override + @Transactional(readOnly = true) + public StoreExpireResDTO getExpireInfo(Long storeId, Integer target) { + Store store = Optional.ofNullable(storeMapper.selectById(storeId)).orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR)); + StoreExpireResDTO expireDTO = new StoreExpireResDTO().setStoreId(storeId).setTarget(target); + // 购买正式版 + if (Objects.equals(target, 1)) { + expireDTO.setServiceEndTime(store.getServiceEndTime()); + // 购买档口会员 + } else if (Objects.equals(target, 2)) { + // 获取档口会员 + Date todayStart = Date.from(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant()); + StoreMember storeMember = this.storeMemberMapper.selectOne(new LambdaQueryWrapper() + .eq(StoreMember::getStoreId, storeId).eq(StoreMember::getDelFlag, Constants.UNDELETED) + .le(StoreMember::getStartTime, todayStart)); + expireDTO.setServiceEndTime(ObjectUtils.isNotEmpty(storeMember) ? storeMember.getEndTime() : null); + } + return expireDTO; + } + + /** * 档口首页今日销售额 * @@ -556,6 +556,9 @@ public class StoreServiceImpl implements IStoreService { SysFile logo = this.fileMapper.selectById(simpleDTO.getStoreLogoId()); simpleDTO.setLogo(BeanUtil.toBean(logo, StoreSimpleResDTO.SSFileDTO.class)); } + StoreMember member = this.redisCache.getCacheObject(CacheConstants.STORE_MEMBER + storeId); + // 会员等级 + simpleDTO.setMemberLevel(ObjectUtils.isNotEmpty(member) ? member.getLevel() : null); Long userId = SecurityUtils.getUserIdSafe(); if (ObjectUtils.isEmpty(userId)) { return simpleDTO; diff --git a/xkt/src/main/resources/mapper/StoreMapper.xml b/xkt/src/main/resources/mapper/StoreMapper.xml index 03945462d..426e61527 100644 --- a/xkt/src/main/resources/mapper/StoreMapper.xml +++ b/xkt/src/main/resources/mapper/StoreMapper.xml @@ -34,7 +34,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sc.legal_name, sc.license_name, s.store_logo_id, - s.stock_sys + s.stock_sys, + s.store_status, + s.service_end_time FROM store s JOIN store_certificate sc ON s.id = sc.store_id WHERE