feat:旷世代码修改

This commit is contained in:
dzc committed 2025-04-10 11:20:40 +08:00
1 parent 7818bea206
commit 6391df9983
45 files changed
+479 -649

No files matched your search

+40 -61
View File
@@ -310,23 +310,46 @@ CREATE TABLE hard_auth
DROP TABLE IF EXISTS hard_spu;
CREATE TABLE hard_spu
(
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
spu_category_id bigint NOT NULL COMMENT '商品分类id',
name varchar(64) NOT NULL COMMENT '商品名',
pic varchar(256) NOT NULL COMMENT '商品图片',
price int NOT NULL COMMENT '单价(分)',
sales_count int DEFAULT 0 NOT NULL COMMENT '销量',
repertory_count int DEFAULT 0 NOT NULL COMMENT '库存',
sort int DEFAULT 0 NOT NULL COMMENT '排序',
status char(1) DEFAULT '0' COMMENT '是否启用',
is_default char(1) DEFAULT '0' COMMENT '是否为标品',
ks_status char(1) DEFAULT NULL COMMENT '旷世审核状态',
ks_status_title varchar(64) DEFAULT NULL COMMENT '旷世审核状态标题',
ks_comments varchar(512) DEFAULT NULL COMMENT '旷世审核状态描述',
hard_id bigint NOT NULL COMMENT '硬件id',
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
spu_category_id bigint NOT NULL COMMENT '商品分类id',
name varchar(64) NOT NULL COMMENT '商品名',
pic varchar(256) NOT NULL COMMENT '商品图片',
price int NOT NULL COMMENT '单价(分)',
sales_count int DEFAULT 0 NOT NULL COMMENT '销量',
repertory_count int DEFAULT 0 NOT NULL COMMENT '库存',
sort int DEFAULT 0 NOT NULL COMMENT '排序',
status char(1) DEFAULT '0' COMMENT '是否启用',
is_default char(1) DEFAULT '0' COMMENT '是否为标品',
specs_taste varchar(128) DEFAULT NULL COMMENT '规格-口味',
specs_capacity varchar(128) DEFAULT NULL COMMENT '规格-容量',
specs_weight varchar(128) DEFAULT NULL COMMENT '规格-重量',
sku_type varchar(32) DEFAULT NULL COMMENT 'sku类型,0:标准库;1:私有库 ',
ks_barcode varchar(32) DEFAULT NULL COMMENT '69码',
ks_has_sub_sku varchar(128) DEFAULT NULL COMMENT '是否为集合SKU',
ks_sub_sku text DEFAULT NULL COMMENT '集合SKU的子SKU信息',
ks_status char(1) DEFAULT NULL COMMENT '旷世审核状态',
ks_status_title varchar(64) DEFAULT NULL COMMENT '旷世审核状态标题',
ks_comments varchar(512) 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 hard_spu_join
-- ----------------------------
DROP TABLE IF EXISTS hard_spu_join;
CREATE TABLE hard_spu_join
(
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
hard_door_id bigint DEFAULT NULL COMMENT '硬件柜子id',
cabinet_no varchar(32) DEFAULT NULL COMMENT '货柜编号',
spu_id bigint DEFAULT NULL COMMENT '商品id',
hard_door_number int DEFAULT NULL COMMENT '商品放置层数',
mch_id bigint NOT NULL COMMENT '商户id',
mch_dept_id bigint NOT NULL COMMENT '商户部门id',
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 '修改人',
@@ -334,51 +357,7 @@ CREATE TABLE hard_spu
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 hard_ks_sku_join
-- ----------------------------
DROP TABLE IF EXISTS hard_ks_sku_join;
CREATE TABLE hard_ks_sku_join
(
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
ks_sku_id varchar(32) DEFAULT NULL COMMENT '该字段为超级收银员平台的商品ID',
hard_door_id varchar(32) DEFAULT NULL COMMENT '硬件柜子id',
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 hard_ks_sku
-- ----------------------------
DROP TABLE IF EXISTS hard_ks_sku;
CREATE TABLE hard_ks_sku
(
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
ks_sku_id varchar(32) DEFAULT NULL COMMENT '该字段为超级收银员平台的商品ID',
barcode varchar(32) DEFAULT NULL COMMENT '69码',
sku_name varchar(64) DEFAULT NULL COMMENT '商品名称',
sku_id varchar(32) DEFAULT NULL COMMENT '业务方sku_id',
cover varchar(256) DEFAULT NULL COMMENT '商品主图缩略图url,尺寸300*300px',
sku_type varchar(32) DEFAULT NULL COMMENT 'sku类型:0:标准库 1:私有库 ',
specs varchar(512) DEFAULT NULL COMMENT '该字段为SKU所对应的规格,包含口味、容量、重量,taste表示口味,capacity表示容量,单位:ml,weight表示重量,单位:g',
has_sub_sku varchar(32) DEFAULT NULL COMMENT '是否为集合SKU',
sub_sku text DEFAULT NULL COMMENT '集合SKU的子SKU信息',
check_status varchar(32) DEFAULT NULL COMMENT 'sku审核状态',
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 ='旷世硬件商品';
) ENGINE = InnoDB COMMENT ='硬件商品绑定';
-- ----------------------------
-- Table structure for hard_spu_category
@@ -0,0 +1,24 @@
package com.bsd.pjcloud.hard.api.dto.spu;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class HardChangeVolume {
@NotNull(message = "设备id不能为空")
private Long hardId;
/**
* 系统音量
*/
@NotNull(message = "系统音量不能为空")
private Integer systemVolume;
/**
* 媒体音量
*/
@NotNull(message = "媒体音量不能为空")
private Integer mediaVolume;
}
@@ -1,9 +0,0 @@
package com.bsd.pjcloud.hard.api.dto.spu;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuEntity;
import lombok.Data;
@Data
public class HardKsSkuDto extends HardKsSkuEntity {
}
@@ -1,8 +0,0 @@
package com.bsd.pjcloud.hard.api.dto.spu;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuJoinEntity;
import lombok.Data;
@Data
public class HardKsSkuJoinDto extends HardKsSkuJoinEntity {
}
@@ -1,13 +1,22 @@
package com.bsd.pjcloud.hard.api.dto.spu;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class HardSpuDto extends HardSpuEntity {
private List<Long> spuIdList;
private LocalDateTime[] createTimeList;
}
@@ -0,0 +1,8 @@
package com.bsd.pjcloud.hard.api.dto.spu;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuJoinEntity;
import lombok.Data;
@Data
public class HardSpuJoinDto extends HardSpuJoinEntity {
}
@@ -1,130 +0,0 @@
package com.bsd.pjcloud.hard.api.entity.spu;
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("hard_ks_sku")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "商品")
public class HardKsSkuEntity extends Model<HardKsSkuEntity> {
/**
* 编号
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description="编号")
private Long id;
/**
* 该字段为超级收银员平台的商品ID
*/
@Schema(description="该字段为超级收银员平台的商品ID")
private String ksSkuId;
/**
* 69码
*/
@Schema(description="69码")
private String barcode;
/**
* 商品名称
*/
@Schema(description="商品名称")
private String skuName;
/**
* 业务方sku_id
*/
@Schema(description="业务方sku_id")
private String skuId;
/**
* 商品主图缩略图url,尺寸300*300px
*/
@Schema(description="商品主图缩略图url,尺寸300*300px")
private String cover;
/**
* sku类型:0:标准库 1:私有库
*/
@Schema(description="sku类型:0:标准库 1:私有库")
private String skuType;
/**
* 该字段为SKU所对应的规格,包含口味、容量、重量,taste表示口味,capacity表示容量,单位:ml,weight表示重量,单位:g
*/
@Schema(description="该字段为SKU所对应的规格,包含口味、容量、重量,taste表示口味,capacity表示容量,单位:ml,weight表示重量,单位:g")
private String specs;
/**
* 是否为集合SKU
*/
@Schema(description="是否为集合SKU")
private String hasSubSku;
/**
* 集合SKU的子SKU信息
*/
@Schema(description="集合SKU的子SKU信息")
private String subSku;
/**
* sku审核状态
*/
@Schema(description="sku审核状态")
private String checkStatus;
/**
* 创建人
*/
@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;
}
@@ -1,83 +0,0 @@
package com.bsd.pjcloud.hard.api.entity.spu;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.bsd.pjcloud.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 旷世商品绑定
*/
@Data
@TenantTable
@TableName("hard_ks_sku_join")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "旷世商品绑定")
public class HardKsSkuJoinEntity extends Model<HardKsSkuJoinEntity> {
/**
* 编号
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description="编号")
private Long id;
/**
* 该字段为超级收银员平台的商品ID
*/
@Schema(description="该字段为超级收银员平台的商品ID")
private String ksSkuId;
/**
* 硬件柜子id
*/
@Schema(description="硬件柜子id")
private String hardDoorId;
/**
* 创建人
*/
@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;
}
@@ -39,18 +39,6 @@ public class HardSpuCategoryEntity extends Model<HardSpuCategoryEntity> {
@Schema(description = "排序")
private Integer sort;
/**
* 商户id
*/
@Schema(description = "商户id")
private Long mchId;
/**
* 商户部门id
*/
@Schema(description = "商户部门id")
private Long mchDeptId;
/**
* 创建人
*/
@@ -2,7 +2,11 @@ package com.bsd.pjcloud.hard.api.entity.spu;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.bsd.pjcloud.hard.api.constant.spu.HardKsSkuTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.bsd.pjcloud.common.core.util.TenantTable;
@@ -31,12 +35,14 @@ public class HardSpuEntity extends Model<HardSpuEntity> {
* 商品分类id
*/
@Schema(description = "商品分类id")
@NotNull(message = "分类不能为空")
private Long spuCategoryId;
/**
* 商品名
*/
@Schema(description = "商品名")
@NotEmpty(message = "商品名不能为空")
private String name;
/**
@@ -49,6 +55,8 @@ public class HardSpuEntity extends Model<HardSpuEntity> {
* 单价(分)
*/
@Schema(description = "单价(分)")
@NotNull(message = "单价不能为空")
@Min(value = 1, message = "单价不能小于0")
private Integer price;
/**
@@ -81,6 +89,49 @@ public class HardSpuEntity extends Model<HardSpuEntity> {
@Schema(description = "是否为标品")
private String isDefault;
/**
* 规格-口味
*/
@Schema(description = "规格-口味")
private String specsTaste;
/**
* 规格-口味
*/
@Schema(description = "规格-容量")
private String specsCapacity;
/**
* 规格-口味
*/
@Schema(description = "规格-重量")
private String specsWeight;
/**
* sku类型,0:标准库;1:私有库
* @see HardKsSkuTypeEnum
*/
@Schema(description = "sku类型,0:标准库;1:私有库")
private String skuType;
/**
* 69码
*/
@Schema(description = "69码")
private String ksBarcode;
/**
* 是否为集合SKU
*/
@Schema(description = "'是否为集合SKU")
private String ksHasSubSku;
/**
* 是否为集合SKU
*/
@Schema(description = "是否为集合SKU")
private String ksSubSku;
/**
* 旷世审核状态
*/
@@ -99,30 +150,6 @@ public class HardSpuEntity extends Model<HardSpuEntity> {
@Schema(description = "旷世审核状态描述")
private String ksComments;
/**
* 设备id
*/
@Schema(description = "设备id")
private Long hardId;
/**
* 商品放置层数
*/
@Schema(description = "商品放置层数")
private Long hardDoorNumber;
/**
* 商户id
*/
@Schema(description = "商户id")
private Long mchId;
/**
* 商户部门id
*/
@Schema(description = "商户部门id")
private Long mchDeptId;
/**
* 创建人
*/
@@ -0,0 +1,95 @@
package com.bsd.pjcloud.hard.api.entity.spu;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.bsd.pjcloud.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 柜子商品绑定
*/
@Data
@TenantTable
@TableName("hard_spu_join")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "旷世商品绑定")
public class HardSpuJoinEntity extends Model<HardSpuJoinEntity> {
/**
* 编号
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "编号")
private Long id;
/**
* 该字段为超级收银员平台的商品ID
*/
@Schema(description = "该字段为超级收银员平台的商品ID")
private Long spuId;
/**
* 柜门编号
*/
@Schema(description = "柜门编号")
private String cabinetNo;
/**
* 硬件柜子id
*/
@Schema(description = "硬件柜子id")
private Long hardDoorId;
/**
* 放置层数
*/
@Schema(description = "放置层数")
private Integer hardDoorNumber;
/**
* 创建人
*/
@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;
}
@@ -1,9 +0,0 @@
package com.bsd.pjcloud.hard.api.vo.spu;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuJoinEntity;
import lombok.Data;
@Data
public class HardKsSkuJoinVo extends HardKsSkuJoinEntity {
}
@@ -1,9 +0,0 @@
package com.bsd.pjcloud.hard.api.vo.spu;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuEntity;
import lombok.Data;
@Data
public class HardKsSkuVo extends HardKsSkuEntity {
}
@@ -0,0 +1,14 @@
package com.bsd.pjcloud.hard.api.vo.spu;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuJoinEntity;
import lombok.Data;
@Data
public class HardSpuJoinVo extends HardSpuJoinEntity {
/**
* 商品相关
*/
private HardSpuVo spuDetail;
}
@@ -25,7 +25,6 @@ public class HardSpuRepertoryVo extends HardSpuRepertoryEntity implements BaseMc
*/
private String spuCategoryName;
/**
* 商户相关
*/
@@ -6,26 +6,10 @@ import com.bsd.pjcloud.wallet.api.vo.base.BaseMchInterface;
import lombok.Data;
@Data
public class HardSpuVo extends HardSpuEntity implements BaseMchInterface, BaseHardInterface {
public class HardSpuVo extends HardSpuEntity {
/**
* 分类相关
*/
private String categoryName;
/**
* 商户相关
*/
private Long merchantId;
private String merchantName;
private String logoPic;
/**
* 设备相关
*/
private String hardName;
private String hardType;
}
@@ -47,7 +47,7 @@ public class HardApiController {
@GetMapping("/get")
@Operation(summary = "获取硬件配置信息")
public R<HardManagerVo> get(@RequestParam Long id) {
return R.ok(hardManagerService.getById(id));
return R.ok(hardManagerService.getByHardId(id));
}
@GetMapping("/get-by-order-id")
@@ -10,9 +10,11 @@ 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.hard.api.dto.manager.HardDoorManagerDto;
import com.bsd.pjcloud.hard.api.dto.spu.HardChangeVolume;
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
import com.bsd.pjcloud.hard.service.HardDoorManagerService;
import com.bsd.pjcloud.thirdparty.dto.door.DoorVolumeDto;
import org.springframework.security.access.prepost.PreAuthorize;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
@@ -21,6 +23,7 @@ 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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -39,7 +42,6 @@ public class HardDoorManagerController {
@Operation(summary = "绑定设备", description = "绑定设备")
@PostMapping("/bind")
@PreAuthorize("@pms.hasPermission('hard_hardDoorManager_add')")
public R bind(@RequestBody HardDoorManagerEntity dto) {
if (ObjectUtil.isEmpty(dto.getImei())) throw new RuntimeException("设备IMEI卡号不能为空");
if (ObjectUtil.isEmpty(dto.getDeviceCode())) throw new RuntimeException("设备内置设备编号不能为空");
@@ -47,6 +49,13 @@ public class HardDoorManagerController {
return R.ok();
}
@Operation(summary = "音量修改", description = "音量修改")
@PostMapping("/change-volume")
public R changeVolume(@Validated @RequestBody HardChangeVolume dto) {
hardDoorManagerService.changeVolume(dto);
return R.ok();
}
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('hard_hardDoorManager_view')")
@@ -64,7 +64,7 @@ public class HardManagerController {
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('hard_hardManager_view')")
public R getById(@PathVariable("id") Long id) {
return R.ok(hardManagerService.getById(id));
return R.ok(hardManagerService.getByHardId(id));
}
@Operation(summary = "新增设备管理", description = "新增设备管理")
@@ -1,81 +0,0 @@
package com.bsd.pjcloud.hard.controller.spu;
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.log.annotation.SysLog;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuEntity;
import com.bsd.pjcloud.hard.service.HardKsSkuService;
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("/hard-ks-sku")
@Tag(description = "hard-ks-sku", name = "商品管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class HardKsSkuController {
private final HardKsSkuService hardKsSkuService;
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('hard_hardKsSku_view')")
public R getHardKsSkuPage(@ParameterObject Page page, @ParameterObject HardKsSkuEntity hardKsSku) {
LambdaQueryWrapper<HardKsSkuEntity> wrapper = Wrappers.lambdaQuery();
return R.ok(hardKsSkuService.page(page, wrapper));
}
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('hard_hardKsSku_view')")
public R getById(@PathVariable("id") Long id) {
return R.ok(hardKsSkuService.getById(id));
}
@Operation(summary = "新增商品", description = "新增商品")
@SysLog("新增商品")
@PostMapping
@PreAuthorize("@pms.hasPermission('hard_hardKsSku_add')")
public R save(@RequestBody HardKsSkuEntity hardKsSku) {
return R.ok(hardKsSkuService.save(hardKsSku));
}
@Operation(summary = "修改商品", description = "修改商品")
@SysLog("修改商品")
@PutMapping
@PreAuthorize("@pms.hasPermission('hard_hardKsSku_edit')")
public R updateById(@RequestBody HardKsSkuEntity hardKsSku) {
return R.ok(hardKsSkuService.updateById(hardKsSku));
}
@Operation(summary = "通过id删除商品", description = "通过id删除商品")
@SysLog("通过id删除商品")
@DeleteMapping
@PreAuthorize("@pms.hasPermission('hard_hardKsSku_del')")
public R removeById(@RequestBody Long[] ids) {
return R.ok(hardKsSkuService.removeBatchByIds(CollUtil.toList(ids)));
}
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('hard_hardKsSku_export')")
public List<HardKsSkuEntity> export(HardKsSkuEntity hardKsSku, Long[] ids) {
return hardKsSkuService.list(Wrappers.lambdaQuery(hardKsSku).in(ArrayUtil.isNotEmpty(ids), HardKsSkuEntity::getId, ids));
}
}
@@ -10,6 +10,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo;
import com.bsd.pjcloud.hard.service.HardSpuService;
import org.springframework.security.access.prepost.PreAuthorize;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
@@ -19,9 +20,11 @@ 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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
@@ -36,6 +39,12 @@ public class HardSpuController {
private final HardSpuService hardSpuService;
@Operation(summary = "根据设备id智能柜编号查询商品", description = "根据设备id智能柜编号查询商品")
@GetMapping("/get-by-cabinet-no")
public R<List<Map<Integer, List<HardSpuJoinVo>>>> getByCabinetNo(@RequestParam Long hardId, @RequestParam String cabinetNo) {
return R.ok(hardSpuService.getByCabinetNo(hardId, cabinetNo));
}
@Operation(summary = "下拉查询", description = "下拉查询")
@GetMapping("/select")
public R select(@ParameterObject Page page, @ParameterObject HardSpuDto dto) {
@@ -70,7 +79,7 @@ public class HardSpuController {
@SysLog("新增硬件商品")
@PostMapping
@PreAuthorize("@pms.hasPermission('hard_hardSpu_add')")
public R save(@RequestBody HardSpuEntity hardSpu) {
public R save(@Validated @RequestBody HardSpuEntity hardSpu) {
return R.ok(hardSpuService.create(hardSpu));
}
@@ -78,7 +87,7 @@ public class HardSpuController {
@SysLog("修改硬件商品")
@PutMapping
@PreAuthorize("@pms.hasPermission('hard_hardSpu_edit')")
public R updateById(@RequestBody HardSpuEntity hardSpu) {
public R updateById(@Validated @RequestBody HardSpuEntity hardSpu) {
return R.ok(hardSpuService.edit(hardSpu));
}
@@ -1,11 +0,0 @@
package com.bsd.pjcloud.hard.mapper.spu;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuJoinEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface HardKsSkuJoinMapper extends PjcloudBaseMapper<HardKsSkuJoinEntity> {
}
@@ -1,11 +0,0 @@
package com.bsd.pjcloud.hard.mapper.spu;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface HardKsSkuMapper extends PjcloudBaseMapper<HardKsSkuEntity> {
}
@@ -16,8 +16,6 @@ public interface HardSpuCategoryMapper extends PjcloudBaseMapper<HardSpuCategory
default Page<HardSpuCategoryVo> scopPageJoin(Page page, HardSpuCategoryDto dto, DataScope dataScope) {
LambdaQueryWrapper<HardSpuCategoryEntity> wrapper = new LambdaQueryWrapper<HardSpuCategoryEntity>()
.eq(ObjectUtil.isNotEmpty(dto.getMchId()), HardSpuCategoryEntity::getMchId, dto.getMchId())
.eq(ObjectUtil.isNotEmpty(dto.getMchDeptId()), HardSpuCategoryEntity::getMchDeptId, dto.getMchDeptId())
.like(ObjectUtil.isNotEmpty(dto.getName()), HardSpuCategoryEntity::getName, dto.getName())
.orderByDesc(HardSpuCategoryEntity::getSort)
.orderByDesc(HardSpuCategoryEntity::getCreateTime);
@@ -0,0 +1,14 @@
package com.bsd.pjcloud.hard.mapper.spu;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuJoinDto;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuJoinEntity;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface HardSpuJoinMapper extends PjcloudBaseMapper<HardSpuJoinEntity> {
}
@@ -9,9 +9,13 @@ import com.bsd.pjcloud.hard.api.vo.spu.HardSpuVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface HardSpuMapper extends PjcloudBaseMapper<HardSpuEntity> {
Page<HardSpuVo> scopPageJoin(Page page, @Param("dto") HardSpuDto dto, @Param("dataScope") DataScope dataScope);
List<HardSpuVo> scopPageList(@Param("dto") HardSpuDto dto, @Param("dataScope") DataScope dataScope);
}
@@ -4,6 +4,7 @@ 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.hard.api.dto.manager.HardDoorManagerDto;
import com.bsd.pjcloud.hard.api.dto.spu.HardChangeVolume;
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
@@ -20,4 +21,9 @@ public interface HardDoorManagerService extends IService<HardDoorManagerEntity>
* 绑定设备
*/
void bind(HardDoorManagerEntity dto);
/**
* 音量修改
*/
void changeVolume(HardChangeVolume dto);
}
@@ -1,8 +0,0 @@
package com.bsd.pjcloud.hard.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuJoinEntity;
public interface HardKsSkuJoinService extends IService<HardKsSkuJoinEntity> {
}
@@ -1,8 +0,0 @@
package com.bsd.pjcloud.hard.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuEntity;
public interface HardKsSkuService extends IService<HardKsSkuEntity> {
}
@@ -23,7 +23,7 @@ public interface HardManagerService extends IService<HardManagerEntity> {
HardManagerVo bind(HardBindDto dto);
HardManagerVo getById(Long hardId);
HardManagerVo getByHardId(Long hardId);
/**
* 判断当前用户是否有食堂或者超市管理元权限
@@ -0,0 +1,13 @@
package com.bsd.pjcloud.hard.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuJoinDto;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuJoinEntity;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo;
import java.util.List;
public interface HardSpuJoinService extends IService<HardSpuJoinEntity> {
List<HardSpuJoinVo> scopeList(HardSpuJoinDto dto);
}
@@ -5,9 +5,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuVo;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public interface HardSpuService extends IService<HardSpuEntity> {
@@ -31,4 +34,8 @@ public interface HardSpuService extends IService<HardSpuEntity> {
*/
void delByIds(ArrayList<Long> list);
/**
* 根据 hardwareId 和 cabinetNo 查询商品
*/
List<Map<Integer, List<HardSpuJoinVo>>> getByCabinetNo(Long hardId, String cabinetNo);
}
@@ -210,7 +210,7 @@ public class HardInvoiceServiceImpl extends ServiceImpl<HardInvoiceMapper, HardI
public HardInvoiceVo generateInvoice(Long orderId) {
HardOrderEntity order = orderService.getById(orderId);
if (ObjectUtil.isEmpty(order)) throw new RuntimeException("设备订单不存在");
HardManagerEntity hardManager = hardManagerService.getById(order.getHardId());
HardManagerEntity hardManager = hardManagerService.getByHardId(order.getHardId());
if (ObjectUtil.isEmpty(order)) throw new RuntimeException("设备不存在");
String image = generateInvoice(order);
if (ObjectUtil.isEmpty(image)) return null;
@@ -249,7 +249,7 @@ public class HardInvoiceServiceImpl extends ServiceImpl<HardInvoiceMapper, HardI
MchManageVo mch = remoteMchService.getById(order.getMerchantId()).getData();
if (ObjectUtil.isEmpty(mch)) throw new RuntimeException("设备不存在");
// 查询设备
HardManagerVo hard = hardManagerService.getById(order.getHardId());
HardManagerVo hard = hardManagerService.getByHardId(order.getHardId());
if (ObjectUtil.isEmpty(hard)) throw new RuntimeException("设备不存在");
String image = generateInvoice(order);
HardInvoiceEntity insertObj = HardInvoiceEntity.builder().deptId(order.getDeptId()).hardId(hard.getId()).orderId(order.getId()).pic(image).status(HardPrintStatusEnum.GENERATE.getType()).build();
@@ -5,6 +5,7 @@ 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.hard.api.dto.manager.HardDoorManagerDto;
import com.bsd.pjcloud.hard.api.dto.spu.HardChangeVolume;
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
import com.bsd.pjcloud.hard.mapper.manager.HardDoorManagerMapper;
@@ -12,8 +13,11 @@ import com.bsd.pjcloud.hard.service.HardDoorManagerService;
import com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdDoorApiService;
import com.bsd.pjcloud.thirdparty.dto.door.DoorBindDto;
import com.bsd.pjcloud.thirdparty.dto.door.DoorRegisterDto;
import com.bsd.pjcloud.thirdparty.dto.door.DoorVideoDto;
import com.bsd.pjcloud.thirdparty.dto.door.DoorVolumeDto;
import com.bsd.pjcloud.thirdparty.vo.door.DoorBindVo;
import com.bsd.pjcloud.thirdparty.vo.door.DoorRegisterVo;
import com.bsd.pjcloud.thirdparty.vo.door.DoorVolumeVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -82,4 +86,24 @@ public class HardDoorManagerServiceImpl extends ServiceImpl<HardDoorManagerMappe
throw new RuntimeException(registerVo.getMessage());
}
}
/**
* 音量修改
*/
@Override
public void changeVolume(HardChangeVolume dto) {
// 查询设备
HardDoorManagerVo hardDoorDetail = getByHardId(dto.getHardId());
if (ObjectUtil.isEmpty(hardDoorDetail)) {
throw new RuntimeException("设备不存在");
}
DoorVolumeDto doorVolumeDto = new DoorVolumeDto();
doorVolumeDto.setSystemVolume(dto.getSystemVolume());
doorVolumeDto.setMediaVolume(dto.getMediaVolume());
doorVolumeDto.setDeviceCode(hardDoorDetail.getDeviceCode());
DoorVolumeVo volumeVo = thirdDoorApiService.volume(doorVolumeDto).getData();
if (!volumeVo.isSuccess()) {
throw new RuntimeException(volumeVo.getMessage());
}
}
}
@@ -16,13 +16,11 @@ import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.CollectionUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.hard.api.constant.HardTypeEnum;
import com.bsd.pjcloud.hard.api.dto.HardGroupDto;
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
import com.bsd.pjcloud.hard.api.dto.hard.CurrentUserHardTypeInfoDto;
import com.bsd.pjcloud.hard.api.dto.hard.HardBindDto;
import com.bsd.pjcloud.hard.api.entity.HardGroupEntity;
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
import com.bsd.pjcloud.hard.api.utils.HardUtil;
import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo;
@@ -199,11 +197,11 @@ public class HardManagerServiceImpl extends ServiceImpl<HardManagerMapper, HardM
}
HardManagerEntity updateObj = HardManagerEntity.builder().id(detail.getId()).uniqueCode(dto.getUniqueCode()).build();
baseMapper.updateById(updateObj);
return getById(dto.getId());
return getByHardId(dto.getId());
}
@Override
public HardManagerVo getById(Long hardId) {
public HardManagerVo getByHardId(Long hardId) {
HardManagerEntity hard = baseMapper.selectById(hardId);
HardManagerVo vo = BeanUtils.toBean(hard, HardManagerVo.class);
MchManageVo mch = mchService.getById(hard.getMerchantId()).getData();
@@ -634,7 +634,7 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
if (ObjectUtil.isEmpty(mch.getData())) {
throw new RuntimeException("商户不存在");
}
HardManagerEntity hard = hardManagerService.getById(dto.getHardwareId());
HardManagerEntity hard = hardManagerService.getByHardId(dto.getHardwareId());
if (ObjectUtil.isEmpty(hard)) {
throw new RuntimeException("设备不存在");
}
@@ -1,21 +0,0 @@
package com.bsd.pjcloud.hard.service.impl.spu;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuJoinEntity;
import com.bsd.pjcloud.hard.mapper.spu.HardKsSkuJoinMapper;
import com.bsd.pjcloud.hard.service.HardKsSkuJoinService;
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 HardKsSkuJoinServiceImpl extends ServiceImpl<HardKsSkuJoinMapper, HardKsSkuJoinEntity> implements HardKsSkuJoinService {
}
@@ -1,21 +0,0 @@
package com.bsd.pjcloud.hard.service.impl.spu;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuEntity;
import com.bsd.pjcloud.hard.mapper.spu.HardKsSkuMapper;
import com.bsd.pjcloud.hard.service.HardKsSkuService;
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 HardKsSkuServiceImpl extends ServiceImpl<HardKsSkuMapper, HardKsSkuEntity> implements HardKsSkuService {
}
@@ -42,13 +42,6 @@ public class HardSpuCategoryServiceImpl extends ServiceImpl<HardSpuCategoryMappe
*/
@Override
public Page<HardSpuCategoryVo> scopPageJoin(Page page, HardSpuCategoryDto dto, DataScope dataScope) {
// 设备id
if (ObjectUtil.isNotEmpty(dto.getHardId())) {
HardManagerEntity hardDetail = hardManagerService.getById(dto.getHardId());
if (ObjectUtil.isNotEmpty(hardDetail)) {
dto.setMchId(hardDetail.getMerchantId());
}
}
Page<HardSpuCategoryVo> pageList = baseMapper.scopPageJoin(page, dto, dataScope);
disposeList(pageList.getRecords(), dto);
return pageList;
@@ -92,7 +85,6 @@ public class HardSpuCategoryServiceImpl extends ServiceImpl<HardSpuCategoryMappe
*/
private boolean existName(HardSpuCategoryEntity dto) {
Long count = baseMapper.selectCount(new LambdaQueryWrapper<HardSpuCategoryEntity>()
.eq(ObjectUtil.isNotEmpty(dto.getMchId()), HardSpuCategoryEntity::getMchId, dto.getMchId())
.eq(ObjectUtil.isNotEmpty(dto.getName()), HardSpuCategoryEntity::getName, dto.getName())
.ne(ObjectUtil.isNotEmpty(dto.getId()), HardSpuCategoryEntity::getId, dto.getId())
);
@@ -104,14 +96,5 @@ public class HardSpuCategoryServiceImpl extends ServiceImpl<HardSpuCategoryMappe
private void disposeList(List<HardSpuCategoryVo> list, HardSpuCategoryDto dto) {
if (ObjectUtil.isEmpty(list)) return;
// 商户
List<Long> mchIds = list.stream().map(HardSpuCategoryVo::getMchId).filter(ObjectUtil::isNotEmpty).distinct().toList();
if (ObjectUtil.isNotEmpty(mchIds)) {
list.forEach(v -> v.setMerchantId(v.getMchId()));
List<MchManageVo> mchList = remoteMchService.getByIds(mchIds).getData();
if (ObjectUtil.isNotEmpty(mchList)) {
WalletDataUtil.convertMchList(list, CollectionUtils.convertMap(mchList, MchManageVo::getId));
}
}
}
}
@@ -0,0 +1,52 @@
package com.bsd.pjcloud.hard.service.impl.spu;
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.common.core.util.BeanUtils;
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto;
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuJoinDto;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuJoinEntity;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuVo;
import com.bsd.pjcloud.hard.mapper.spu.HardSpuJoinMapper;
import com.bsd.pjcloud.hard.mapper.spu.HardSpuMapper;
import com.bsd.pjcloud.hard.service.HardSpuJoinService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.List;
/**
* 旷世商品绑定
*/
@Validated
@Slf4j
@RequiredArgsConstructor
@Service
public class HardSpuJoinServiceImpl extends ServiceImpl<HardSpuJoinMapper, HardSpuJoinEntity> implements HardSpuJoinService {
private final HardSpuMapper hardSpuMapper;
@Override
public List<HardSpuJoinVo> scopeList(HardSpuJoinDto dto) {
List<HardSpuJoinEntity> list = baseMapper.selectList(new LambdaQueryWrapper<HardSpuJoinEntity>()
.eq(HardSpuJoinEntity::getHardDoorNumber, dto.getHardDoorNumber())
.eq(HardSpuJoinEntity::getHardDoorId, dto.getHardDoorId())
.eq(HardSpuJoinEntity::getCabinetNo, dto.getCabinetNo())
);
if (ObjectUtil.isEmpty(list)) return List.of();
List<HardSpuJoinVo> joinList = BeanUtils.toBean(list, HardSpuJoinVo.class);
List<Long> spuIds = joinList.stream().map(HardSpuJoinVo::getSpuId).toList();
// 查询商品
if (ObjectUtil.isNotEmpty(spuIds)) {
List<HardSpuVo> spuList = hardSpuMapper.scopPageList(HardSpuDto.builder().build(), null);
for (HardSpuJoinVo v : joinList) {
spuList.stream().filter(i -> ObjectUtil.equals(i.getId(), v.getSpuId())).findFirst().ifPresent(v::setSpuDetail);
}
}
return List.of();
}
}
@@ -75,7 +75,7 @@ public class HardSpuRepertoryServiceImpl extends ServiceImpl<HardSpuRepertoryMap
}
entity.setBeforeCount(beforeCount);
entity.setUserId(user.getId());
entity.setHardId(spuDetail.getHardId());
entity.setHardId(entity.getHardId());
entity.setBizType(HardSpuRepertoryTypeEnum.HANDLER.getType());
baseMapper.insert(entity);
// 更新商品库存
@@ -4,29 +4,29 @@ import cn.hutool.core.util.ObjectUtil;
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.core.util.CollectionUtils;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
import com.bsd.pjcloud.hard.api.constant.spu.HardKsSkuTypeEnum;
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto;
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuJoinDto;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity;
import com.bsd.pjcloud.hard.api.utils.HardUtil;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuJoinEntity;
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuVo;
import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper;
import com.bsd.pjcloud.hard.mapper.spu.HardSpuJoinMapper;
import com.bsd.pjcloud.hard.mapper.spu.HardSpuMapper;
import com.bsd.pjcloud.hard.service.HardDoorManagerService;
import com.bsd.pjcloud.hard.service.HardManagerService;
import com.bsd.pjcloud.hard.service.HardSpuJoinService;
import com.bsd.pjcloud.hard.service.HardSpuService;
import com.bsd.pjcloud.wallet.api.feign.RemoteMchService;
import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil;
import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
/**
* 硬件商品
@@ -38,10 +38,11 @@ import java.util.List;
public class HardSpuServiceImpl extends ServiceImpl<HardSpuMapper, HardSpuEntity> implements HardSpuService {
private final HardManagerService hardManagerService;
private final HardDoorManagerService hardDoorManagerService;
private final HardSpuJoinService hardSpuJoinService;
private final RemoteMchService remoteMchService;
private final HardManagerMapper hardManagerMapper;
/**
* 分页查询
@@ -61,19 +62,10 @@ public class HardSpuServiceImpl extends ServiceImpl<HardSpuMapper, HardSpuEntity
if (existName(entity)) {
throw new RuntimeException("商品名不能重复");
}
// 查询设备
HardManagerVo hardManager = hardManagerService.getById(entity.getHardId());
if (ObjectUtil.isEmpty(hardManager)) {
throw new RuntimeException("设备不存在");
}
// 查询商户
MchManageVo mchDetail = remoteMchService.getById(hardManager.getMerchantId()).getData();
if (ObjectUtil.isEmpty(mchDetail)) {
throw new RuntimeException("商户不存在");
}
entity.setMchId(mchDetail.getId());
entity.setMchDeptId(mchDetail.getDeptId());
entity.setSkuType(HardKsSkuTypeEnum.SELF.getType());
baseMapper.insert(entity);
// 发起审核
return entity.getId();
}
@@ -85,18 +77,6 @@ public class HardSpuServiceImpl extends ServiceImpl<HardSpuMapper, HardSpuEntity
if (existName(entity)) {
throw new RuntimeException("商品名不能重复");
}
// 查询设备
HardManagerVo hardManager = hardManagerService.getById(entity.getHardId());
if (ObjectUtil.isEmpty(hardManager)) {
throw new RuntimeException("设备不存在");
}
// 查询商户
MchManageVo mchDetail = remoteMchService.getById(hardManager.getMerchantId()).getData();
if (ObjectUtil.isEmpty(mchDetail)) {
throw new RuntimeException("商户不存在");
}
entity.setMchId(mchDetail.getId());
entity.setMchDeptId(mchDetail.getDeptId());
baseMapper.updateById(entity);
return entity.getId();
}
@@ -110,6 +90,41 @@ public class HardSpuServiceImpl extends ServiceImpl<HardSpuMapper, HardSpuEntity
baseMapper.deleteByIds(list);
}
/**
* 根据 hardwareId 和 cabinetNo 查询商品
*/
@Override
public List<Map<Integer, List<HardSpuJoinVo>>> getByCabinetNo(Long hardId, String cabinetNo) {
List<Map<Integer, List<HardSpuJoinVo>>> result = new LinkedList<>();
// 查询设备
HardDoorManagerVo doorManagerVo = hardDoorManagerService.getByHardId(hardId);
if (ObjectUtil.isEmpty(doorManagerVo)) return result;
int doorCount = 6;
int storeySpuMaxCount = 10;
if (ObjectUtil.isNotEmpty(doorCount)) {
doorCount = doorManagerVo.getDoorCount().intValue();
}
for (int i = 1; i <= doorCount; i++) {
HardSpuJoinDto spuJoinDto = new HardSpuJoinDto();
spuJoinDto.setHardDoorNumber(i);
spuJoinDto.setHardDoorId(hardId);
spuJoinDto.setCabinetNo(cabinetNo);
List<HardSpuJoinVo> storeySpu = hardSpuJoinService.scopeList(spuJoinDto);
int storeySpuSize = storeySpu.size();
int emptyStoreySpuSize = storeySpuMaxCount - storeySpuSize;
for (int j = 0; j < emptyStoreySpuSize; j++) {
HardSpuJoinVo hardSpuJoinEntity = new HardSpuJoinVo();
hardSpuJoinEntity.setHardDoorId(hardId);
hardSpuJoinEntity.setHardDoorNumber(i);
storeySpu.add(hardSpuJoinEntity);
}
Map<Integer, List<HardSpuJoinVo>> addMap = new HashMap<>();
addMap.put(i, storeySpu);
result.add(addMap);
}
return List.of();
}
/**
* 商品是否重复
*/
@@ -126,25 +141,6 @@ public class HardSpuServiceImpl extends ServiceImpl<HardSpuMapper, HardSpuEntity
private void disposeList(List<HardSpuVo> list, HardSpuDto dto) {
if (ObjectUtil.isEmpty(list)) return;
// 商户
List<Long> mchIds = list.stream().map(HardSpuVo::getMchId).filter(ObjectUtil::isNotEmpty).distinct().toList();
if (ObjectUtil.isNotEmpty(mchIds)) {
list.forEach(v -> v.setMerchantId(v.getMchId()));
List<MchManageVo> mchList = remoteMchService.getByIds(mchIds).getData();
if (ObjectUtil.isNotEmpty(mchList)) {
WalletDataUtil.convertMchList(list, CollectionUtils.convertMap(mchList, MchManageVo::getId));
}
}
// 设备
List<Long> hardIds = list.stream().map(HardSpuVo::getHardId).filter(ObjectUtil::isNotEmpty).distinct().toList();
if (ObjectUtil.isNotEmpty(hardIds)) {
HardManagerDto hardManagerDto = new HardManagerDto();
hardManagerDto.setIds(hardIds);
List<HardManagerEntity> hardList = hardManagerMapper.list(hardManagerDto);
if (ObjectUtil.isNotEmpty(hardList)) {
HardUtil.convertHardList(list, CollectionUtils.convertMap(hardList, HardManagerEntity::getId));
}
}
}
}
@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bsd.pjcloud.hard.mapper.spu.HardKsSkuMapper">
<resultMap id="hardKsSkuMap" type="com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuEntity">
<id property="id" column="id"/>
<result property="ksSkuId" column="ks_sku_id"/>
<result property="barcode" column="barcode"/>
<result property="skuName" column="sku_name"/>
<result property="skuId" column="sku_id"/>
<result property="cover" column="cover"/>
<result property="skuType" column="sku_type"/>
<result property="specs" column="specs"/>
<result property="hasSubSku" column="has_sub_sku"/>
<result property="subSku" column="sub_sku"/>
<result property="checkStatus" column="check_status"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
</resultMap>
</mapper>
@@ -1,11 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bsd.pjcloud.hard.mapper.spu.HardKsSkuJoinMapper">
<resultMap id="hardKsSkuJoinMap" type="com.bsd.pjcloud.hard.api.entity.spu.HardKsSkuJoinEntity">
<mapper namespace="com.bsd.pjcloud.hard.mapper.spu.HardSpuJoinMapper">
<resultMap id="hardKsSkuJoinMap" type="com.bsd.pjcloud.hard.api.entity.spu.HardSpuJoinEntity">
<id property="id" column="id"/>
<result property="ksSkuId" column="ks_sku_id"/>
<result property="spuId" column="ks_sku_id"/>
<result property="hardDoorId" column="hard_door_id"/>
<result property="hardDoorNumber" column="hard_door_number"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
@@ -13,12 +13,16 @@
<result property="sort" column="sort"/>
<result property="status" column="status"/>
<result property="isDefault" column="is_default"/>
<result property="specsTaste" column="specs_taste"/>
<result property="specsCapacity" column="specs_capacity"/>
<result property="specsWeight" column="specs_weight"/>
<result property="skuType" column="sku_type"/>
<result property="ksBarcode" column="ks_barcode"/>
<result property="ksHasSubSku" column="ks_has_sub_sku"/>
<result property="ksSubSku" column="ks_sub_sku"/>
<result property="ksStatus" column="ks_status"/>
<result property="ksStatusTitle" column="ks_status_title"/>
<result property="ksComments" column="ks_comments"/>
<result property="hardDoorNumber" column="hard_door_number"/>
<result property="mchId" column="mch_id"/>
<result property="mchDeptId" column="mch_dept_id"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
@@ -38,13 +42,16 @@
a.sort,
a.status,
a.is_default,
a.specs_taste,
a.specs_capacity,
a.specs_weight,
a.sku_type,
a.ks_barcode,
a.ks_has_sub_sku,
a.ks_sub_sku,
a.ks_status,
a.ks_status_title,
a.ks_comments,
a.hard_id,
a.hard_door_number,
a.mch_id,
a.mch_dept_id,
a.create_by,
a.create_time,
a.update_by,
@@ -58,15 +65,15 @@
<if test="dto.name != null ">
and a.name like concat('%', #{dto.name}, '%')
</if>
<if test="dto.skuType != null ">
and a.sku_type = #{dto.skuType}
</if>
<if test="dto.spuCategoryId != null ">
and a.spu_category_id = #{dto.spuCategoryId}
</if>
<if test="dto.spuCategoryId != null ">
and a.spu_category_id = #{dto.spuCategoryId}
</if>
<if test="dto.hardId != null ">
and a.hard_id = #{dto.hardId}
</if>
<if test="dto.status != null and dto.status != '' ">
and a.status = #{dto.status}
</if>
@@ -79,9 +86,15 @@
<if test="dto.createTimeList != null and dto.createTimeList.length == 2">
and a.create_time between #{dto.createTimeList[0]} and #{dto.createTimeList[1]}
</if>
<if test="dto.spuIdList != null and dto.spuIdList.size() != 0">
and a.id in
<foreach collection="dto.spuIdList" item="v" open="(" close=")" separator=",">
#{v}
</foreach>
</if>
</sql>
<select id="scopPageJoin" resultType="com.bsd.pjcloud.hard.api.vo.spu.HardSpuVo">
<sql id="selectJoin">
<include refid="selectA"/>
c.name as categoryName
from hard_spu a
@@ -90,5 +103,13 @@
<include refid="whereA"/>
</where>
order by a.sort desc, a.create_time desc
</sql>
<select id="scopPageJoin" resultType="com.bsd.pjcloud.hard.api.vo.spu.HardSpuVo">
<include refid="selectJoin" />
</select>
<select id="scopPageList" resultType="com.bsd.pjcloud.hard.api.vo.spu.HardSpuVo">
<include refid="selectJoin"/>
</select>
</mapper>