diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreMemberController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreMemberController.java index f7c2161bf..f09efde25 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreMemberController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreMemberController.java @@ -4,9 +4,16 @@ import cn.hutool.core.bean.BeanUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.XktBaseController; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.page.Page; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.web.controller.xkt.vo.store.StorePageVO; import com.ruoyi.web.controller.xkt.vo.storeMember.StoreMemberCreateVO; +import com.ruoyi.web.controller.xkt.vo.storeMember.StoreMemberPageVO; +import com.ruoyi.xkt.dto.store.StorePageDTO; +import com.ruoyi.xkt.dto.store.StorePageResDTO; import com.ruoyi.xkt.dto.storeMember.StoreMemberCreateDTO; +import com.ruoyi.xkt.dto.storeMember.StoreMemberPageDTO; +import com.ruoyi.xkt.dto.storeMember.StoreMemberPageResDTO; import com.ruoyi.xkt.service.IStoreMemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -40,6 +47,13 @@ public class StoreMemberController extends XktBaseController { return R.ok(storeMemberService.create(BeanUtil.toBean(createVO, StoreMemberCreateDTO.class))); } + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") + @ApiOperation(value = "查询会员列表 ", httpMethod = "POST", response = R.class) + @PostMapping("/page") + public R> page(@Validated @RequestBody StoreMemberPageVO pageVO) { + return R.ok(storeMemberService.page(BeanUtil.toBean(pageVO, StoreMemberPageDTO.class))); + } + // TODO 每天获取档口会员过期提醒 // TODO 每天获取档口会员过期提醒 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeMember/StoreMemberPageVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeMember/StoreMemberPageVO.java new file mode 100644 index 000000000..aa84101c1 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeMember/StoreMemberPageVO.java @@ -0,0 +1,22 @@ +package com.ruoyi.web.controller.xkt.vo.storeMember; + +import com.ruoyi.web.controller.xkt.vo.BasePageVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel +public class StoreMemberPageVO extends BasePageVO { + + @ApiModelProperty(value = "档口名称") + private String storeName; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeMember/StoreMemberPageDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeMember/StoreMemberPageDTO.java new file mode 100644 index 000000000..f7a7e8daf --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeMember/StoreMemberPageDTO.java @@ -0,0 +1,22 @@ +package com.ruoyi.xkt.dto.storeMember; + +import com.ruoyi.xkt.dto.BasePageDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel +public class StoreMemberPageDTO extends BasePageDTO { + + @ApiModelProperty(value = "档口名称") + private String storeName; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeMember/StoreMemberPageResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeMember/StoreMemberPageResDTO.java new file mode 100644 index 000000000..960946aca --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeMember/StoreMemberPageResDTO.java @@ -0,0 +1,31 @@ +package com.ruoyi.xkt.dto.storeMember; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +public class StoreMemberPageResDTO { + + @ApiModelProperty(value = "档口会员ID") + private Long storeMemberId; + @ApiModelProperty(value = "档口ID") + private Long storeId; + @ApiModelProperty(value = "档口名称") + private String storeName; + @ApiModelProperty(value = "档口负责人") + private String userName; + @ApiModelProperty(value = "联系电话") + private String contactPhone; + @ApiModelProperty(value = "生效开始时间") + private Date startTime; + @ApiModelProperty(value = "生效结束时间") + private Date endTime; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreMemberMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreMemberMapper.java index 4e32e5b07..5739bd91a 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreMemberMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreMemberMapper.java @@ -2,8 +2,12 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.StoreMember; +import com.ruoyi.xkt.dto.storeMember.StoreMemberPageDTO; +import com.ruoyi.xkt.dto.storeMember.StoreMemberPageResDTO; import org.springframework.stereotype.Repository; +import java.util.List; + /** * 推广营销Mapper接口 * @@ -13,4 +17,12 @@ import org.springframework.stereotype.Repository; @Repository public interface StoreMemberMapper extends BaseMapper { + /** + * 档口会员列表 + * + * @param pageDTO 列表入参 + * @return List + */ + List selectStoreMemberPage(StoreMemberPageDTO pageDTO); + } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreMemberService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreMemberService.java index db414aceb..ec70e5dce 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreMemberService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreMemberService.java @@ -1,6 +1,9 @@ package com.ruoyi.xkt.service; +import com.ruoyi.common.core.page.Page; import com.ruoyi.xkt.dto.storeMember.StoreMemberCreateDTO; +import com.ruoyi.xkt.dto.storeMember.StoreMemberPageDTO; +import com.ruoyi.xkt.dto.storeMember.StoreMemberPageResDTO; /** * 推广营销Service接口 @@ -17,4 +20,12 @@ public interface IStoreMemberService { * @return Integer */ Integer create(StoreMemberCreateDTO createDTO); + + /** + * 档口会员列表 + * + * @param pageDTO 档口会员列表入参 + * @return Page + */ + Page page(StoreMemberPageDTO pageDTO); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdminAdvertRoundServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdminAdvertRoundServiceImpl.java index cee7d5af8..d40c79d4c 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdminAdvertRoundServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdminAdvertRoundServiceImpl.java @@ -61,6 +61,10 @@ public class AdminAdvertRoundServiceImpl implements IAdminAdvertRoundService { @Override @Transactional(readOnly = true) public Page page(AdminAdRoundPageDTO pageDTO) { + // 用户是否为档口管理者或子账户 + if (!SecurityUtils.isAdmin() ) { + throw new ServiceException("当前用户非管理员账号,无权限操作!", HttpStatus.ERROR); + } Optional.ofNullable(pageDTO.getLaunchStatus()).orElseThrow(() -> new ServiceException("投放状态launchStatus必传", HttpStatus.ERROR)); PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize()); List list = this.advertRoundMapper.selectAdminAdvertPage(pageDTO); @@ -95,6 +99,10 @@ public class AdminAdvertRoundServiceImpl implements IAdminAdvertRoundService { @Override @Transactional public Integer auditPic(AdminAdRoundAuditDTO auditDTO) { + // 用户是否为档口管理者或子账户 + if (!SecurityUtils.isAdmin() ) { + throw new ServiceException("当前用户非管理员账号,无权限操作!", HttpStatus.ERROR); + } AdvertRound advertRound = Optional.ofNullable(this.advertRoundMapper.selectOne(new LambdaQueryWrapper() .eq(AdvertRound::getId, auditDTO.getAdvertRoundId()).eq(AdvertRound::getDelFlag, Constants.UNDELETED))) .orElseThrow(() -> new ServiceException("推广位不存在!", HttpStatus.ERROR)); @@ -125,6 +133,10 @@ public class AdminAdvertRoundServiceImpl implements IAdminAdvertRoundService { @Override @Transactional public Integer unsubscribe(AdminAdRoundUnsubscribeDTO unsubscribeDTO) { + // 用户是否为档口管理者或子账户 + if (!SecurityUtils.isAdmin() ) { + throw new ServiceException("当前用户非管理员账号,无权限操作!", HttpStatus.ERROR); + } AdvertRound advertRound = Optional.ofNullable(this.advertRoundMapper.selectOne(new LambdaQueryWrapper() .eq(AdvertRound::getId, unsubscribeDTO.getAdvertRoundId()).eq(AdvertRound::getDelFlag, Constants.UNDELETED) .eq(AdvertRound::getStoreId, unsubscribeDTO.getStoreId()))) @@ -153,6 +165,10 @@ public class AdminAdvertRoundServiceImpl implements IAdminAdvertRoundService { @Override @Transactional public Integer uploadAdvertPic(AdRoundUpdateDTO picDTO) { + // 用户是否为档口管理者或子账户 + if (!SecurityUtils.isAdmin() ) { + throw new ServiceException("当前用户非管理员账号,无权限操作!", HttpStatus.ERROR); + } AdvertRound advertRound = Optional.ofNullable(this.advertRoundMapper.selectOne(new LambdaQueryWrapper() .eq(AdvertRound::getId, picDTO.getAdvertRoundId()).eq(AdvertRound::getStoreId, picDTO.getStoreId()) .eq(AdvertRound::getDelFlag, Constants.UNDELETED))) @@ -181,6 +197,10 @@ public class AdminAdvertRoundServiceImpl implements IAdminAdvertRoundService { @Override @Transactional public synchronized Integer sysIntercept(AdminAdRoundSysInterceptDTO interceptDTO) { + // 用户是否为档口管理者或子账户 + if (!SecurityUtils.isAdmin() ) { + throw new ServiceException("当前用户非管理员账号,无权限操作!", HttpStatus.ERROR); + } final LocalDateTime nineThirty = LocalDateTime.of(LocalDate.now(), LocalTime.of(21, 30)); final LocalDateTime tenFive = LocalDateTime.of(LocalDate.now(), LocalTime.of(22, 5)); // 判断当前时间是否为晚上9:30 - 10:05区间,若是,则管理员不可操作推广拦截 @@ -261,6 +281,10 @@ public class AdminAdvertRoundServiceImpl implements IAdminAdvertRoundService { @Override @Transactional public Integer cancelIntercept(AdminAdRoundCancelInterceptDTO cancelInterceptDTO) { + // 用户是否为档口管理者或子账户 + if (!SecurityUtils.isAdmin() ) { + throw new ServiceException("当前用户非管理员账号,无权限操作!", HttpStatus.ERROR); + } // 该推广位是否被拦截 AdvertRound advertRound = Optional.ofNullable(this.advertRoundMapper.selectOne(new LambdaQueryWrapper() .eq(AdvertRound::getId, cancelInterceptDTO.getAdvertRoundId()).eq(AdvertRound::getDelFlag, Constants.UNDELETED) 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 185e9f894..fda6006e5 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 @@ -1,15 +1,20 @@ package com.ruoyi.xkt.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.HttpStatus; +import com.ruoyi.common.core.page.Page; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.xkt.domain.Store; import com.ruoyi.xkt.domain.StoreMember; import com.ruoyi.xkt.dto.storeMember.StoreMemberCreateDTO; +import com.ruoyi.xkt.dto.storeMember.StoreMemberPageDTO; +import com.ruoyi.xkt.dto.storeMember.StoreMemberPageResDTO; import com.ruoyi.xkt.enums.NoticeOwnerType; import com.ruoyi.xkt.enums.NoticeType; import com.ruoyi.xkt.enums.StoreMemberLevel; @@ -20,11 +25,13 @@ import com.ruoyi.xkt.service.IAssetService; import com.ruoyi.xkt.service.INoticeService; import com.ruoyi.xkt.service.IStoreMemberService; import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; +import java.util.List; import java.util.Optional; /** @@ -52,6 +59,10 @@ public class StoreMemberServiceImpl implements IStoreMemberService { @Override @Transactional public Integer create(StoreMemberCreateDTO createDTO) { + // 用户是否为档口管理者或子账户 + if (!SecurityUtils.isAdmin()) { + throw new ServiceException("当前用户非管理员账号,无权限操作!", HttpStatus.ERROR); + } Optional.ofNullable(createDTO.getStoreId()).orElseThrow(() -> new RuntimeException("档口ID不能为空!")); Optional.ofNullable(createDTO.getPayPrice()).orElseThrow(() -> new RuntimeException("购买金额不能为空!")); StoreMember storeMember = new StoreMember(); @@ -80,4 +91,24 @@ public class StoreMemberServiceImpl implements IStoreMemberService { return count; } + /** + * 获取档口会员列表 + * + * @param pageDTO 档口会员列表入参 + * @return Page + */ + @Override + @Transactional(readOnly = true) + public Page page(StoreMemberPageDTO pageDTO) { + // 用户是否为档口管理者或子账户 + if (!SecurityUtils.isAdmin()) { + throw new ServiceException("当前用户非管理员账号,无权限操作!", HttpStatus.ERROR); + } + PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize()); + List list = this.storeMemberMapper.selectStoreMemberPage(pageDTO); + return CollectionUtils.isEmpty(list) ? Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum()) + : Page.convert(new PageInfo<>(list)); + } + + } diff --git a/xkt/src/main/resources/mapper/StoreMemberMapper.xml b/xkt/src/main/resources/mapper/StoreMemberMapper.xml new file mode 100644 index 000000000..db5f70dcd --- /dev/null +++ b/xkt/src/main/resources/mapper/StoreMemberMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + \ No newline at end of file