master:系统会员购买体系完善;
parent
d58cc0d78f
commit
3fe665d7a8
|
|
@ -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<StoreExpireResVO> 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<StoreSimpleResVO> getSimpleInfo(@PathVariable("storeId") Long storeId) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 '档口状态',
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 已使用文件大小
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
// 设置默认的库存系统为 步橘 ,后续可在条码迁移之处修改
|
||||
|
|
|
|||
|
|
@ -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<StoreMember>()
|
||||
.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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue