From e9f039e1ce695bfd83734e9b87900a3f1dc097d5 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 29 Apr 2025 09:50:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=95=86=E6=88=B7=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/entity/mch/MchCatgoryEntity.java | 94 ++++++++++++++++++ .../WalletTransactionController.java | 1 + .../controller/mch/MchCatgoryController.java | 96 +++++++++++++++++++ .../wallet/mapper/mch/MchCatgoryMapper.java | 11 +++ .../wallet/service/MchCatgoryService.java | 17 ++++ .../impl/mch/MchCatgoryServiceImpl.java | 56 +++++++++++ .../resources/mapper/mch/MchCatgoryMapper.xml | 19 ++++ 7 files changed, 294 insertions(+) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchCatgoryEntity.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchCatgoryController.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchCatgoryMapper.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchCatgoryService.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchCatgoryServiceImpl.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchCatgoryMapper.xml diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchCatgoryEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchCatgoryEntity.java new file mode 100644 index 00000000..f4017ad5 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchCatgoryEntity.java @@ -0,0 +1,94 @@ +package com.bsd.pjcloud.wallet.api.entity.mch; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.bsd.pjcloud.common.core.util.TenantTable; +import java.time.LocalDateTime; + +/** + * 商户分类 + */ +@Data +@TenantTable +@TableName("mch_catgory") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "商户分类") +public class MchCatgoryEntity extends Model { + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description="主键") + private Long id; + + /** + * 分类名 + */ + @Schema(description="分类名") + private String name; + + /** + * 分类名类型 + */ + @Schema(description="分类名类型") + private String bizType; + + /** + * 排序 + */ + @Schema(description="排序") + private Integer sort; + + /** + * 备注 + */ + @Schema(description="备注") + private String remark; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建时间") + private LocalDateTime createTime; + + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description="修改人") + private String updateBy; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description="修改时间") + private LocalDateTime updateTime; + + /** + * 删除标记 + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description="删除标记") + private String delFlag; + + /** + * 租户ID + */ + @Schema(description="租户ID") + private Long tenantId; +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java index df3b21e7..418c53ba 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java @@ -96,6 +96,7 @@ public class WalletTransactionController { @PostMapping("/page-cz") public R pageCz(@ParameterObject Page page, @RequestBody WalletTransactionDto dto) { dto.setBizTypes(WalletBizEnum.getTopUpCodes()); + dto.setType(WalletTransactionDto.TYPE_INCOME); DataScope dataScope = new DataScope(); return R.ok(walletTransactionService.scopePageList(page, dto, dataScope)); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchCatgoryController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchCatgoryController.java new file mode 100644 index 00000000..13479be8 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchCatgoryController.java @@ -0,0 +1,96 @@ +package com.bsd.pjcloud.wallet.controller.mch; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.entity.mch.MchCatgoryEntity; +import com.bsd.pjcloud.wallet.service.MchCatgoryService; +import org.springframework.security.access.prepost.PreAuthorize; +import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Objects; + +/** + * 商户分类 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/mch-catgory") +@Tag(description = "mch-catgory", name = "商户分类管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class MchCatgoryController { + + private final MchCatgoryService mchCatgoryService; + + @Operation(summary = "下拉查询(没有权限)", description = "下拉查询(没有权限)") + @GetMapping("/select") + public R select(@ParameterObject Page page, @ParameterObject MchCatgoryEntity mchCatgory) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .like(ObjectUtil.isNotEmpty(mchCatgory.getName()), MchCatgoryEntity::getName, mchCatgory.getName()) + .orderByDesc(MchCatgoryEntity::getCreateTime) + .orderByDesc(MchCatgoryEntity::getId); + return R.ok(mchCatgoryService.page(page, wrapper)); + } + + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('waller_mchCatgory_view')") + public R getMchCatgoryPage(@ParameterObject Page page, @ParameterObject MchCatgoryEntity mchCatgory) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .like(ObjectUtil.isNotEmpty(mchCatgory.getName()), MchCatgoryEntity::getName, mchCatgory.getName()) + .orderByDesc(MchCatgoryEntity::getCreateTime) + .orderByDesc(MchCatgoryEntity::getId); + return R.ok(mchCatgoryService.page(page, wrapper)); + } + + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('waller_mchCatgory_view')") + public R getById(@PathVariable("id") Long id) { + return R.ok(mchCatgoryService.getById(id)); + } + + @Operation(summary = "新增商户分类", description = "新增商户分类") + @SysLog("新增商户分类") + @PostMapping + @PreAuthorize("@pms.hasPermission('waller_mchCatgory_add')") + public R save(@RequestBody MchCatgoryEntity dto) { + return R.ok(mchCatgoryService.create(dto)); + } + + @Operation(summary = "修改商户分类", description = "修改商户分类") + @SysLog("修改商户分类") + @PutMapping + @PreAuthorize("@pms.hasPermission('waller_mchCatgory_edit')") + public R updateById(@RequestBody MchCatgoryEntity dto) { + return R.ok(mchCatgoryService.edit(dto)); + } + + @Operation(summary = "通过id删除商户分类", description = "通过id删除商户分类") + @SysLog("通过id删除商户分类") + @DeleteMapping + @PreAuthorize("@pms.hasPermission('waller_mchCatgory_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(mchCatgoryService.removeBatchByIds(CollUtil.toList(ids))); + } + + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('waller_mchCatgory_export')") + public List export(MchCatgoryEntity mchCatgory, Long[] ids) { + return mchCatgoryService.list(Wrappers.lambdaQuery(mchCatgory).in(ArrayUtil.isNotEmpty(ids), MchCatgoryEntity::getId, ids)); + } +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchCatgoryMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchCatgoryMapper.java new file mode 100644 index 00000000..724ce58d --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchCatgoryMapper.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.wallet.mapper.mch; + +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.entity.mch.MchCatgoryEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MchCatgoryMapper extends PjcloudBaseMapper { + + +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchCatgoryService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchCatgoryService.java new file mode 100644 index 00000000..c2535778 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchCatgoryService.java @@ -0,0 +1,17 @@ +package com.bsd.pjcloud.wallet.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.wallet.api.entity.mch.MchCatgoryEntity; + +public interface MchCatgoryService extends IService { + + /** + * 新增 + */ + Long create(MchCatgoryEntity dto); + + /** + * 编辑 + */ + Long edit(MchCatgoryEntity dto); +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchCatgoryServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchCatgoryServiceImpl.java new file mode 100644 index 00000000..bbd92695 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchCatgoryServiceImpl.java @@ -0,0 +1,56 @@ +package com.bsd.pjcloud.wallet.service.impl.mch; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.wallet.api.entity.mch.MchCatgoryEntity; +import com.bsd.pjcloud.wallet.mapper.mch.MchCatgoryMapper; +import com.bsd.pjcloud.wallet.service.MchCatgoryService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +/** + * 商户分类 + */ +@Validated +@Slf4j +@RequiredArgsConstructor +@Service +public class MchCatgoryServiceImpl extends ServiceImpl implements MchCatgoryService { + + /** + * 新增 + */ + @Override + public Long create(MchCatgoryEntity dto) { + if (existName(dto)) throw new RuntimeException("分类名不能重复"); + baseMapper.insert(dto); + return dto.getId(); + } + + /** + * 编辑 + */ + @Override + public Long edit(MchCatgoryEntity dto) { + if (existName(dto)) throw new RuntimeException("分类名不能重复"); + baseMapper.updateById(dto); + return dto.getId(); + } + + /** + * 判断分类名是否重复 + */ + private boolean existName(MchCatgoryEntity dto) { + Long count = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(dto.getName()), MchCatgoryEntity::getName, dto.getName()) + .ne(ObjectUtil.isNotEmpty(dto.getId()), MchCatgoryEntity::getId, dto.getId()) + ); + if (ObjectUtil.isNotEmpty(dto.getId())) { + return count >= 1; + } + return count > 0; + } +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchCatgoryMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchCatgoryMapper.xml new file mode 100644 index 00000000..bdc938fa --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchCatgoryMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file