From bfb414000284ab943518dbd8c7b3044fb049570a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 17 Oct 2025 11:33:23 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=E8=87=AA=E6=8F=90=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 40 ++++- .../mch/WalletMchPickUpStatusEnum.java | 26 ++++ .../wallet/api/dto/mch/MchPickUpDto.java | 16 ++ .../api/entity/mch/MchPickUpEntity.java | 140 ++++++++++++++++++ .../api/entity/mch/MchPickUpJoinEntity.java | 37 +++++ .../wallet/api/vo/mch/MchPickUpVo.java | 16 ++ .../controller/mch/MchPickUpController.java | 83 +++++++++++ .../mapper/mch/MchPickUpJoinMapper.java | 10 ++ .../wallet/mapper/mch/MchPickUpMapper.java | 17 +++ .../wallet/service/MchPickUpService.java | 29 ++++ .../impl/mch/MchPickUpServiceImpl.java | 102 +++++++++++++ .../mapper/mch/MchPickUpJoinMapper.xml | 7 + .../resources/mapper/mch/MchPickUpMapper.xml | 44 ++++++ 13 files changed, 566 insertions(+), 1 deletion(-) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/mch/WalletMchPickUpStatusEnum.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/MchPickUpDto.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpEntity.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpJoinEntity.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/mch/MchPickUpVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchPickUpController.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchPickUpJoinMapper.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchPickUpMapper.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchPickUpService.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpJoinMapper.xml create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpMapper.xml diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 804637b4e..7fafbd4e2 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -642,4 +642,42 @@ CREATE TABLE mch_checkout del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', tenant_id bigint DEFAULT NULL COMMENT '租户ID', PRIMARY KEY (id) -) ENGINE = InnoDB COMMENT ='商户结账表'; \ No newline at end of file +) ENGINE = InnoDB COMMENT ='商户结账表'; + +-- ---------------------------- +-- Table structure for mch_pick_up +-- ---------------------------- +DROP TABLE IF EXISTS mch_pick_up; +CREATE TABLE mch_pick_up +( + id bigint NOT NULL AUTO_INCREMENT COMMENT '创建者', + name varchar(128) NOT NULL COMMENT '自提点名', + logo varchar(256) DEFAULT NULL COMMENT '门店logo', + introduction varchar(256) DEFAULT NULL COMMENT '门店简介', + phone varchar(16) DEFAULT NULL COMMENT '门店手机', + status varchar(32) DEFAULT NULL COMMENT '门店状态', + latitude double DEFAULT NULL COMMENT '纬度', + longitude double DEFAULT NULL COMMENT '经度', + detail_address varchar(256) DEFAULT NULL COMMENT '门店详细地址', + business_hours_json varchar(1024) DEFAULT NULL COMMENT '营业时间', + create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', + update_time datetime DEFAULT NULL COMMENT '修改时间', + del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', + tenant_id bigint DEFAULT NULL COMMENT '租户ID', + PRIMARY KEY (id) +) ENGINE = InnoDB COMMENT ='商户自提点表'; + + +-- ---------------------------- +-- Table structure for mch_pick_up_join +-- ---------------------------- +DROP TABLE IF EXISTS mch_pick_up_join; +CREATE TABLE mch_pick_up_join +( + id bigint NOT NULL AUTO_INCREMENT COMMENT '创建者', + mch_id bigint NOT NULL COMMENT '商户id', + mch_pick_up_id bigint NOT NULL COMMENT '自提点id', + PRIMARY KEY (id) +) ENGINE = InnoDB COMMENT ='商户自提点关联表'; \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/mch/WalletMchPickUpStatusEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/mch/WalletMchPickUpStatusEnum.java new file mode 100644 index 000000000..d89549633 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/mch/WalletMchPickUpStatusEnum.java @@ -0,0 +1,26 @@ +package com.bsd.pjcloud.wallet.api.constant.mch; + +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 自提点合作状态 + */ +@Getter +@AllArgsConstructor +public enum WalletMchPickUpStatusEnum { + COOPERATION_ERROR("10", "未合作"), + COOPERATION_SUCCESS("20", "正在合作"), + ; + + private final String code; + private final String desc; + + public static WalletMchPickUpStatusEnum valueOfByCode(String code) { + if (ObjectUtil.isEmpty(code)) return null; + return Arrays.stream(values()).filter(v -> ObjectUtil.equals(code, v.getCode())).findFirst().get(); + } +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/MchPickUpDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/MchPickUpDto.java new file mode 100644 index 000000000..31fd34c89 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/MchPickUpDto.java @@ -0,0 +1,16 @@ +package com.bsd.pjcloud.wallet.api.dto.mch; + +import com.bsd.pjcloud.wallet.api.entity.mch.MchPickUpEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class MchPickUpDto extends MchPickUpEntity { + + /** + * 商户ID列表 + */ + private List mchIds; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpEntity.java new file mode 100644 index 000000000..cbf374648 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpEntity.java @@ -0,0 +1,140 @@ +package com.bsd.pjcloud.wallet.api.entity.mch; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import com.bsd.pjcloud.common.core.util.TenantTable; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 商户自提点 + */ +@Data +@TenantTable +@TableName("mch_pick_up") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "商户自提点") +public class MchPickUpEntity extends Model { + + + /** + * 创建者 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "创建者") + private Long id; + + /** + * 自提点名 + */ + @Schema(description = "自提点名") + private String name; + + /** + * 门店logo + */ + @Schema(description = "门店logo") + private String logo; + + /** + * 门店简介 + */ + @Schema(description = "门店简介") + private String introduction; + + /** + * 门店手机 + */ + @Schema(description = "门店手机") + private String phone; + + /** + * 门店状态 + */ + @Schema(description = "门店状态") + private String status; + + /** + * 纬度 + */ + @Schema(description = "纬度") + private Double latitude; + + /** + * 经度 + */ + @Schema(description = "经度") + private Double longitude; + + /** + * 门店详细地址 + */ + @Schema(description = "门店详细地址") + private String detailAddress; + + /** + * 营业时间 + */ + @Schema(description = "营业时间") + private String businessHoursJson; + + /** + * 创建人 + */ + @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; + + @Data + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class BusinessHours { + + private String title; + + private String startTime; + + private String endTime; + + } +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpJoinEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpJoinEntity.java new file mode 100644 index 000000000..4734ff984 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpJoinEntity.java @@ -0,0 +1,37 @@ +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; + +/** + * 商户自提点关联表 + */ +@Data +@TableName("mch_pick_up_join") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "商户自提点关联表") +public class MchPickUpJoinEntity extends Model { + + + /** + * 创建者 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "创建者") + private Long id; + + /** + * 商户id + */ + @Schema(description = "商户id") + private Long mchId; + + /** + * 自提点id + */ + @Schema(description = "自提点id") + private Long mchPickUpId; +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/mch/MchPickUpVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/mch/MchPickUpVo.java new file mode 100644 index 000000000..0f27fd3a5 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/mch/MchPickUpVo.java @@ -0,0 +1,16 @@ +package com.bsd.pjcloud.wallet.api.vo.mch; + +import com.bsd.pjcloud.wallet.api.entity.mch.MchPickUpEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class MchPickUpVo extends MchPickUpEntity { + + /** + * 商户ID列表 + */ + private List mchIds; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchPickUpController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchPickUpController.java new file mode 100644 index 000000000..2b349e2b8 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchPickUpController.java @@ -0,0 +1,83 @@ +package com.bsd.pjcloud.wallet.controller.mch; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.collection.CollUtil; +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.data.datascope.DataScope; +import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.wallet.api.dto.mch.MchPickUpDto; +import com.bsd.pjcloud.wallet.api.entity.mch.MchPickUpEntity; +import com.bsd.pjcloud.wallet.service.MchPickUpService; +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; + +/** + * 商户自提点 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/mch-pick-up") +@Tag(description = "mch-pick-up", name = "商户自提点管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class MchPickUpController { + + private final MchPickUpService mchPickUpService; + + + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('mch_mchPickUp_view')") + public R getMchPickUpPage(@ParameterObject Page page, @ParameterObject MchPickUpDto dto) { + return R.ok(mchPickUpService.scopPageJoin(page, dto, DataScope.of())); + } + + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('mch_mchPickUp_view')") + public R getById(@PathVariable("id") Long id) { + return R.ok(mchPickUpService.join(id)); + } + + @Operation(summary = "新增商户自提点", description = "新增商户自提点") + @SysLog("新增商户自提点") + @PostMapping + @PreAuthorize("@pms.hasPermission('mch_mchPickUp_add')") + public R save(@RequestBody MchPickUpDto dto) { + return R.ok(mchPickUpService.create(dto)); + } + + @Operation(summary = "修改商户自提点", description = "修改商户自提点") + @SysLog("修改商户自提点") + @PutMapping + @PreAuthorize("@pms.hasPermission('mch_mchPickUp_edit')") + public R updateById(@RequestBody MchPickUpDto dto) { + return R.ok(mchPickUpService.edit(dto)); + } + + @Operation(summary = "通过id删除商户自提点", description = "通过id删除商户自提点") + @SysLog("通过id删除商户自提点") + @DeleteMapping + @PreAuthorize("@pms.hasPermission('mch_mchPickUp_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(mchPickUpService.removeBatchByIds(CollUtil.toList(ids))); + } + + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('mch_mchPickUp_export')") + public List export(MchPickUpEntity mchPickUp, Long[] ids) { + return mchPickUpService.list(Wrappers.lambdaQuery(mchPickUp).in(ArrayUtil.isNotEmpty(ids), MchPickUpEntity::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/MchPickUpJoinMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchPickUpJoinMapper.java new file mode 100644 index 000000000..a5fceb363 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchPickUpJoinMapper.java @@ -0,0 +1,10 @@ +package com.bsd.pjcloud.wallet.mapper.mch; + +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.entity.mch.MchPickUpJoinEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MchPickUpJoinMapper extends PjcloudBaseMapper { + +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchPickUpMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchPickUpMapper.java new file mode 100644 index 000000000..1a159435c --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/MchPickUpMapper.java @@ -0,0 +1,17 @@ +package com.bsd.pjcloud.wallet.mapper.mch; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.dto.mch.MchPickUpDto; +import com.bsd.pjcloud.wallet.api.entity.mch.MchPickUpEntity; +import com.bsd.pjcloud.wallet.api.vo.mch.MchPickUpVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface MchPickUpMapper extends PjcloudBaseMapper { + + Page scopPageJoin(Page page, @Param("dto") MchPickUpDto dto, @Param("dataScope") DataScope dataScope); + +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchPickUpService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchPickUpService.java new file mode 100644 index 000000000..e911d8a69 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchPickUpService.java @@ -0,0 +1,29 @@ +package com.bsd.pjcloud.wallet.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.wallet.api.dto.mch.MchPickUpDto; +import com.bsd.pjcloud.wallet.api.entity.mch.MchPickUpEntity; +import com.bsd.pjcloud.wallet.api.vo.mch.MchPickUpVo; + +public interface MchPickUpService extends IService { + + Page scopPageJoin(Page page, MchPickUpDto dto, DataScope dataScope); + + /** + * 通过id查询 + */ + MchPickUpVo join(Long id); + + /** + * 新增商户自提点 + */ + Long create(MchPickUpDto dto); + + /** + * 修改商户自提点 + */ + Long edit(MchPickUpDto 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/MchPickUpServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java new file mode 100644 index 000000000..e03cdac73 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java @@ -0,0 +1,102 @@ +package com.bsd.pjcloud.wallet.service.impl.mch; + +import cn.hutool.core.bean.BeanUtil; +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.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.wallet.api.constant.mch.WalletMchPickUpStatusEnum; +import com.bsd.pjcloud.wallet.api.dto.mch.MchPickUpDto; +import com.bsd.pjcloud.wallet.api.entity.mch.MchPickUpEntity; +import com.bsd.pjcloud.wallet.api.entity.mch.MchPickUpJoinEntity; +import com.bsd.pjcloud.wallet.api.vo.mch.MchPickUpVo; +import com.bsd.pjcloud.wallet.mapper.mch.MchPickUpJoinMapper; +import com.bsd.pjcloud.wallet.mapper.mch.MchPickUpMapper; +import com.bsd.pjcloud.wallet.service.MchPickUpService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * 商户自提点 + */ +@Service +@RequiredArgsConstructor +public class MchPickUpServiceImpl extends ServiceImpl implements MchPickUpService { + + private final MchPickUpJoinMapper pickUpJoinMapper; + + @Override + public Page scopPageJoin(Page page, MchPickUpDto dto, DataScope dataScope) { + return baseMapper.scopPageJoin(page, dto, dataScope); + } + + @Override + public MchPickUpVo join(Long id) { + MchPickUpEntity detail = baseMapper.selectById(id); + if (ObjectUtil.isEmpty(detail)) return null; + MchPickUpVo result = BeanUtil.toBean(detail, MchPickUpVo.class); + // 查询合作商户 + List joinList = pickUpJoinMapper.selectList(new LambdaQueryWrapper() + .eq(MchPickUpJoinEntity::getMchPickUpId, detail.getId()) + ); + if (ObjectUtil.isNotEmpty(joinList)) { + result.setMchIds(joinList.stream().map(MchPickUpJoinEntity::getMchId).toList()); + } + return result; + } + + /** + * 新增商户自提点 + */ + @Override + public Long create(MchPickUpDto dto) { + MchPickUpEntity saveObj = BeanUtil.toBean(dto, MchPickUpEntity.class); + if (ObjectUtil.isEmpty(saveObj.getStatus())) { + saveObj.setStatus(WalletMchPickUpStatusEnum.COOPERATION_ERROR.getCode()); + } + baseMapper.insert(saveObj); + getSelf().generatePickUpJoin(dto.getId(), dto.getMchIds()); + return saveObj.getId(); + } + + /** + * 修改商户自提点 + */ + @Override + public Long edit(MchPickUpDto dto) { + MchPickUpEntity updateObj = BeanUtil.toBean(dto, MchPickUpEntity.class); + baseMapper.updateById(updateObj); + getSelf().generatePickUpJoin(dto.getId(), dto.getMchIds()); + return updateObj.getId(); + } + + /** + * 生成商户自提点关联关系 + */ + @Transactional(rollbackFor = Exception.class) + public void generatePickUpJoin(Long pickUpId, List mchIds) { + if (ObjectUtil.isEmpty(pickUpId) || ObjectUtil.isEmpty(mchIds)) return; + // 删除关系 + pickUpJoinMapper.delete(new LambdaQueryWrapper().eq(MchPickUpJoinEntity::getMchPickUpId, pickUpId)); + // 生成关系 + List insertObj = new ArrayList<>(); + for (Long mchId : mchIds) { + MchPickUpJoinEntity joinObj = new MchPickUpJoinEntity(); + joinObj.setMchId(mchId); + joinObj.setMchPickUpId(pickUpId); + insertObj.add(joinObj); + } + pickUpJoinMapper.insert(insertObj); + } + + private MchPickUpServiceImpl getSelf() { + return SpringUtil.getBean(getClass()); + } + +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpJoinMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpJoinMapper.xml new file mode 100644 index 000000000..a8ce489e7 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpJoinMapper.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpMapper.xml new file mode 100644 index 000000000..a62194152 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpMapper.xml @@ -0,0 +1,44 @@ + + + + + + select a.id, + a.name, + a.logo, + a.introduction, + a.phone, + a.status, + a.latitude, + a.longitude, + a.detail_address, + a.business_hours_json, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.del_flag, + a.tenant_id + + + + a.del_flag = 0 + + and a.name LIKE CONCAT('%', #{dto.name}, '%') + + + and a.phone LIKE CONCAT('%', #{dto.phone}, '%') + + + and a.status = #{dto.status} + + + + + \ No newline at end of file From 54e80013d49967539955d3a0b10f3779f531322a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 17 Oct 2025 12:17:48 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=E5=90=84=E5=95=86=E6=88=B7=E8=B4=AD?= =?UTF-8?q?=E4=B9=B0=E6=AC=A1=E6=95=B0=E8=B6=8B=E5=8A=BF=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud/hard/service/impl/panel/PanelShopServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelShopServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelShopServiceImpl.java index bdb4f68a6..494ed2402 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelShopServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelShopServiceImpl.java @@ -62,7 +62,9 @@ public class PanelShopServiceImpl implements PanelShopService { List list = hardOrderMapper.groupByMch(dto); for (PanelPorductVo.ProductTypeItemVo v : result) { List targetMchTotalList = list.stream().filter(item -> ObjectUtil.equals(v.getType(), String.valueOf(item.getMchId()))).toList(); - if (ObjectUtil.isEmpty(targetMchTotalList)) continue; + if (ObjectUtil.isEmpty(targetMchTotalList)) { + targetMchTotalList = new ArrayList<>(); + } // 处理时间 List resultList = BeanUtil.copyToList(dateList, PanelPorductVo.class); for (PanelPorductVo i : resultList) { From 51f22a4df2ebd271c68a1c0562e2cd0a078c24a5 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 20 Oct 2025 16:53:26 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=E8=87=AA=E6=8F=90=E7=82=B9=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/entity/mch/MchPickUpEntity.java | 6 ++++++ .../controller/mch/MchPickUpController.java | 19 +++++++++++++++++++ .../impl/mch/MchPickUpServiceImpl.java | 3 +++ .../resources/mapper/mch/MchPickUpMapper.xml | 2 ++ 4 files changed, 30 insertions(+) diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpEntity.java index cbf374648..063200704 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpEntity.java @@ -82,6 +82,12 @@ public class MchPickUpEntity extends Model { @Schema(description = "营业时间") private String businessHoursJson; + /** + * 排序 + */ + @Schema(description = "排序") + private Long sort; + /** * 创建人 */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchPickUpController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchPickUpController.java index 2b349e2b8..b15b796a3 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchPickUpController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchPickUpController.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.wallet.api.constant.mch.WalletMchPickUpStatusEnum; import com.bsd.pjcloud.wallet.api.dto.mch.MchPickUpDto; import com.bsd.pjcloud.wallet.api.entity.mch.MchPickUpEntity; import com.bsd.pjcloud.wallet.service.MchPickUpService; @@ -35,6 +36,24 @@ public class MchPickUpController { private final MchPickUpService mchPickUpService; + /* ************************************* start app start ************************************* */ + + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("app/page") + public R appPage(@ParameterObject Page page, @ParameterObject MchPickUpDto dto) { + dto.setStatus(WalletMchPickUpStatusEnum.COOPERATION_SUCCESS.getCode()); + return R.ok(mchPickUpService.scopPageJoin(page, dto, null)); + } + + @Operation(summary = "查询详情", description = "查询详情") + @GetMapping("app/detail") + public R appDetail(@RequestParam("id") Long id) { + return R.ok(mchPickUpService.join(id)); + } + + + /* ************************************* end app end ************************************* */ + @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java index e03cdac73..e96fa303e 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java @@ -60,6 +60,9 @@ public class MchPickUpServiceImpl extends ServiceImpl + order by a.sort, a.create_time \ No newline at end of file From 661e24d0cba846b28a94e1cc82dade1e6a4af402 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 20 Oct 2025 17:00:24 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:app=E6=9F=A5=E8=AF=A2=E8=87=AA?= =?UTF-8?q?=E6=8F=90=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bsd/pjcloud/wallet/api/dto/mch/MchPickUpDto.java | 5 +++++ .../wallet/service/impl/mch/MchPickUpServiceImpl.java | 9 +++++++++ .../src/main/resources/mapper/mch/MchPickUpMapper.xml | 6 ++++++ 3 files changed, 20 insertions(+) diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/MchPickUpDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/MchPickUpDto.java index 31fd34c89..fb3f74580 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/MchPickUpDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/MchPickUpDto.java @@ -13,4 +13,9 @@ public class MchPickUpDto extends MchPickUpEntity { */ private List mchIds; + /** + * ids + */ + private List ids; + } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java index e96fa303e..7e145ab19 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java @@ -33,6 +33,15 @@ public class MchPickUpServiceImpl extends ServiceImpl scopPageJoin(Page page, MchPickUpDto dto, DataScope dataScope) { + // 按照商户ids查询 + if (ObjectUtil.isNotEmpty(dto.getMchIds())) { + List joinList = pickUpJoinMapper.selectList(new LambdaQueryWrapper() + .in(MchPickUpJoinEntity::getMchId, dto.getMchIds()) + ); + if (ObjectUtil.isEmpty(joinList)) return new Page<>(); + List machPickUpIds = joinList.stream().map(MchPickUpJoinEntity::getMchPickUpId).toList(); + dto.setIds(machPickUpIds); + } return baseMapper.scopPageJoin(page, dto, dataScope); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpMapper.xml index a08926367..e8ec31c51 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpMapper.xml @@ -33,6 +33,12 @@ and a.status = #{dto.status} + + and a.id in + + #{v} + +