diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductDemandTemplateController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductDemandTemplateController.java index 05bfbf103..6260ad3a7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductDemandTemplateController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductDemandTemplateController.java @@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.*; * @author ruoyi * @date 2025-03-26 */ -@Api(tags = "档口生产需求下载模板") +@Api(tags = "档口生产需求模板") @RestController @RequiredArgsConstructor @RequestMapping("/rest/v1/store-templates") @@ -37,8 +37,8 @@ public class StoreProductDemandTemplateController extends XktBaseController { } @PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()") - @Log(title = "更新档口需求下载模板", businessType = BusinessType.UPDATE) - @ApiOperation(value = "更新档口需求下载模板", httpMethod = "PUT", response = R.class) + @Log(title = "更新档口需求模板", businessType = BusinessType.UPDATE) + @ApiOperation(value = "更新档口需求模板", httpMethod = "PUT", response = R.class) @PutMapping("") public R updateTemplate(@RequestBody StoreDemandTemplateUpdateVO updateVO) { return R.ok(templateService.updateTemplate(BeanUtil.toBean(updateVO, StoreDemandTemplateUpdateDTO.class))); 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 index 0ecc5a7d2..3905304d1 100644 --- 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 @@ -22,7 +22,9 @@ public class StoreExpireResVO { private Date serviceEndTime; @ApiModelProperty(value = "试用金额 正式版金额") private BigDecimal serviceAmount; - @ApiModelProperty(value = "会员过期时间") + @ApiModelProperty(value = "会员状态 null 1:未购买待审核 2:已购买待审核 3:审核通过(正式使用)") + private Integer memberStatus; + @ApiModelProperty(value = "会员过期时间 未购买待审核没有时间") private Date memberEndTime; @ApiModelProperty(value = "会员金额") private BigDecimal memberAmount; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemandTemplate/StoreDemandTemplateResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemandTemplate/StoreDemandTemplateResVO.java index 17bda8355..ad2dcde1c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemandTemplate/StoreDemandTemplateResVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemandTemplate/StoreDemandTemplateResVO.java @@ -51,7 +51,7 @@ public class StoreDemandTemplateResVO { private Integer selectFacName; @ApiModelProperty(value = "商品信息 需求单号") private Integer selectDemandCode; - @ApiModelProperty(value = "商品信息 提单时间") + @ApiModelProperty(value = "商品信息 制单时间") private Integer selectMakeTime; @ApiModelProperty(value = "商品信息 工厂货号") private Integer selectFactoryArtNum; @@ -67,9 +67,9 @@ public class StoreDemandTemplateResVO { private Integer selectDemandStatus; @ApiModelProperty(value = "商品信息 紧急程度 0正常 1紧急") private Integer selectEmergency; - @ApiModelProperty(value = "商品信息 总需求数量") + @ApiModelProperty(value = "商品信息 总数量") private Integer selectQuantity; - @ApiModelProperty(value = "工艺信息 客户名称") + @ApiModelProperty(value = "工艺信息 客户") private Integer selectPartnerName; @ApiModelProperty(value = "工艺信息 商标") private Integer selectTrademark; 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 index 53789e43f..0fb0ed8fb 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/store/StoreExpireResDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/store/StoreExpireResDTO.java @@ -24,7 +24,9 @@ public class StoreExpireResDTO { private Date serviceEndTime; @ApiModelProperty(value = "试用金额 正式版金额") private BigDecimal serviceAmount; - @ApiModelProperty(value = "会员过期时间") + @ApiModelProperty(value = "会员状态 null 1:未购买待审核 2:已购买待审核 3:审核通过(正式使用)") + private Integer memberStatus; + @ApiModelProperty(value = "会员过期时间 未购买待审核没有时间") private Date memberEndTime; @ApiModelProperty(value = "会员金额") private BigDecimal memberAmount; diff --git a/xkt/src/main/java/com/ruoyi/xkt/enums/StoreMemberStatus.java b/xkt/src/main/java/com/ruoyi/xkt/enums/StoreMemberStatus.java index c7962c81d..b6e57f00b 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/enums/StoreMemberStatus.java +++ b/xkt/src/main/java/com/ruoyi/xkt/enums/StoreMemberStatus.java @@ -18,8 +18,8 @@ public enum StoreMemberStatus { // 未购买待审核 WAIT_AUDIT(1, "未购买待审核"), // 已购买待审核(续费状态) - BOUGHT_WAIT_AUDIT(2, "已购买待审核"), - // 审核通过(正式使用) + BOUGHT_WAIT_AUDIT(2, "已购买待审核"), + // 审核通过(正式成为会员) AUDIT_PASS(3, "审核通过"), // 审核拒绝 AUDIT_REJECT(4, "审核拒绝"), diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreMemberServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreMemberServiceImpl.java index cf426354f..dd12e9fb6 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreMemberServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreMemberServiceImpl.java @@ -176,6 +176,8 @@ public class StoreMemberServiceImpl implements IStoreMemberService { Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper() .eq(Store::getId, storeMember.getStoreId()).eq(Store::getDelFlag, Constants.UNDELETED))) .orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR)); + // 将档口购买优惠金额置为null + store.setMemberAmount(null); store.setStoreWeight(ObjectUtils.defaultIfNull(store.getStoreWeight(), 0) + 1); this.storeMapper.updateById(store); // 将档口会员信息添加到 redis 中 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 7b5ef1b51..2dea33acc 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 @@ -434,6 +434,9 @@ public class StoreServiceImpl implements IStoreService { /** * 获取档口到期信息 + * 1. 试用期 未购买 正式版 未购买会员 返回足额的正式版金额 足额会员金额 + * 2. 正式使用 未购买会员 [正式使用 会员过期(未购买会员)] 返回足够的正式版金额 返回会员金额差价 + * 3. 正式使用 已购买会员 返回足额的正式版会员 返回会员金额差价 * * @param storeId 档口ID * @return StoreExpireResDTO @@ -441,16 +444,27 @@ public class StoreServiceImpl implements IStoreService { @Override @Transactional(readOnly = true) public StoreExpireResDTO getExpireInfo(Long storeId) { + // 用户是否为档口管理者或子账户 + if (!SecurityUtils.isAdmin() && !SecurityUtils.isStoreManagerOrSub(storeId)) { + throw new ServiceException("当前用户非管理员账号,无权限操作!", HttpStatus.ERROR); + } Store store = Optional.ofNullable(storeMapper.selectById(storeId)).orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR)); - StoreExpireResDTO expireDTO = new StoreExpireResDTO().setStoreId(storeId).setServiceEndTime(store.getServiceEndTime()) - .setServiceAmount(ObjectUtils.defaultIfNull(store.getServiceAmount(), Constants.STORE_ANNUAL_AMOUNT)) - .setMemberAmount(ObjectUtils.defaultIfNull(store.getMemberAmount(), Constants.STORE_MEMBER_AMOUNT)); - // 获取档口会员 - 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)); - return expireDTO.setMemberEndTime(ObjectUtils.isNotEmpty(storeMember) ? storeMember.getEndTime() : null); + .eq(StoreMember::getMemberStatus, StoreMemberStatus.AUDIT_PASS.getValue())); + BigDecimal serviceAmount = ObjectUtils.defaultIfNull(store.getServiceAmount(), Constants.STORE_ANNUAL_AMOUNT); + BigDecimal memberAmount = ObjectUtils.defaultIfNull(store.getMemberAmount(), Constants.STORE_MEMBER_AMOUNT); + // 如果档口为正式使用,则返回 diff 值 + if (Objects.equals(store.getStoreStatus(), StoreStatus.FORMAL_USE.getValue())) { + // 如果会员价设置的价 比 年费低,则 自动使用默认价格 ;防止误操作 + memberAmount = memberAmount.compareTo(serviceAmount) <= 0 + ? Constants.STORE_MEMBER_AMOUNT.subtract(serviceAmount) : memberAmount.subtract(serviceAmount); + } + return new StoreExpireResDTO().setStoreId(storeId).setServiceEndTime(store.getServiceEndTime()) + .setServiceAmount(serviceAmount).setMemberAmount(memberAmount) + .setMemberEndTime(ObjectUtils.isNotEmpty(storeMember) ? storeMember.getEndTime() : null) + .setMemberStatus(ObjectUtils.isNotEmpty(storeMember) ? storeMember.getMemberStatus() : null); } /** @@ -840,7 +854,7 @@ public class StoreServiceImpl implements IStoreService { this.storeCusMapper.insert(new StoreCustomer().setStoreId(storeId).setPhone(contactPhone).setCusName(Constants.STORE_CUS_CASH)); // 创建默认的工厂 this.storeFactoryMapper.insert(new StoreFactory().setFacName(storeName + "工厂")); - // 创建默认的需求下载模板 + // 创建默认的需求模板 this.storeTemplateService.initTemplate(storeId); }