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-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) { 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..fb3f74580 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/MchPickUpDto.java @@ -0,0 +1,21 @@ +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; + + /** + * ids + */ + private List ids; + +} 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..063200704 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchPickUpEntity.java @@ -0,0 +1,146 @@ +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; + + /** + * 排序 + */ + @Schema(description = "排序") + private Long sort; + + /** + * 创建人 + */ + @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..b15b796a3 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchPickUpController.java @@ -0,0 +1,102 @@ +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.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; +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; + + /* ************************************* 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") + @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..7e145ab19 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPickUpServiceImpl.java @@ -0,0 +1,114 @@ +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) { + // 按照商户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); + } + + @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()); + } + if (ObjectUtil.isEmpty(saveObj.getSort())) { + saveObj.setSort(0L); + } + 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..e8ec31c51 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchPickUpMapper.xml @@ -0,0 +1,52 @@ + + + + + + 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.sort, + 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} + + + and a.id in + + #{v} + + + + + + \ No newline at end of file