diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/domain/Suit.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/domain/Suit.java new file mode 100644 index 0000000..34baa3f --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/domain/Suit.java @@ -0,0 +1,52 @@ +package com.ruoyi.bst.suit.domain; + +import java.math.BigDecimal; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 套餐对象 bst_suit + * + * @author ruoyi + * @date 2025-04-25 + */ +@Data +public class Suit extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + private Long suitId; + + @Excel(name = "商户ID") + @ApiModelProperty("商户ID") + private Long userId; + + @Excel(name = "店铺ID") + @ApiModelProperty("店铺ID") + private Long storeId; + + @Excel(name = "充值金额", readConverterExp = "单=位:元") + @ApiModelProperty("充值金额") + private BigDecimal rechargeAmount; + + @Excel(name = "爆灯次数") + @ApiModelProperty("爆灯次数") + private Long lightingNums; + + @Excel(name = "套餐名称") + @ApiModelProperty("套餐名称") + private String suitName; + + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") + @ApiModelProperty("状态") + private String status; + + @Excel(name = "显示顺序") + @ApiModelProperty("显示顺序") + private Integer orderNum; + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/domain/SuitQuery.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/domain/SuitQuery.java new file mode 100644 index 0000000..647efc8 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/domain/SuitQuery.java @@ -0,0 +1,15 @@ +package com.ruoyi.bst.suit.domain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class SuitQuery extends SuitVO{ + + @ApiModelProperty("套餐ID列表") + private List suitIds; + + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/domain/SuitVO.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/domain/SuitVO.java new file mode 100644 index 0000000..305ba61 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/domain/SuitVO.java @@ -0,0 +1,7 @@ +package com.ruoyi.bst.suit.domain; + +import lombok.Data; + +@Data +public class SuitVO extends Suit{ +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/mapper/SuitMapper.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/mapper/SuitMapper.java new file mode 100644 index 0000000..812f082 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/mapper/SuitMapper.java @@ -0,0 +1,74 @@ +package com.ruoyi.bst.suit.mapper; + +import java.util.List; +import com.ruoyi.bst.suit.domain.Suit; +import com.ruoyi.bst.suit.domain.SuitVO; +import com.ruoyi.bst.suit.domain.SuitQuery; +import org.apache.ibatis.annotations.Param; + +/** + * 套餐Mapper接口 + * + * @author ruoyi + * @date 2025-04-25 + */ +public interface SuitMapper +{ + /** + * 查询套餐 + * + * @param suitId 套餐主键 + * @return 套餐 + */ + SuitVO selectSuitBySuitId(Long suitId); + + /** + * 查询套餐列表 + * + * @param query 套餐 + * @return 套餐集合 + */ + List selectSuitList(@Param("query")SuitQuery query); + + /** + * 新增套餐 + * + * @param suit 套餐 + * @return 结果 + */ + int insertSuit(Suit suit); + + /** + * 批量新增套餐 + */ + int batchInsert(@Param("list") List list); + + /** + * 批量修改套餐 + */ + int batchUpdate(@Param("list") List list); + + /** + * 修改套餐 + * + * @param suit 套餐 + * @return 结果 + */ + public int updateSuit(@Param("data") Suit suit); + + /** + * 删除套餐 + * + * @param suitId 套餐主键 + * @return 结果 + */ + int deleteSuitBySuitId(Long suitId); + + /** + * 批量删除套餐 + * + * @param suitIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSuitBySuitIds(List suitIds); +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/mapper/SuitMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/mapper/SuitMapper.xml new file mode 100644 index 0000000..9ad5a6e --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/mapper/SuitMapper.xml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + select + bsu.suit_id, + bsu.user_id, + bsu.store_id, + bsu.recharge_amount, + bsu.lighting_nums, + bsu.suit_name, + bsu.status, + bsu.create_time, + bsu.deleted, + bsu.order_num, + bs.user_id + from bst_suit bsu + left join bst_store bs on bsu.store_id = bs.store_id + + + + and bsu.user_id = #{query.userId} + and bsu.store_id = #{query.storeId} + and bsu.recharge_amount = #{query.rechargeAmount} + and bsu.lighting_nums = #{query.lightingNums} + and bsu.suit_name like concat('%', #{query.suitName}, '%') + and bsu.status = #{query.status} + and bsu.deleted = #{query.deleted} + and bsu.order_num = #{query.orderNum} + ${@com.ruoyi.framework.util.DataScopeUtil@create(query.scope) + .userSetAlias("bs.user_id") + .build() + } + ${query.params.dataScope} + + + + + + + + insert into bst_suit + + user_id, + store_id, + recharge_amount, + lighting_nums, + suit_name, + status, + create_time, + deleted, + order_num, + + + #{userId}, + #{storeId}, + #{rechargeAmount}, + #{lightingNums}, + #{suitName}, + #{status}, + #{createTime}, + #{deleted}, + #{orderNum}, + + + + + insert into bst_suit + + user_id, + store_id, + recharge_amount, + lighting_nums, + suit_name, + status, + create_time, + deleted, + order_num, + + values + + + #{i.userId}, + default, + #{i.storeId}, + default, + #{i.rechargeAmount}, + default, + #{i.lightingNums}, + default, + #{i.suitName}, + default, + #{i.status}, + default, + #{i.createTime}, + default, + #{i.deleted}, + default, + #{i.orderNum}, + default, + + + + + + update bst_suit + + + + + WHEN #{item.suit_id} THEN #{item.userId} + + + WHEN #{item.suit_id} THEN `user_id` + + + + + + + WHEN #{item.suit_id} THEN #{item.storeId} + + + WHEN #{item.suit_id} THEN `store_id` + + + + + + + WHEN #{item.suit_id} THEN #{item.rechargeAmount} + + + WHEN #{item.suit_id} THEN `recharge_amount` + + + + + + + WHEN #{item.suit_id} THEN #{item.lightingNums} + + + WHEN #{item.suit_id} THEN `lighting_nums` + + + + + + + WHEN #{item.suit_id} THEN #{item.suitName} + + + WHEN #{item.suit_id} THEN `suit_name` + + + + + + + WHEN #{item.suit_id} THEN #{item.status} + + + WHEN #{item.suit_id} THEN `status` + + + + + + + WHEN #{item.suit_id} THEN #{item.createTime} + + + WHEN #{item.suit_id} THEN `create_time` + + + + + + + WHEN #{item.suit_id} THEN #{item.deleted} + + + WHEN #{item.suit_id} THEN `deleted` + + + + + + + WHEN #{item.suit_id} THEN #{item.orderNum} + + + WHEN #{item.suit_id} THEN `order_num` + + + + + where suit_id in + + #{item.suitId} + + + + + update bst_suit + + + + where suit_id = #{data.suitId} + + + + user_id = #{data.userId}, + store_id = #{data.storeId}, + recharge_amount = #{data.rechargeAmount}, + lighting_nums = #{data.lightingNums}, + suit_name = #{data.suitName}, + status = #{data.status}, + create_time = #{data.createTime}, + deleted = #{data.deleted}, + order_num = #{data.orderNum}, + + + + delete from bst_suit where suit_id = #{suitId} + + + + delete from bst_suit where suit_id in + + #{suitId} + + + diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/SuitConverter.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/SuitConverter.java new file mode 100644 index 0000000..c11a2b1 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/SuitConverter.java @@ -0,0 +1,18 @@ +package com.ruoyi.bst.suit.service; + +import com.ruoyi.bst.store.domain.Store; +import com.ruoyi.bst.suit.domain.Suit; + +public interface SuitConverter { + + /** + * 创建时转换为PO + */ + Suit toPoByCreate(Suit data); + + /** + * 更新时转换为PO + */ + Suit toPoByUpdate(Suit data); + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/SuitService.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/SuitService.java new file mode 100644 index 0000000..fad7659 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/SuitService.java @@ -0,0 +1,82 @@ +package com.ruoyi.bst.suit.service; + +import java.util.List; + +import com.ruoyi.bst.store.domain.StoreQuery; +import com.ruoyi.bst.store.domain.StoreVO; +import com.ruoyi.bst.suit.domain.Suit; +import com.ruoyi.bst.suit.domain.SuitVO; +import com.ruoyi.bst.suit.domain.SuitQuery; + +/** + * 套餐Service接口 + * + * @author ruoyi + * @date 2025-04-25 + */ +public interface SuitService +{ + /** + * 查询套餐 + * + * @param suitId 套餐主键 + * @return 套餐 + */ + public SuitVO selectSuitBySuitId(Long suitId); + + /** + * 查询套餐列表 + * + * @param suit 套餐 + * @return 套餐集合 + */ + public List selectSuitList(SuitQuery suit); + + /** + * 新增套餐 + * + * @param suit 套餐 + * @return 结果 + */ + public int insertSuit(Suit suit); + + /** + * 修改套餐 + * + * @param suit 套餐 + * @return 结果 + */ + public int updateSuit(Suit suit); + + /** + * 批量删除套餐 + * + * @param suitIds 需要删除的套餐主键集合 + * @return 结果 + */ + public int deleteSuitBySuitIds(List suitIds); + + /** + * 删除套餐信息 + * + * @param suitId 套餐主键 + * @return 结果 + */ + public int deleteSuitBySuitId(Long suitId); + + /** + * 查询店铺 + * + * @param id 店铺主键 + * @return 店铺 + */ + public SuitVO selectSuitById(Long id, boolean scope); + + default SuitVO selectSuitById(Long id) { + return this.selectSuitById(id, false); + } + + public SuitVO selectOne(SuitQuery query); + + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/SuitValidator.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/SuitValidator.java new file mode 100644 index 0000000..631ed4b --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/SuitValidator.java @@ -0,0 +1,29 @@ +package com.ruoyi.bst.suit.service; + +import java.util.List; + +public interface SuitValidator { + + + /** + * 判断当前用户是否可以编辑套餐 + * @param storeId 分区ID + * @return 是否允许 + */ + boolean canEdit(Long storeId); + + /** + * 判断当前用户是否可以删除套餐 + * @param storeIds 分区ID + * @return 是否允许 + */ + boolean canDeleteAll(List storeIds); + + /** + * 判断当前用户是否可以选择制定分区 + * @param storeId 分区ID + * @return 是否允许 + */ + boolean canCheckForSuit(Long storeId); + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitConverterImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitConverterImpl.java new file mode 100644 index 0000000..0c6a3ed --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitConverterImpl.java @@ -0,0 +1,39 @@ +package com.ruoyi.bst.suit.service.impl; + +import com.ruoyi.bst.store.domain.Store; +import com.ruoyi.bst.store.service.StoreConverter; +import com.ruoyi.bst.suit.domain.Suit; +import com.ruoyi.bst.suit.service.SuitConverter; +import org.springframework.stereotype.Service; + +@Service +public class SuitConverterImpl implements SuitConverter { + @Override + public Suit toPoByCreate(Suit data) { + if (data == null) { + return null; + } + Suit po = new Suit(); + // 设置基本信息 + po.setLightingNums(data.getLightingNums()); + po.setSuitName(data.getSuitName()); + po.setRechargeAmount(data.getRechargeAmount()); + po.setStatus(data.getStatus()); + return po; + } + + @Override + public Suit toPoByUpdate(Suit data) { + if (data == null) { + return null; + } + Suit po = new Suit(); + // 设置基本信息 + po.setSuitId(data.getSuitId()); + po.setLightingNums(data.getLightingNums()); + po.setSuitName(data.getSuitName()); + po.setRechargeAmount(data.getRechargeAmount()); + po.setStatus(data.getStatus()); + return po; + } +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitServiceImpl.java new file mode 100644 index 0000000..e68bc54 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitServiceImpl.java @@ -0,0 +1,132 @@ +package com.ruoyi.bst.suit.service.impl; + +import java.util.List; + +import com.github.pagehelper.PageHelper; +import com.ruoyi.bst.store.domain.StoreQuery; +import com.ruoyi.bst.store.domain.StoreVO; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.ServiceUtil; +import com.ruoyi.common.utils.collection.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.bst.suit.mapper.SuitMapper; +import com.ruoyi.bst.suit.domain.Suit; +import com.ruoyi.bst.suit.domain.SuitVO; +import com.ruoyi.bst.suit.domain.SuitQuery; +import com.ruoyi.bst.suit.service.SuitService; + +/** + * 套餐Service业务层处理 + * + * @author ruoyi + * @date 2025-04-25 + */ +@Service +public class SuitServiceImpl implements SuitService +{ + @Autowired + private SuitMapper suitMapper; + + /** + * 查询套餐 + * + * @param suitId 套餐主键 + * @return 套餐 + */ + @Override + public SuitVO selectSuitBySuitId(Long suitId) + { + return suitMapper.selectSuitBySuitId(suitId); + } + + /** + * 查询套餐列表 + * + * @param suit 套餐 + * @return 套餐 + */ + @Override + public List selectSuitList(SuitQuery suit) + { + return suitMapper.selectSuitList(suit); + } + + /** + * 新增套餐 + * + * @param suit 套餐 + * @return 结果 + */ + @Override + public int insertSuit(Suit suit) + { + suit.setCreateTime(DateUtils.getNowDate()); + return suitMapper.insertSuit(suit); + } + + /** + * 修改套餐 + * + * @param suit 套餐 + * @return 结果 + */ + @Override + public int updateSuit(Suit suit) + { + return suitMapper.updateSuit(suit); + } + + /** + * 批量删除套餐 + * + * @param suitIds 需要删除的套餐主键 + * @return 结果 + */ + @Override + public int deleteSuitBySuitIds(List suitIds) + { + return suitMapper.deleteSuitBySuitIds(suitIds); + } + + /** + * 删除套餐信息 + * + * @param suitId 套餐主键 + * @return 结果 + */ + @Override + public int deleteSuitBySuitId(Long suitId) + { + return suitMapper.deleteSuitBySuitId(suitId); + } + + + /** + * 查询店铺 + * + * @param storeId 店铺主键 + * @return 店铺 + */ + @Override + public SuitVO selectSuitById(Long storeId, boolean scope) + { + if (storeId == null) { + return null; + } + SuitQuery query = new SuitQuery(); + query.setStoreId(storeId); + query.setScope(scope); + return this.selectOne(query); + } + + @Override + public SuitVO selectOne(SuitQuery query) { + PageHelper.startPage(1, 1); + List list = suitMapper.selectSuitList(query); + if(list.isEmpty()) { + ServiceUtil.assertion(true,"当前店铺信息不属于您"); + } + return CollectionUtils.firstElement(list); + } +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitValidatorImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitValidatorImpl.java new file mode 100644 index 0000000..0ec9520 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitValidatorImpl.java @@ -0,0 +1,76 @@ +package com.ruoyi.bst.suit.service.impl; + +import com.ruoyi.bst.store.domain.StoreQuery; +import com.ruoyi.bst.store.domain.StoreVO; +import com.ruoyi.bst.store.service.StoreService; +import com.ruoyi.bst.store.service.StoreValidator; +import com.ruoyi.bst.suit.domain.SuitQuery; +import com.ruoyi.bst.suit.domain.SuitVO; +import com.ruoyi.bst.suit.service.SuitService; +import com.ruoyi.bst.suit.service.SuitValidator; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.collection.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +@Service +public class SuitValidatorImpl implements SuitValidator { + + @Autowired + private SuitService suitService; + + @Override + public boolean canEdit(Long suidId) { + return canOperate(Arrays.asList(suidId)); + } + + @Override + public boolean canDeleteAll(List suitIds) { + return canOperate(suitIds); + } + + @Override + public boolean canCheckForSuit(Long storeId) { + return canOperate(Arrays.asList(storeId)); + } + + // 是否可以操作店铺 + private boolean canOperate(List suitIds) { + if (SecurityUtils.isSysAdmin()) { + return true; + } + if (CollectionUtils.isEmptyElement(suitIds)) { + return true; + } + // 查询店铺 + SuitQuery query = new SuitQuery(); + query.setSuitIds(suitIds); + query.setScope(true); + List SuitVOList = suitService.selectSuitList(query); + Long userId = SecurityUtils.getUserId(); + + // 判断是否可以操作店铺 + for (Long suitId : suitIds) { + SuitVO suit = SuitVOList.stream() + .filter(item -> item.getSuitId().equals(suitId)) + .findFirst().orElse(null); + + if (suit == null) { + return false; + } + boolean canOperate = isMch(suit, userId); + if (!canOperate) { + return false; + } + } + return true; + } + + private boolean isMch(SuitVO suit, Long userId) { + return suit != null && suit.getUserId() != null && suit.getUserId().equals(userId); + } +} + diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/bst/DeviceController.java b/ruoyi-web/src/main/java/com/ruoyi/web/bst/DeviceController.java index f189b52..53b6149 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/bst/DeviceController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/bst/DeviceController.java @@ -51,6 +51,7 @@ public class DeviceController extends BaseController startPage(); startOrderBy(); query.setDeleted(false); + query.setScope(true); List list = deviceService.selectDeviceList(query); deviceIotService.pullDeviceInfoList(list, IotConstants.ONLINE_TYPE_COMMAND); return getDataTable(list); diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/bst/SuitController.java b/ruoyi-web/src/main/java/com/ruoyi/web/bst/SuitController.java new file mode 100644 index 0000000..33c5834 --- /dev/null +++ b/ruoyi-web/src/main/java/com/ruoyi/web/bst/SuitController.java @@ -0,0 +1,134 @@ +package com.ruoyi.web.bst; + +import com.ruoyi.bst.store.service.StoreValidator; +import com.ruoyi.bst.suit.domain.Suit; +import com.ruoyi.bst.suit.domain.SuitQuery; +import com.ruoyi.bst.suit.domain.SuitVO; +import com.ruoyi.bst.suit.service.SuitConverter; +import com.ruoyi.bst.suit.service.SuitService; +import com.ruoyi.bst.suit.service.SuitValidator; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.user.service.UserValidator; +import org.checkerframework.checker.units.qual.A; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 套餐Controller + * + * @author ruoyi + * @date 2025-04-25 + */ +@RestController +@RequestMapping("/bst/suit") +public class SuitController extends BaseController +{ + @Autowired + private SuitService suitService; + @Autowired + private UserValidator userValidator; + @Autowired + private SuitConverter suitConverter; + @Autowired + private SuitValidator suitValidator; + @Autowired + private StoreValidator storeValidator; + + /** + * 查询套餐列表 + */ + @PreAuthorize("@ss.hasPermi('bst:suit:list')") + @GetMapping("/list") + public TableDataInfo list(SuitQuery query) + { + startPage(); + startOrderBy(); + query.setDeleted(false); + query.setScope(true); + List list = suitService.selectSuitList(query); + return getDataTable(list); + } + + /** + * 导出套餐列表 + */ + @PreAuthorize("@ss.hasPermi('bst:suit:export')") + @Log(title = "套餐", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, SuitQuery query) + { + query.setScope(true); + List list = suitService.selectSuitList(query); + ExcelUtil util = new ExcelUtil(SuitVO.class); + util.exportExcel(response, list, "套餐数据"); + } + + /** + * 获取套餐详细信息 + */ + @PreAuthorize("@ss.hasPermi('bst:suit:query')") + @GetMapping(value = "/{suitId}") + public AjaxResult getInfo(@PathVariable("suitId") Long suitId) + { + return success(suitService.selectSuitById(suitId,true)); + } + + /** + * 新增套餐 + */ + @PreAuthorize("@ss.hasPermi('bst:suit:add')") + @Log(title = "套餐", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody Suit suit) + { + // 若不能操作他人,则设置为当前用户 + if (!userValidator.canView(suit.getUserId())) { + suit.setUserId(getUserId()); + } + suit.setUserId(getUserId()); + suitConverter.toPoByCreate(suit); + return toAjax(suitService.insertSuit(suit)); + } + + /** + * 修改套餐 + */ + @PreAuthorize("@ss.hasPermi('bst:suit:edit')") + @Log(title = "套餐", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody Suit suit) + { + if (!storeValidator.canEdit(suit.getStoreId())){ + return AjaxResult.error("您没有权限修改ID为" + suit.getStoreId() + "的商铺信息"); + } + // 若不能操作他人,则不修改用户ID + if (!userValidator.canView(suit.getUserId())) { + suit.setUserId(null); + } + suitConverter.toPoByUpdate(suit); + return toAjax(suitService.updateSuit(suit)); + } + + /** + * 删除套餐 + */ + @PreAuthorize("@ss.hasPermi('bst:suit:remove')") + @Log(title = "套餐", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable List ids) + { + if (!storeValidator.canDeleteAll(ids)) { + return AjaxResult.error("您没有权限删除ID为" + ids + "的店铺信息"); + } + return toAjax(suitService.deleteSuitBySuitIds(ids)); + } +}