diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java index 86e4c66bb..a497f05ae 100644 --- a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java +++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java @@ -132,6 +132,8 @@ public interface CacheConstants { String WALLET_SETTING_DETAIL = "wallet:detail:setting"; + String WALLET_RULE_PRICE_CONFIG_DETAIL = "wallet:detail:rule_price_config"; + /* ************************************* end 钱包相关 end ************************************* */ /* ************************************* start 第三方对接相关 start ************************************* */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index 2368b9589..5a97dc52a 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -19,13 +19,11 @@ import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.security.service.PjcloudUser; -import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardManagerDto; -import com.bsd.pjcloud.hard.api.dto.hard.CurrentUserHardTypeInfoDto; import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto; import com.bsd.pjcloud.hard.api.dto.hard.HardCreateOrderDto; import com.bsd.pjcloud.hard.api.dto.order.HardCreateCarDto; @@ -61,7 +59,6 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Lazy; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -73,7 +70,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.concurrent.CompletableFuture; /** * 订单表 diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/rule/WalletRuleMchConfigDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/rule/WalletRuleMchConfigDto.java new file mode 100644 index 000000000..49f4db719 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/rule/WalletRuleMchConfigDto.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.dto.rule; + +import com.bsd.pjcloud.wallet.api.entity.rule.WalletRuleMchConfigEntity; +import lombok.Data; + +@Data +public class WalletRuleMchConfigDto extends WalletRuleMchConfigEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/rule/WalletRulePriceConfigDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/rule/WalletRulePriceConfigDto.java new file mode 100644 index 000000000..529de2cf2 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/rule/WalletRulePriceConfigDto.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.dto.rule; + +import com.bsd.pjcloud.wallet.api.entity.rule.WalletRulePriceConfigEntity; +import lombok.Data; + +@Data +public class WalletRulePriceConfigDto extends WalletRulePriceConfigEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/rule/WalletRuleMchConfigVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/rule/WalletRuleMchConfigVo.java new file mode 100644 index 000000000..03ef48156 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/rule/WalletRuleMchConfigVo.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.vo.rule; + +import com.bsd.pjcloud.wallet.api.entity.rule.WalletRuleMchConfigEntity; +import lombok.Data; + +@Data +public class WalletRuleMchConfigVo extends WalletRuleMchConfigEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/rule/WalletRulePriceConfigVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/rule/WalletRulePriceConfigVo.java new file mode 100644 index 000000000..a29046b1f --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/rule/WalletRulePriceConfigVo.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.vo.rule; + +import com.bsd.pjcloud.wallet.api.entity.rule.WalletRulePriceConfigEntity; +import lombok.Data; + +@Data +public class WalletRulePriceConfigVo extends WalletRulePriceConfigEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRulePriceConfigController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRulePriceConfigController.java index 60e13e224..763301472 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRulePriceConfigController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRulePriceConfigController.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.wallet.api.dto.rule.WalletRulePriceConfigDto; import com.bsd.pjcloud.wallet.api.entity.rule.WalletRulePriceConfigEntity; import com.bsd.pjcloud.wallet.service.WalletRulePriceConfigService; import org.springframework.security.access.prepost.PreAuthorize; @@ -39,7 +40,7 @@ public class WalletRulePriceConfigController { } @Operation(summary = "通过id查询", description = "通过id查询") - @GetMapping("/id") + @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('wallet_walletRulePriceConfig_view')") public R getById(@PathVariable("id") Long id) { return R.ok(walletRulePriceConfigService.getById(id)); @@ -49,16 +50,16 @@ public class WalletRulePriceConfigController { @SysLog("新增钱包规则") @PostMapping @PreAuthorize("@pms.hasPermission('wallet_walletRulePriceConfig_add')") - public R save(@RequestBody WalletRulePriceConfigEntity walletRulePriceConfig) { - return R.ok(walletRulePriceConfigService.save(walletRulePriceConfig)); + public R save(@RequestBody WalletRulePriceConfigDto dto) { + return R.ok(walletRulePriceConfigService.create(dto)); } @Operation(summary = "修改钱包规则", description = "修改钱包规则") @SysLog("修改钱包规则") @PutMapping @PreAuthorize("@pms.hasPermission('wallet_walletRulePriceConfig_edit')") - public R updateById(@RequestBody WalletRulePriceConfigEntity walletRulePriceConfig) { - return R.ok(walletRulePriceConfigService.updateById(walletRulePriceConfig)); + public R updateById(@RequestBody WalletRulePriceConfigDto dto) { + return R.ok(walletRulePriceConfigService.edit(dto)); } @Operation(summary = "通过id删除钱包规则", description = "通过id删除钱包规则") @@ -66,7 +67,8 @@ public class WalletRulePriceConfigController { @DeleteMapping @PreAuthorize("@pms.hasPermission('wallet_walletRulePriceConfig_del')") public R removeById(@RequestBody Long[] ids) { - return R.ok(walletRulePriceConfigService.removeBatchByIds(CollUtil.toList(ids))); + walletRulePriceConfigService.delByIds(CollUtil.toList(ids)); + return R.ok(); } @ResponseExcel diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRulePriceConfigService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRulePriceConfigService.java index 669f24f3f..d5c5db4b3 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRulePriceConfigService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRulePriceConfigService.java @@ -1,8 +1,24 @@ package com.bsd.pjcloud.wallet.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.wallet.api.dto.rule.WalletRulePriceConfigDto; import com.bsd.pjcloud.wallet.api.entity.rule.WalletRulePriceConfigEntity; -public interface WalletRulePriceConfigService extends IService { +import java.util.ArrayList; +public interface WalletRulePriceConfigService extends IService { + /** + * 新增 + */ + Long create(WalletRulePriceConfigDto dto); + + /** + * 修改 + */ + Long edit(WalletRulePriceConfigDto dto); + + /** + * 删除 + */ + void delByIds(ArrayList list); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRulePriceConfigServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRulePriceConfigServiceImpl.java index 4c61a9c4f..568502986 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRulePriceConfigServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRulePriceConfigServiceImpl.java @@ -1,16 +1,99 @@ package com.bsd.pjcloud.wallet.service.impl.rule; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.extra.spring.SpringUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.common.core.constant.CacheConstants; +import com.bsd.pjcloud.wallet.api.dto.rule.WalletRulePriceConfigDto; import com.bsd.pjcloud.wallet.api.entity.rule.WalletRulePriceConfigEntity; import com.bsd.pjcloud.wallet.mapper.rule.WalletRulePriceConfigMapper; import com.bsd.pjcloud.wallet.service.WalletRulePriceConfigService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.io.Serializable; +import java.util.ArrayList; + /** * 钱包规则 * * @author dzc * @date 2025-03-26 11:09:52 */ +@Validated +@Slf4j +@RequiredArgsConstructor @Service public class WalletRulePriceConfigServiceImpl extends ServiceImpl implements WalletRulePriceConfigService { + + private final StringRedisTemplate redisTemplate; + + @Override + @Cacheable(value = CacheConstants.WALLET_RULE_PRICE_CONFIG_DETAIL, key = "#id", condition = "#id != null", unless = "#result == null") + public WalletRulePriceConfigEntity getById(Serializable id) { + return super.getById(id); + } + + /** + * 新增 + */ + @Override + @CacheEvict(value = CacheConstants.WALLET_RULE_PRICE_CONFIG_DETAIL, key = "#dto.getId()", condition = "#dto.getId() != null") + public Long create(WalletRulePriceConfigDto dto) { + if (existRulePriceType(dto.getRulePriceType(), null)) { + throw new RuntimeException("规则类型不能重复"); + } + baseMapper.insert(dto); + return dto.getId(); + } + + /** + * 修改 + */ + @Override + @CacheEvict(value = CacheConstants.WALLET_RULE_PRICE_CONFIG_DETAIL, key = "#dto.getId()", condition = "#dto.getId() != null") + public Long edit(WalletRulePriceConfigDto dto) { + if (existRulePriceType(dto.getRulePriceType(), dto.getId())) { + throw new RuntimeException("规则类型不能重复"); + } + WalletRulePriceConfigEntity detial = getSelf().getById(dto.getId()); + if (ObjectUtil.isEmpty(detial)) throw new RuntimeException("商户不存在"); + baseMapper.updateById(dto); + return dto.getId(); + } + + /** + * 删除 + */ + @Override + public void delByIds(ArrayList list) { + if (ObjectUtil.isEmpty(list)) return; + // 删除缓存 + list.forEach(v -> { + redisTemplate.opsForValue().getAndDelete(CacheConstants.WALLET_RULE_PRICE_CONFIG_DETAIL + v); + // walletThirdZyService.syncAllMch(v, Boolean.TRUE); + }); + baseMapper.deleteByIds(list); + } + + private boolean existRulePriceType(String rulePriceConfigType, Long id) { + Long count = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(rulePriceConfigType), WalletRulePriceConfigEntity::getRulePriceType, rulePriceConfigType) + .ne(ObjectUtil.isNotEmpty(id), WalletRulePriceConfigEntity::getId, id) + ); + if (ObjectUtil.isNotEmpty(id)) { + return count >= 1; + } + return count > 0; + } + + private WalletRulePriceConfigServiceImpl getSelf() { + return SpringUtil.getBean(getClass()); + } } \ No newline at end of file