From 2658786bd17c4017f0f49dd19f201ea364a865cd Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 26 Aug 2025 12:17:59 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat:=E4=BA=BA=E5=91=98=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 8322e62a9..efca84119 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -58,6 +58,29 @@ CREATE TABLE `sys_user_face` COLLATE = utf8mb4_general_ci COMMENT ='人脸样本表'; CREATE INDEX idx_dept_id ON sys_user_face (user_id); + +-- ---------------------------- +-- Table structure for sys_user_car +-- ---------------------------- +DROP TABLE IF EXISTS sys_user_car; +CREATE TABLE `sys_user_car` +( + id bigint NOT NULL COMMENT '编号', + user_id bigint NOT NULL COMMENT '用户ID', + car_number char(64) COMMENT '车牌号', + car_type char(32) COMMENT '车辆类型(字典)', + enable_status char(32) 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 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_general_ci COMMENT ='人员车辆表'; + -- ---------------------------- -- Table structure for mch_manage -- ---------------------------- From 9eaa9998c32572947f94afbc847b5d5605b43f71 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 26 Aug 2025 12:40:25 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat:=E4=BA=BA=E5=91=98=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/api/dto/car/SysUserCarDto.java | 21 ++++ .../api/entity/car/SysUserCarEntity.java | 95 ++++++++++++++++ .../admin/api/vo/car/SysUserCarVo.java | 8 ++ .../controller/car/SysUserCarController.java | 106 ++++++++++++++++++ .../admin/mapper/car/SysUserCarMapper.java | 17 +++ .../admin/service/SysUserCarService.java | 17 +++ .../impl/car/SysUserCarServiceImpl.java | 58 ++++++++++ .../resources/mapper/car/SysUserCarMapper.xml | 45 ++++++++ 8 files changed, 367 insertions(+) create mode 100644 pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/car/SysUserCarDto.java create mode 100644 pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/car/SysUserCarEntity.java create mode 100644 pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/car/SysUserCarVo.java create mode 100644 pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/car/SysUserCarController.java create mode 100644 pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/car/SysUserCarMapper.java create mode 100644 pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserCarService.java create mode 100644 pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/car/SysUserCarServiceImpl.java create mode 100644 pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/car/SysUserCarMapper.xml diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/car/SysUserCarDto.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/car/SysUserCarDto.java new file mode 100644 index 000000000..5fcf92c69 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/car/SysUserCarDto.java @@ -0,0 +1,21 @@ +package com.bsd.pjcloud.admin.api.dto.car; + +import com.bsd.pjcloud.admin.api.entity.car.SysUserCarEntity; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; +import lombok.Data; + +@Data +public class SysUserCarDto extends SysUserCarEntity implements BaseUserInterface { + + /** + * 用户相关 + */ + private Long userId; + + private String username; + + private String userMobile; + + private String userAvatar; + +} diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/car/SysUserCarEntity.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/car/SysUserCarEntity.java new file mode 100644 index 000000000..62ecdeef8 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/car/SysUserCarEntity.java @@ -0,0 +1,95 @@ +package com.bsd.pjcloud.admin.api.entity.car; + +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("sys_user_car") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "车辆管理") +public class SysUserCarEntity extends Model { + + + /** + * 编号 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "编号") + private Long id; + + /** + * 用户ID + */ + @Schema(description = "用户ID") + private Long userId; + + /** + * 车牌号 + */ + @Schema(description = "车牌号") + private String carNumber; + + /** + * 车辆类型(字典) + */ + @Schema(description = "车辆类型(字典)") + private String carType; + + /** + * 启用状态(字典) + */ + @Schema(description = "启用状态(字典)") + private String enableStatus; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") + private LocalDateTime createTime; + + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改人") + private String updateBy; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改时间") + private LocalDateTime updateTime; + + /** + * 删除标记 + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") + private String delFlag; + + /** + * 租户ID + */ + @Schema(description = "租户ID") + private Long tenantId; +} \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/car/SysUserCarVo.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/car/SysUserCarVo.java new file mode 100644 index 000000000..76aedc145 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/car/SysUserCarVo.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.admin.api.vo.car; + +import com.bsd.pjcloud.admin.api.entity.car.SysUserCarEntity; +import lombok.Data; + +@Data +public class SysUserCarVo extends SysUserCarEntity { +} diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/car/SysUserCarController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/car/SysUserCarController.java new file mode 100644 index 000000000..613563f77 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/car/SysUserCarController.java @@ -0,0 +1,106 @@ +package com.bsd.pjcloud.admin.controller.car; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.admin.api.dto.car.SysUserCarDto; +import com.bsd.pjcloud.admin.api.entity.car.SysUserCarEntity; +import com.bsd.pjcloud.admin.api.vo.car.SysUserCarVo; +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.admin.service.SysUserCarService; +import org.springframework.security.access.prepost.PreAuthorize; +import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Objects; + +/** + * 车辆管理 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/sysUserCar") +@Tag(description = "sysUserCar", name = "车辆管理管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class SysUserCarController { + + private final SysUserCarService sysUserCarService; + + /** + * 分页查询 + */ + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('admin_sysUserCar_view')") + public R> getSysUserCarPage(@ParameterObject Page page, @ParameterObject SysUserCarDto dto) { + return R.ok(sysUserCarService.scopePageJoin(page, dto, DataScope.of())); + } + + + /** + * 通过id查询车辆管理 + */ + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('admin_sysUserCar_view')") + public R getById(@PathVariable("id") Long id) { + return R.ok(sysUserCarService.getById(id)); + } + + /** + * 新增车辆管理 + */ + @Operation(summary = "新增车辆管理", description = "新增车辆管理") + @SysLog("新增车辆管理") + @PostMapping + @PreAuthorize("@pms.hasPermission('admin_sysUserCar_add')") + public R save(@RequestBody SysUserCarDto sysUserCar) { + return R.ok(sysUserCarService.create(sysUserCar)); + } + + /** + * 修改车辆管理 + */ + @Operation(summary = "修改车辆管理", description = "修改车辆管理") + @SysLog("修改车辆管理") + @PutMapping + @PreAuthorize("@pms.hasPermission('admin_sysUserCar_edit')") + public R updateById(@RequestBody SysUserCarDto sysUserCar) { + sysUserCarService.edit(sysUserCar); + return R.ok(); + } + + /** + * 通过id删除车辆管理 + */ + @Operation(summary = "通过id删除车辆管理", description = "通过id删除车辆管理") + @SysLog("通过id删除车辆管理") + @DeleteMapping + @PreAuthorize("@pms.hasPermission('admin_sysUserCar_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysUserCarService.removeBatchByIds(CollUtil.toList(ids))); + } + + + /** + * 导出excel 表格 + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('admin_sysUserCar_export')") + public List export(SysUserCarEntity sysUserCar, Long[] ids) { + return sysUserCarService.list(Wrappers.lambdaQuery(sysUserCar).in(ArrayUtil.isNotEmpty(ids), SysUserCarEntity::getId, ids)); + } +} \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/car/SysUserCarMapper.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/car/SysUserCarMapper.java new file mode 100644 index 000000000..e904268b3 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/car/SysUserCarMapper.java @@ -0,0 +1,17 @@ +package com.bsd.pjcloud.admin.mapper.car; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.admin.api.dto.car.SysUserCarDto; +import com.bsd.pjcloud.admin.api.entity.car.SysUserCarEntity; +import com.bsd.pjcloud.admin.api.vo.car.SysUserCarVo; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface SysUserCarMapper extends PjcloudBaseMapper { + + Page scopePageJoin(Page page, @Param("dto") SysUserCarDto dto, DataScope dataScope); + +} \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserCarService.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserCarService.java new file mode 100644 index 000000000..4e0e55935 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserCarService.java @@ -0,0 +1,17 @@ +package com.bsd.pjcloud.admin.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.admin.api.dto.car.SysUserCarDto; +import com.bsd.pjcloud.admin.api.entity.car.SysUserCarEntity; +import com.bsd.pjcloud.common.data.datascope.DataScope; + +public interface SysUserCarService extends IService { + + Page scopePageJoin(Page page, SysUserCarDto dto, DataScope dataScope); + + Long create(SysUserCarDto sysUserCar); + + void edit(SysUserCarDto sysUserCar); +} \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/car/SysUserCarServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/car/SysUserCarServiceImpl.java new file mode 100644 index 000000000..d3014e7cf --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/car/SysUserCarServiceImpl.java @@ -0,0 +1,58 @@ +package com.bsd.pjcloud.admin.service.impl.car; + +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.admin.api.dto.car.SysUserCarDto; +import com.bsd.pjcloud.admin.api.entity.car.SysUserCarEntity; +import com.bsd.pjcloud.admin.api.vo.car.SysUserCarVo; +import com.bsd.pjcloud.admin.mapper.car.SysUserCarMapper; +import com.bsd.pjcloud.admin.service.SysUserCarService; +import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import org.springframework.stereotype.Service; + +/** + * 车辆管理 + */ +@Service +public class SysUserCarServiceImpl extends ServiceImpl implements SysUserCarService { + + @Override + public Page scopePageJoin(Page page, SysUserCarDto dto, DataScope dataScope) { + return baseMapper.scopePageJoin(page, dto, dataScope); + } + + @Override + public Long create(SysUserCarDto sysUserCar) { + if (existName(sysUserCar)) { + throw new RuntimeException("车牌号不能重复"); + } + if (ObjectUtil.isEmpty(sysUserCar.getEnableStatus())) { + sysUserCar.setEnableStatus(YesNoEnum.YES.getCode()); + } + baseMapper.insert(sysUserCar); + return sysUserCar.getId(); + } + + @Override + public void edit(SysUserCarDto sysUserCar) { + if (existName(sysUserCar)) { + throw new RuntimeException("车牌号不能重复"); + } + baseMapper.updateById(sysUserCar); + } + + // 判断车牌号是否重复 + private boolean existName(SysUserCarEntity dto) { + Long count = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(dto.getCarNumber()), SysUserCarEntity::getCarNumber, dto.getCarNumber()) + .ne(ObjectUtil.isNotEmpty(dto.getId()), SysUserCarEntity::getId, dto.getId()) + ); + if (ObjectUtil.isNotEmpty(dto.getId())) { + return count >= 1; + } + return count > 0; + } +} \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/car/SysUserCarMapper.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/car/SysUserCarMapper.xml new file mode 100644 index 000000000..c4d1de43e --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/car/SysUserCarMapper.xml @@ -0,0 +1,45 @@ + + + + + + + select a.id, + a.user_id, + a.car_number, + a.car_type, + a.enable_status, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.del_flag, + a.tenant_id + + + + a.del_flag = '0' + + and a.user_id = #{dto.userId} + + + and a.car_number LIKE CONCAT('%',#{dto.carNumber},'%') + + + and a.car_type = #{dto.carType} + + + and a.enable_status = #{dto.enableStatus} + + + + + + \ No newline at end of file From 5c6549713d2ea52e56da8bd014f109a3d6d443f9 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 26 Aug 2025 19:39:38 +0800 Subject: [PATCH 3/7] =?UTF-8?q?feat:=E8=BD=A6=E7=89=8C=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 27 ++-- .../admin/api/constant/car/CarTypeEnum.java | 33 +++++ .../admin/api/dto/car/SysUserCarDto.java | 10 +- .../api/entity/car/SysUserCarEntity.java | 29 +++- .../admin/api/vo/car/SysUserCarVo.java | 17 ++- .../controller/car/SysUserCarController.java | 27 +++- .../admin/service/SysUserCarService.java | 11 ++ .../impl/car/SysUserCarServiceImpl.java | 133 +++++++++++++++++- .../admin/utils/flow/dto/UserCarFlowDto.java | 13 ++ 9 files changed, 279 insertions(+), 21 deletions(-) create mode 100644 pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/constant/car/CarTypeEnum.java create mode 100644 pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/utils/flow/dto/UserCarFlowDto.java diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index efca84119..804637b4e 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -65,17 +65,22 @@ CREATE INDEX idx_dept_id ON sys_user_face (user_id); DROP TABLE IF EXISTS sys_user_car; CREATE TABLE `sys_user_car` ( - id bigint NOT NULL COMMENT '编号', - user_id bigint NOT NULL COMMENT '用户ID', - car_number char(64) COMMENT '车牌号', - car_type char(32) COMMENT '车辆类型(字典)', - enable_status char(32) 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', + id bigint NOT NULL COMMENT '编号', + user_id bigint NOT NULL COMMENT '用户ID', + car_number char(64) COMMENT '车牌号', + car_type char(32) COMMENT '车辆类型(字典)', + enable_status char(32) COMMENT '启用状态(字典)', + + process_id varchar(256) COMMENT '流程id', + process_status varchar(10) NOT NULL COMMENT '审核状体', + process_time datetime 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 DEFAULT CHARSET = utf8mb4 diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/constant/car/CarTypeEnum.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/constant/car/CarTypeEnum.java new file mode 100644 index 000000000..8b1deaf40 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/constant/car/CarTypeEnum.java @@ -0,0 +1,33 @@ +package com.bsd.pjcloud.admin.api.constant.car; + + +import cn.hutool.core.util.ObjectUtil; +import com.bsd.pjcloud.admin.api.constant.UserTransactionEnum; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + + +/** + * 车辆类型 + */ +@AllArgsConstructor +@Getter +public enum CarTypeEnum { + + SELF("1", "私家车"), + PUBLIC("2", "公车"), + ARMY("3", "军车"), + POLICE("4", "警车"), + ; + private final String type; + private final String description; + + public static CarTypeEnum valueOfByType(String type) { + if (ObjectUtil.isEmpty(type)) return null; + return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get(); + } + + +} diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/car/SysUserCarDto.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/car/SysUserCarDto.java index 5fcf92c69..67621ae4c 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/car/SysUserCarDto.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/car/SysUserCarDto.java @@ -1,21 +1,23 @@ package com.bsd.pjcloud.admin.api.dto.car; import com.bsd.pjcloud.admin.api.entity.car.SysUserCarEntity; -import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserDeptInterface; import lombok.Data; @Data -public class SysUserCarDto extends SysUserCarEntity implements BaseUserInterface { +public class SysUserCarDto extends SysUserCarEntity implements BaseUserDeptInterface { /** * 用户相关 */ - private Long userId; - private String username; private String userMobile; private String userAvatar; + private Long userDeptId; + + private String userDeptName; + } diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/car/SysUserCarEntity.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/car/SysUserCarEntity.java index 62ecdeef8..77f2a4e03 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/car/SysUserCarEntity.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/car/SysUserCarEntity.java @@ -3,8 +3,9 @@ package com.bsd.pjcloud.admin.api.entity.car; 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 jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; import java.time.LocalDateTime; @@ -17,6 +18,9 @@ import java.time.LocalDateTime; @TableName("sys_user_car") @EqualsAndHashCode(callSuper = true) @Schema(description = "车辆管理") +@Builder +@AllArgsConstructor +@NoArgsConstructor public class SysUserCarEntity extends Model { @@ -31,18 +35,21 @@ public class SysUserCarEntity extends Model { * 用户ID */ @Schema(description = "用户ID") + @NotNull(message = "用户ID不能为空") private Long userId; /** * 车牌号 */ @Schema(description = "车牌号") + @NotEmpty(message = "车牌号不能为空") private String carNumber; /** * 车辆类型(字典) */ @Schema(description = "车辆类型(字典)") + @NotEmpty(message = "车辆类型不能为空") private String carType; /** @@ -51,6 +58,24 @@ public class SysUserCarEntity extends Model { @Schema(description = "启用状态(字典)") private String enableStatus; + /** + * 流程id + */ + @Schema(description = "流程id") + private String processId; + + /** + * 审核状体 + */ + @Schema(description = "审核状体") + private String processStatus; + + /** + * 审核时间 + */ + @Schema(description = "审核时间") + private LocalDateTime processTime; + /** * 创建人 */ diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/car/SysUserCarVo.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/car/SysUserCarVo.java index 76aedc145..a8c200e28 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/car/SysUserCarVo.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/car/SysUserCarVo.java @@ -1,8 +1,23 @@ package com.bsd.pjcloud.admin.api.vo.car; import com.bsd.pjcloud.admin.api.entity.car.SysUserCarEntity; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserDeptInterface; import lombok.Data; @Data -public class SysUserCarVo extends SysUserCarEntity { +public class SysUserCarVo extends SysUserCarEntity implements BaseUserDeptInterface { + + /** + * 用户相关 + */ + private String username; + + private String userMobile; + + private String userAvatar; + + private Long userDeptId; + + private String userDeptName; + } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/car/SysUserCarController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/car/SysUserCarController.java index 613563f77..4e619bab5 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/car/SysUserCarController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/car/SysUserCarController.java @@ -2,8 +2,6 @@ package com.bsd.pjcloud.admin.controller.car; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.dto.car.SysUserCarDto; @@ -13,6 +11,10 @@ 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.admin.service.SysUserCarService; +import com.bsd.pjcloud.common.security.annotation.Inner; +import com.bsd.pjcloud.common.security.service.PjcloudUser; +import com.bsd.pjcloud.common.security.util.SecurityUtils; +import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; 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; @@ -38,6 +41,26 @@ public class SysUserCarController { private final SysUserCarService sysUserCarService; + /* ************************************* start callback start ************************************* */ + @Inner(value = false) + @PostMapping("/apply-callback") + public void applyCallback(@RequestBody ProcessNodeRecordAssignUserParamDto dto, @RequestParam(required = false) Long tenantId) { + sysUserCarService.applyCallback(dto, tenantId); + } + /* ************************************* end callback end ************************************* */ + + /* ************************************* start app start ************************************* */ + + @PostMapping("/app/create") + public void appCreateCar(@Validated @RequestBody SysUserCarDto dto) { + PjcloudUser user = SecurityUtils.getUser(); + dto.setUserId(user.getId()); + sysUserCarService.appCreateCar(dto); + } + + /* ************************************* end app end ************************************* */ + + /** * 分页查询 */ diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserCarService.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserCarService.java index 4e0e55935..62de7335f 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserCarService.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserCarService.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.admin.api.dto.car.SysUserCarDto; import com.bsd.pjcloud.admin.api.entity.car.SysUserCarEntity; import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; public interface SysUserCarService extends IService { @@ -14,4 +15,14 @@ public interface SysUserCarService extends IService { Long create(SysUserCarDto sysUserCar); void edit(SysUserCarDto sysUserCar); + + /** + * app创建车辆 + */ + void appCreateCar(SysUserCarDto dto); + + /** + * 审批回调 + */ + void applyCallback(ProcessNodeRecordAssignUserParamDto dto, Long tenantId); } \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/car/SysUserCarServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/car/SysUserCarServiceImpl.java index d3014e7cf..b4d65dec3 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/car/SysUserCarServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/car/SysUserCarServiceImpl.java @@ -1,29 +1,67 @@ package com.bsd.pjcloud.admin.service.impl.car; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; 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.admin.api.constant.car.CarTypeEnum; import com.bsd.pjcloud.admin.api.dto.car.SysUserCarDto; +import com.bsd.pjcloud.admin.api.entity.SysDept; +import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.entity.car.SysUserCarEntity; +import com.bsd.pjcloud.admin.api.utils.DataUtil; +import com.bsd.pjcloud.admin.api.vo.UserVO; import com.bsd.pjcloud.admin.api.vo.car.SysUserCarVo; import com.bsd.pjcloud.admin.mapper.car.SysUserCarMapper; +import com.bsd.pjcloud.admin.service.SysDeptService; import com.bsd.pjcloud.admin.service.SysUserCarService; +import com.bsd.pjcloud.admin.service.SysUserService; +import com.bsd.pjcloud.admin.utils.flow.FlowUtil; +import com.bsd.pjcloud.admin.utils.flow.dto.UserCarFlowDto; import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; +import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.common.data.tenant.TenantContextHolder; +import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; +import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; /** * 车辆管理 */ +@Slf4j @Service +@RequiredArgsConstructor public class SysUserCarServiceImpl extends ServiceImpl implements SysUserCarService { + static private final String TAG = "车辆管理"; + + private final SysUserService userService; + private final SysDeptService deptService; + + private final FlowUtil flowUtil; + @Override public Page scopePageJoin(Page page, SysUserCarDto dto, DataScope dataScope) { - return baseMapper.scopePageJoin(page, dto, dataScope); + Page pageList = baseMapper.scopePageJoin(page, dto, dataScope); + disposeList(pageList.getRecords()); + return pageList; } + @Override public Long create(SysUserCarDto sysUserCar) { if (existName(sysUserCar)) { @@ -32,6 +70,10 @@ public class SysUserCarServiceImpl extends ServiceImpl().eq(SysUserCarEntity::getProcessId, processId)); + if (ObjectUtil.isEmpty(detail)) { + return; + } + if (!ObjectUtil.equals(detail.getProcessStatus(), TaskCheckStatusEnum.PADDING.getCode())) { + log.error("|{}|重复的回调,dto:|{}|", TAG, JSON.toJSONString(dto)); + return; + } + try { + Boolean isConsent = flowUtil.isConsent(dto); + String processStatus = isConsent ? TaskCheckStatusEnum.RESULT.getCode() : TaskCheckStatusEnum.REJECT.getCode(); + baseMapper.updateById(SysUserCarEntity.builder().id(detail.getId()).processTime(LocalDateTime.now()).processStatus(processStatus).build()); + } catch (Exception e) { + e.printStackTrace(); + log.error("|{}|审批回调意外的错误,dto:|{}|error:|{}|", TAG, JSON.toJSONString(dto), e.getMessage()); + throw new RuntimeException(e); + } + } + // 判断车牌号是否重复 private boolean existName(SysUserCarEntity dto) { Long count = baseMapper.selectCount(new LambdaQueryWrapper() @@ -55,4 +169,21 @@ public class SysUserCarServiceImpl extends ServiceImpl 0; } + + private void disposeList(List list) { + if (ObjectUtil.isEmpty(list)) return; + RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); + // 用户部门 + CompletableFuture deptUserFuture = CompletableFuture.runAsync(() -> { + RequestContextHolder.setRequestAttributes(requestAttributes); + List userIds = list.stream().map(SysUserCarVo::getUserId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + if (ObjectUtil.isNotEmpty(userIds)) { + List userList = userService.getUserDeptByIds(new ArrayList<>(userIds)); + if (ObjectUtil.isNotEmpty(userList)) { + DataUtil.convertUserDeptList(list, CollectionUtils.convertMap(userList, UserVO::getUserId)); + } + } + }); + CompletableFuture.allOf(deptUserFuture).join(); + } } \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/utils/flow/dto/UserCarFlowDto.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/utils/flow/dto/UserCarFlowDto.java new file mode 100644 index 000000000..4ddbb277a --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/utils/flow/dto/UserCarFlowDto.java @@ -0,0 +1,13 @@ +package com.bsd.pjcloud.admin.utils.flow.dto; + +import com.bsd.pjcloud.flow.task.dto.base.FlowBaseDto; +import lombok.Data; + +@Data +public class UserCarFlowDto extends FlowBaseDto { + + private String carNumber; + + private String carType; + +} From 5647b14b9d7904f76bf4833d6ea7461c4ff3969f Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 27 Aug 2025 16:50:23 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat:=E8=AE=A2=E5=8D=95=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 27 +++ .../order/HardAdminRefundReinforceDto.java | 16 ++ .../entity/order/HardAfterSaleCarEntity.java | 126 +++++++++++ .../api/entity/order/HardAfterSaleEntity.java | 203 +++++++++--------- .../order/HardAfterSaleController.java | 14 +- .../mapper/order/HardAfterSaleCarMapper.java | 11 + .../hard/service/HardAfterSaleCarService.java | 8 + .../hard/service/HardAfterSaleService.java | 6 + .../order/HardAfterSaleCarServiceImpl.java | 15 ++ .../impl/order/HardAfterSaleServiceImpl.java | 31 ++- .../mapper/order/HardAfterSaleCarMapper.xml | 6 + 11 files changed, 350 insertions(+), 113 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardAdminRefundReinforceDto.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardAfterSaleCarMapper.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardAfterSaleCarMapper.xml diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index 34f17dad5..f72ad8d0e 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -220,6 +220,33 @@ CREATE TABLE hard_car DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT ='购物车表'; +-- ---------------------------- +-- Table structure for hard_after_sale_car +-- ---------------------------- +DROP TABLE IF EXISTS `hard_after_sale_car`; +CREATE TABLE hard_after_sale_car +( + id bigint NOT NULL COMMENT '编号', + refund_id bigint NOT NULL COMMENT '退款id', + parent_car_id bigint NOT NULL COMMENT '父购物车id', + product_id bigint NOT NULL COMMENT '商品id', + product_name varchar(128) NOT NULL COMMENT '商品名', + product_pic varchar(256) NOT NULL COMMENT '商品图片', + product_price bigint NOT NULL COMMENT '商品价格', + product_count int NOT NULL COMMENT '数量', + product_weight decimal(10, 2) COMMENT '重量', + total_price bigint 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 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_general_ci COMMENT ='购物车退款表'; + -- ---------------------------- -- Table structure for hard_parent_car -- ---------------------------- diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardAdminRefundReinforceDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardAdminRefundReinforceDto.java new file mode 100644 index 000000000..e38f01c38 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardAdminRefundReinforceDto.java @@ -0,0 +1,16 @@ +package com.bsd.pjcloud.hard.api.dto.order; + +import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class HardAdminRefundReinforceDto extends HardAdminRefundDto { + + /** + * 退款商品列表 + */ + private List carList; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java new file mode 100644 index 000000000..7b0000504 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java @@ -0,0 +1,126 @@ +package com.bsd.pjcloud.hard.api.entity.order; + +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.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 购物车退款表 + */ +@Data +@TenantTable +@TableName("hard_after_sale_car") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "购物车退款表") +public class HardAfterSaleCarEntity extends Model { + + + /** + * 编号 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "编号") + private Long id; + + /** + * 退款id + */ + @Schema(description = "退款id") + private Long refundId; + + /** + * 父购物车id + */ + @Schema(description = "父购物车id") + private Long parentCarId; + + /** + * 商品id + */ + @Schema(description = "商品id") + private Long productId; + + /** + * 商品名 + */ + @Schema(description = "商品名") + private String productName; + + /** + * 商品图片 + */ + @Schema(description = "商品图片") + private String productPic; + + /** + * 商品价格 + */ + @Schema(description = "商品价格") + private Long productPrice; + + /** + * 数量 + */ + @Schema(description = "数量") + private Integer productCount; + + /** + * 重量 + */ + @Schema(description = "重量") + private BigDecimal productWeight; + + /** + * 总价(分) + */ + @Schema(description = "总价(分)") + private Long totalPrice; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") + private LocalDateTime createTime; + + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改人") + private String updateBy; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改时间") + private LocalDateTime updateTime; + + /** + * 删除标记 + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") + private String delFlag; + + /** + * 租户ID + */ + @Schema(description = "租户ID") + private Long tenantId; +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleEntity.java index 9379c0514..44ecd562e 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleEntity.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; + import java.time.LocalDateTime; /** @@ -23,154 +24,154 @@ import java.time.LocalDateTime; @Schema(description = "售后订单") public class HardAfterSaleEntity extends Model { - /** - * 售后编号 - */ + /** + * 售后编号 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="售后编号") + @Schema(description = "售后编号") private Long id; - /** - * 售后单号 - */ - @Schema(description="售后单号") + /** + * 售后单号 + */ + @Schema(description = "售后单号") private String no; - /** - * 售后类型 - */ - @Schema(description="售后类型") + /** + * 售后类型 + */ + @Schema(description = "售后类型") private String type; - /** - * 售后状态 - */ - @Schema(description="售后状态") + /** + * 售后状态 + */ + @Schema(description = "售后状态") private String status; - /** - * 售后方式 - */ - @Schema(description="售后方式") + /** + * 售后方式 + */ + @Schema(description = "售后方式") private String way; - /** - * 用户id - */ - @Schema(description="用户id") + /** + * 用户id + */ + @Schema(description = "用户id") private Long userId; - /** - * 申请原因 - */ - @Schema(description="申请原因") + /** + * 申请原因 + */ + @Schema(description = "申请原因") private String applyReason; - /** - * 补充描述 - */ - @Schema(description="补充描述") + /** + * 补充描述 + */ + @Schema(description = "补充描述") private String applyDescription; - /** - * 补充凭证图片 - */ - @Schema(description="补充凭证图片") + /** + * 补充凭证图片 + */ + @Schema(description = "补充凭证图片") private String applyPicUrls; - /** - * 订单编号 - */ - @Schema(description="订单编号") + /** + * 订单编号 + */ + @Schema(description = "订单编号") private Long orderId; - /** - * 订单流水号 - */ - @Schema(description="订单流水号") + /** + * 订单流水号 + */ + @Schema(description = "订单流水号") private String orderNo; - /** - * 审批时间 - */ - @Schema(description="审批时间") + /** + * 审批时间 + */ + @Schema(description = "审批时间") private LocalDateTime auditTime; - /** - * 审批人 - */ - @Schema(description="审批人") + /** + * 审批人 + */ + @Schema(description = "审批人") private Long auditUserId; - /** - * 审批备注 - */ - @Schema(description="审批备注") + /** + * 审批备注 + */ + @Schema(description = "审批备注") private String auditReason; - /** - * 退款金额,单位:分 - */ - @Schema(description="退款金额,单位:分") + /** + * 退款金额,单位:分 + */ + @Schema(description = "退款金额,单位:分") private Integer refundPrice; - /** - * 支付退款编号 - */ - @Schema(description="支付退款编号") + /** + * 支付退款编号 + */ + @Schema(description = "支付退款编号") private Long payRefundId; - /** - * 退款时间 - */ - @Schema(description="退款时间") + /** + * 退款时间 + */ + @Schema(description = "退款时间") private LocalDateTime refundTime; - /** - * 退货时间 - */ - @Schema(description="退货时间") + /** + * 退货时间 + */ + @Schema(description = "退货时间") private LocalDateTime deliveryTime; - /** - * 创建人 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建人") + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") private String createBy; - /** - * 创建时间 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建时间") + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") private LocalDateTime createTime; - /** - * 修改人 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改人") + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改人") private String updateBy; - /** - * 修改时间 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改时间") + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改时间") private LocalDateTime updateTime; - /** - * 删除标记 - */ + /** + * 删除标记 + */ @TableLogic - @TableField(fill = FieldFill.INSERT) - @Schema(description="删除标记") + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") private String delFlag; - /** - * 租户ID - */ - @Schema(description="租户ID") + /** + * 租户ID + */ + @Schema(description = "租户ID") private Long tenantId; } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java index 604739aa5..7a68b9b5f 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java @@ -10,10 +10,7 @@ import com.bsd.pjcloud.common.idempotent.annotation.Idempotent; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; -import com.bsd.pjcloud.hard.api.dto.order.HardAdminRefundDto; -import com.bsd.pjcloud.hard.api.dto.order.HardAfterSaleDto; -import com.bsd.pjcloud.hard.api.dto.order.HardDisagreeDto; -import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.dto.order.*; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleLogEntity; import com.bsd.pjcloud.hard.api.vo.order.HardAfterSaleVo; @@ -115,6 +112,15 @@ public class HardAfterSaleController { return R.ok(hardAfterSaleService.adminRefund(dto, user)); } + @PostMapping(value = "/admin-reinforce-refund") + @Operation(summary = "后台强化退款") + @Idempotent(expireTime = 10, info = "正在退款中,请勿重复操作") + @PreAuthorize("@pms.hasPermission('hard_hardAfterSale_adminRefund')") + public R adminReinforceRefund(@RequestBody HardAdminRefundReinforceDto dto) { + PjcloudUser user = SecurityUtils.getUser(); + return R.ok(hardAfterSaleService.adminReinforceRefund(dto, user)); + } + @GetMapping(value = "/history") @Operation(summary = "查询售后进度") public R> history(@RequestParam Long id) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardAfterSaleCarMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardAfterSaleCarMapper.java new file mode 100644 index 000000000..1555b92e1 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardAfterSaleCarMapper.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.hard.mapper.order; + +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface HardAfterSaleCarMapper extends PjcloudBaseMapper { + + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java new file mode 100644 index 000000000..890be4167 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.hard.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; + +public interface HardAfterSaleCarService extends IService { + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java index 19b9fc66f..6ab612301 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.hard.api.dto.order.HardAdminRefundDto; +import com.bsd.pjcloud.hard.api.dto.order.HardAdminRefundReinforceDto; import com.bsd.pjcloud.hard.api.dto.order.HardAfterSaleDto; import com.bsd.pjcloud.hard.api.dto.order.HardDisagreeDto; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity; @@ -69,6 +70,11 @@ public interface HardAfterSaleService extends IService { */ Boolean adminRefund(HardAdminRefundDto dto, PjcloudUser user); + /** + * 后台强化退款 + */ + Boolean adminReinforceRefund(HardAdminRefundReinforceDto dto, PjcloudUser user); + /** * 消费机限时退款 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java new file mode 100644 index 000000000..b5b9b79ba --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java @@ -0,0 +1,15 @@ +package com.bsd.pjcloud.hard.service.impl.order; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; +import com.bsd.pjcloud.hard.mapper.order.HardAfterSaleCarMapper; +import com.bsd.pjcloud.hard.service.HardAfterSaleCarService; +import org.springframework.stereotype.Service; + +/** + * 购物车退款表 + */ +@Service +public class HardAfterSaleCarServiceImpl extends ServiceImpl implements HardAfterSaleCarService { + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java index cd257b370..ee62ae5cb 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java @@ -28,11 +28,9 @@ import com.bsd.pjcloud.hard.api.constant.refund.HardRefundStatusEnum; import com.bsd.pjcloud.hard.api.constant.refund.HardSaleStatusEnum; import com.bsd.pjcloud.hard.api.constant.refund.HardSaleTypeEnum; import com.bsd.pjcloud.hard.api.dto.ali.AliRefundDto; -import com.bsd.pjcloud.hard.api.dto.order.HardAdminRefundDto; -import com.bsd.pjcloud.hard.api.dto.order.HardAfterSaleDto; -import com.bsd.pjcloud.hard.api.dto.order.HardDisagreeDto; -import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.dto.order.*; import com.bsd.pjcloud.hard.api.dto.wechat.WechatRefundDto; +import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleLogEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; @@ -401,10 +399,6 @@ public class HardAfterSaleServiceImpl extends ServiceImpl afterList = baseMapper.selectList(new LambdaQueryWrapper() .eq(HardAfterSaleEntity::getOrderId, order.getId()) @@ -419,6 +413,12 @@ public class HardAfterSaleServiceImpl extends ServiceImpl carList) { + if (ObjectUtil.isEmpty(carList)) throw new RuntimeException("售后商品列表不能为空"); + // 查询订单购物车 + return false; + } + private HardAfterSaleEntity validateAfterSaleAuditable(Long id) { HardAfterSaleEntity afterSale = baseMapper.selectById(id); if (afterSale == null) throw new RuntimeException("售后单不存在"); @@ -500,6 +500,21 @@ public class HardAfterSaleServiceImpl extends ServiceImpl + + + + + \ No newline at end of file From d153ce27c1fc956ca628c082bcb707d8de5714de Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 27 Aug 2025 20:15:08 +0800 Subject: [PATCH 5/7] =?UTF-8?q?feat:=E8=B4=AD=E7=89=A9=E8=BD=A6=E5=95=86?= =?UTF-8?q?=E5=93=81=E7=BA=A7=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/order/HardAfterSaleCarEntity.java | 1 - .../order/HardAfterSaleController.java | 1 + .../controller/order/HardCarController.java | 10 +++ .../mapper/order/HardAfterSaleCarMapper.java | 4 ++ .../hard/service/HardAfterSaleCarService.java | 9 +++ .../order/HardAfterSaleCarServiceImpl.java | 38 +++++++++++ .../impl/order/HardAfterSaleServiceImpl.java | 67 ++++++++++++++++--- .../mapper/order/HardAfterSaleCarMapper.xml | 55 +++++++++++++++ 8 files changed, 176 insertions(+), 9 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java index 7b0000504..6fb403f0c 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java @@ -20,7 +20,6 @@ import java.time.LocalDateTime; @Schema(description = "购物车退款表") public class HardAfterSaleCarEntity extends Model { - /** * 编号 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java index 7a68b9b5f..dcfb53d39 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java @@ -23,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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java index 1ad5dadcc..933598f32 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java @@ -14,9 +14,11 @@ import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.dto.app.HardCarSaveOrUpdateDto; import com.bsd.pjcloud.hard.api.dto.order.HardCarDto; +import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; +import com.bsd.pjcloud.hard.service.HardAfterSaleCarService; import com.bsd.pjcloud.hard.service.HardCarService; import com.bsd.pjcloud.hard.service.HardOrderService; import org.springframework.security.access.prepost.PreAuthorize; @@ -46,6 +48,7 @@ public class HardCarController { private final HardCarService hardCarService; private final HardOrderService hardOrderService; + private final HardAfterSaleCarService hardAfterSaleCarService; /* ************************************* start app start ************************************* */ @GetMapping("/app/mch-detail") @@ -88,9 +91,16 @@ public class HardCarController { return R.ok(hardCarService.pageJoin(page, dto)); } + @GetMapping("/refund-car") + @Operation(summary = "查询退款购物车根据订单id") + public R> refundCar(@RequestParam Long orderId) { + return R.ok(hardAfterSaleCarService.getByOrderId(orderId)); + } + @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('hard_hardCar_view')") + public R getHardCarPage(@ParameterObject Page page, @ParameterObject HardCarEntity hardCar) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); return R.ok(hardCarService.page(page, wrapper)); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardAfterSaleCarMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardAfterSaleCarMapper.java index 1555b92e1..8b57cbb67 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardAfterSaleCarMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardAfterSaleCarMapper.java @@ -3,9 +3,13 @@ package com.bsd.pjcloud.hard.mapper.order; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface HardAfterSaleCarMapper extends PjcloudBaseMapper { + List getByCarPrentId(@Param("carParentId") Long carParentId); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java index 890be4167..779316aae 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java @@ -2,7 +2,16 @@ package com.bsd.pjcloud.hard.service; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; + +import java.util.List; public interface HardAfterSaleCarService extends IService { + List getByOrderId(Long orderId); + + List getByCarPrentId(Long carParentId); + + void create(List carList, HardOrderEntity order, HardAfterSaleEntity afterSale); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java index b5b9b79ba..d032dab6d 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java @@ -1,15 +1,53 @@ package com.bsd.pjcloud.hard.service.impl.order; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.mapper.order.HardAfterSaleCarMapper; +import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; import com.bsd.pjcloud.hard.service.HardAfterSaleCarService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.List; /** * 购物车退款表 */ +@Validated +@Slf4j +@RequiredArgsConstructor @Service public class HardAfterSaleCarServiceImpl extends ServiceImpl implements HardAfterSaleCarService { + private final HardOrderMapper hardOrderMapper; + + @Override + public List getByOrderId(Long orderId) { + HardOrderEntity order = hardOrderMapper.selectById(orderId); + if (ObjectUtil.isEmpty(order)) return null; + return getByCarPrentId(order.getParentCarId()); + } + + @Override + public List getByCarPrentId(Long carParentId) { + return baseMapper.getByCarPrentId(carParentId); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(List carList, HardOrderEntity order, HardAfterSaleEntity afterSale) { + if (ObjectUtil.isEmpty(carList)) return; + carList = carList.stream().map(item -> { + item.setParentCarId(order.getParentCarId()); + item.setRefundId(afterSale.getId()); + return item; + }).toList(); + saveBatch(carList); + } } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java index ee62ae5cb..d2e6f1f02 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java @@ -36,21 +36,21 @@ import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleLogEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.utils.HardUtil; import com.bsd.pjcloud.hard.api.vo.order.HardAfterSaleVo; +import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; import com.bsd.pjcloud.hard.api.vo.wechat.WechantRefunCallbackVo; import com.bsd.pjcloud.hard.api.vo.wechat.WechatRefundVo; import com.bsd.pjcloud.hard.mapper.order.HardAfterSaleLogMapper; import com.bsd.pjcloud.hard.mapper.order.HardAfterSaleMapper; +import com.bsd.pjcloud.hard.mapper.order.HardCarMapper; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; -import com.bsd.pjcloud.hard.service.AlipayService; -import com.bsd.pjcloud.hard.service.HardAfterSaleService; -import com.bsd.pjcloud.hard.service.HardOrderService; -import com.bsd.pjcloud.hard.service.WechatPayService; +import com.bsd.pjcloud.hard.service.*; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeRefundDto; import com.bsd.pjcloud.wallet.api.feign.RemoteWalletRechargeService; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -81,6 +81,8 @@ public class HardAfterSaleServiceImpl extends ServiceImpl carList) { - if (ObjectUtil.isEmpty(carList)) throw new RuntimeException("售后商品列表不能为空"); + public void validateOrderCarCanRefund(HardOrderEntity order, List refundCarList) { + if (ObjectUtil.isEmpty(refundCarList)) throw new RuntimeException("售后商品列表不能为空"); // 查询订单购物车 - return false; + List orderCarList = hardCarService.getByOrderId(order.getId()); + if (ObjectUtil.isEmpty(orderCarList)) throw new RuntimeException("订单购物车不存在"); + // 查询已退款商品 + List refundSuccessCarList = hardAfterSaleCarService.getByCarPrentId(order.getParentCarId()); + for (HardAfterSaleCarEntity refundCar : refundCarList) { + HardCarVo orderCar = orderCarList.stream().filter(v -> ObjectUtil.equal(v.getId(), refundCar.getId())).findFirst().orElse(null); + if (orderCar == null) throw new RuntimeException("退款商品<" + refundCar.getProductName() + ">不存在"); + int refundCount = 0; + if (ObjectUtil.isNotEmpty(refundCar.getProductCount())) { + refundCount = refundCar.getProductCount(); + } + // 已经退货成功的商品列表 + if (ObjectUtil.isNotEmpty(refundSuccessCarList)) { + HardAfterSaleCarEntity refundSuccessCar = refundSuccessCarList.stream().filter(v -> ObjectUtil.equal(v.getId(), refundCar.getId())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(refundSuccessCar)) { + refundCount += refundSuccessCar.getProductCount(); + } + } + if (orderCar.getProductCount() < refundCount) { + throw new RuntimeException("退款商品<" + refundCar.getProductName() + ">数量超出"); + } + } } private HardAfterSaleEntity validateAfterSaleAuditable(Long id) { @@ -504,7 +527,9 @@ public class HardAfterSaleServiceImpl extends ServiceImpl + + select a.id, + a.refund_id, + a.parent_car_id, + a.product_id, + a.product_name, + a.product_pic, + a.product_price, + a.product_count, + a.product_weight, + a.total_price, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.del_flag, + a.tenant_id + + + a.del_flag = '0' + + and a.id = #{id} + + + and a.refund_id = #{refundId} + + + and a.parent_car_id = #{parentCarId} + + + + \ No newline at end of file From 9e213234935ddac1d0824e67d00af2032dc21518 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 28 Aug 2025 12:41:35 +0800 Subject: [PATCH 6/7] =?UTF-8?q?feat:=E9=80=80=E6=AC=BE=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/order/HardAfterSaleCarEntity.java | 6 +++ .../controller/hard/HardApiController.java | 14 +++++++ .../hard/service/HardOrderService.java | 3 ++ .../order/HardAfterSaleCarServiceImpl.java | 7 +++- .../impl/order/HardAfterSaleServiceImpl.java | 34 +++++++++++---- .../impl/order/HardCarServiceImpl.java | 16 +++++-- .../impl/order/HardOrderServiceImpl.java | 42 +++++++++++++++++-- .../mapper/order/HardAfterSaleCarMapper.xml | 4 +- 8 files changed, 110 insertions(+), 16 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java index 6fb403f0c..28a55d8fc 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardAfterSaleCarEntity.java @@ -63,6 +63,12 @@ public class HardAfterSaleCarEntity extends Model { @Schema(description = "商品价格") private Long productPrice; + /** + * 商品性质(字典) + */ + @Schema(description = "商品性质(字典)") + private String productNature; + /** * 数量 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java index fc55a87d3..4908c3de3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java @@ -3,12 +3,14 @@ package com.bsd.pjcloud.hard.controller.hard; import cn.hutool.core.util.ObjectUtil; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.idempotent.annotation.Idempotent; +import com.bsd.pjcloud.hard.api.constant.HardProductNatureEnum; import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.dto.async.SyncOfflineReqVo; import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto; import com.bsd.pjcloud.hard.api.dto.hard.HardBindDto; import com.bsd.pjcloud.hard.api.dto.hard.HardCreateOrderDto; import com.bsd.pjcloud.hard.api.dto.order.HardChartLatitudeVo; +import com.bsd.pjcloud.hard.api.dto.order.HardCreateCarDto; import com.bsd.pjcloud.hard.api.vo.HardInvoiceVo; import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo; import com.bsd.pjcloud.hard.api.vo.android.HardAdUserVo; @@ -23,6 +25,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; @RestController @@ -68,6 +71,17 @@ public class HardApiController { @Operation(summary = "创建订单") @Idempotent(expireTime = 10, info = "正在创建订单中,请勿重复操作") public R createOrder(@Valid @RequestBody HardCreateOrderDto dto) { + // 处理商品类型 + if (ObjectUtil.isNotEmpty(dto.getList())) { + for (HardCreateCarDto item : dto.getList()) { + if (ObjectUtil.isEmpty(item.getProductNature())) continue; + if (ObjectUtil.isNotEmpty(item.getProductWeight()) && item.getProductWeight().compareTo(BigDecimal.valueOf(0)) != 0) { + item.setProductNature(HardProductNatureEnum.WEIGHT); + } else if (ObjectUtil.isNotEmpty(item.getProductCount())) { + item.setProductNature(HardProductNatureEnum.DEFAULT); + } + } + } return R.ok(hardwareOrderService.createOrder(dto)); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java index 51336d73e..3a0349244 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java @@ -14,6 +14,7 @@ import com.bsd.pjcloud.hard.api.dto.hard.HardCreateOrderDto; import com.bsd.pjcloud.hard.api.dto.order.HardCreateCarDto; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; import com.bsd.pjcloud.hard.api.dto.order.app.HardAppCreateOrderDto; +import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; import com.bsd.pjcloud.thirdparty.dto.ks.KsRecognitionCallbackDto; @@ -104,6 +105,8 @@ public interface HardOrderService extends IService { */ void fastenerInventory(HardOrderEntity order, YesNoEnum isReduce); + void fastenerInventory(HardOrderEntity order, List refundCarList, YesNoEnum isReduce); + /** * 核销硬件二维码 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java index d032dab6d..515ddf1dd 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java @@ -14,6 +14,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.util.ArrayList; import java.util.List; /** @@ -48,6 +49,10 @@ public class HardAfterSaleCarServiceImpl extends ServiceImpl saveList = new ArrayList<>(carList).stream().map(item -> { + item.setId(null); + return item; + }).toList(); + saveBatch(saveList); } } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java index d2e6f1f02..954dd9689 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java @@ -20,6 +20,8 @@ import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.security.service.PjcloudUser; +import com.bsd.pjcloud.hard.api.constant.HardProductNatureEnum; +import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; @@ -30,10 +32,7 @@ import com.bsd.pjcloud.hard.api.constant.refund.HardSaleTypeEnum; import com.bsd.pjcloud.hard.api.dto.ali.AliRefundDto; import com.bsd.pjcloud.hard.api.dto.order.*; import com.bsd.pjcloud.hard.api.dto.wechat.WechatRefundDto; -import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; -import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity; -import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleLogEntity; -import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; +import com.bsd.pjcloud.hard.api.entity.order.*; import com.bsd.pjcloud.hard.api.utils.HardUtil; import com.bsd.pjcloud.hard.api.vo.order.HardAfterSaleVo; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; @@ -230,7 +229,7 @@ public class HardAfterSaleServiceImpl extends ServiceImpl computerCarList = dto.getCarList().stream().map((item) -> { + HardCreateCarDto entity = new HardCreateCarDto(); + entity.setParentCarId(item.getParentCarId()); + entity.setProductId(item.getProductId()); + entity.setProductNature(HardProductNatureEnum.valueOfByType(item.getProductNature())); + entity.setProductCount(item.getProductCount()); + entity.setProductWeight(item.getProductWeight()); + return entity; + }).toList(); + int refundPrice = hardCarService.computerCarTotalPrice(HardTypeEnum.valueOfByType(order.getSysType()), HardOrderTypeEnum.valueOfByType(order.getOrderType()), computerCarList); + saveObj.setType(HardSaleTypeEnum.AFTER_SALE.getType()); saveObj.setStatus(HardSaleStatusEnum.COMPLETE.getStatus()); saveObj.setNo(refundCode); saveObj.setOrderId(order.getId()); - saveObj.setRefundPrice(order.getPayPrice()); + saveObj.setRefundPrice(refundPrice); saveObj.setUserId(order.getUserId()); saveObj.setAuditUserId(user.getId()); saveObj.setAuditTime(LocalDateTime.now()); @@ -562,7 +574,15 @@ public class HardAfterSaleServiceImpl extends ServiceImpl carList = dto.getCarList().stream().map((item) -> + HardCarEntity.builder() + .productId(item.getProductId()) + .productCount(item.getProductCount()) + .productWeight(item.getProductWeight()) + .productNature(item.getProductName()) + .build() + ).toList(); + hardOrderService.fastenerInventory(order, carList, YesNoEnum.NO); return true; } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java index cfe417b73..9daab3696 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java @@ -259,7 +259,9 @@ public class HardCarServiceImpl extends ServiceImpl refundCarList, YesNoEnum isReduce) { HardTypeEnum hardTypeEnum = HardTypeEnum.valueOfByType(order.getSysType()); HardOrderTypeEnum orderTypeEnum = HardOrderTypeEnum.valueOfByType(order.getOrderType()); if (!ObjectUtil.isAllNotEmpty(hardTypeEnum, orderTypeEnum)) return; @@ -867,6 +873,13 @@ public class HardOrderServiceImpl extends ServiceImpl ObjectUtil.equals(i.getProductId(), v.getProductId())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(refundCarTarget) && ObjectUtil.isNotEmpty(refundCarTarget.getProductCount())) { + item.setIncrCount(refundCarTarget.getProductCount() * base); + } + } return item; }).toList(); dto.setItems(list); @@ -889,15 +902,31 @@ public class HardOrderServiceImpl extends ServiceImpl ObjectUtil.equals(i.getProductId(), v.getProductId())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(refundCarTarget) && ObjectUtil.isNotEmpty(refundCarTarget.getProductCount())) { + prouctCount = refundCarTarget.getProductCount(); + } + } + double count = BigDecimal.valueOf(prouctCount).multiply(BigDecimal.valueOf(base)).setScale(2, RoundingMode.HALF_UP).doubleValue(); item.setIncrCount(count); } else if (ObjectUtil.isNotEmpty(v.getProductWeight()) && v.getProductWeight().compareTo(BigDecimal.valueOf(0)) != 0) { // 按重量 - double weight = v.getProductWeight().multiply(BigDecimal.valueOf(base)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + BigDecimal productWeight = v.getProductWeight(); + // 如果退款购物车数组里有,就用退款购物车的数量 + if (ObjectUtil.isNotEmpty(refundCarList)) { + HardCarEntity refundCarTarget = refundCarList.stream().filter(i -> ObjectUtil.equals(i.getProductId(), v.getProductId())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(refundCarTarget) && ObjectUtil.isNotEmpty(refundCarTarget.getProductCount())) { + productWeight = refundCarTarget.getProductWeight(); + } + } + double weight = productWeight.multiply(BigDecimal.valueOf(base)).setScale(2, RoundingMode.HALF_UP).doubleValue(); item.setIncrCount(weight); } return item; - }).toList(); + }).filter(v -> ObjectUtil.isNotEmpty(v.getIncrCount()) && v.getIncrCount() > 0).toList(); dto.setItems(list); R updateSkuStockRes = supermarketSpuService.updateSpuStock(dto); if (updateSkuStockRes.getCode() != 0) { @@ -916,6 +945,13 @@ public class HardOrderServiceImpl extends ServiceImpl ObjectUtil.equals(i.getProductId(), v.getProductId())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(refundCarTarget) && ObjectUtil.isNotEmpty(refundCarTarget.getProductCount())) { + entity.setIncrCount(refundCarTarget.getProductCount()); + } + } return entity; }).toList(); // 查询订单流程 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardAfterSaleCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardAfterSaleCarMapper.xml index df7bfff24..4859c1a72 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardAfterSaleCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardAfterSaleCarMapper.xml @@ -9,6 +9,7 @@ a.product_id, a.product_name, a.product_pic, + a.product_nature, a.product_price, a.product_count, a.product_weight, @@ -41,7 +42,8 @@ a.product_id, a.product_name, a.product_pic, - sum(a.product_price) as productPrice, + a.product_nature, + a.product_price, sum(a.product_count) as productCount, sum(a.product_weight) as productWeight, sum(a.total_price) as totalPrice, From f46762299a76eb058460f563cdcdc2c808a34caa Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 28 Aug 2025 17:55:07 +0800 Subject: [PATCH 7/7] =?UTF-8?q?feat:=E4=B8=8B=E5=8D=95=E6=97=B6=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=98=AF=E5=90=A6=E4=B8=BA=E8=87=AA=E5=B7=B1=E7=9A=84?= =?UTF-8?q?=E9=92=B1=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/service/impl/order/HardOrderServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index 3e9a55140..9b96ab27d 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -246,6 +246,12 @@ public class HardOrderServiceImpl extends ServiceImpl