Merge remote-tracking branch 'origin/master'

This commit is contained in:
zjf committed 2025-04-03 18:10:44 +08:00
commit 4253c58ac4
23 files changed
+325 -82

No files matched your search

+25 -19
View File
@@ -277,25 +277,29 @@ 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 '0' COMMENT '旷世审核状态',
ks_status_title varchar(64) NOT 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',
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',
hard_door_number int DEFAULT NULL COMMENT '硬件id',
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 '修改人',
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 ='硬件商品';
@@ -308,6 +312,8 @@ CREATE TABLE hard_spu_category
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
name varchar(64) NOT NULL COMMENT '分类名',
sort int DEFAULT 0 NOT NULL COMMENT '排序',
mch_id bigint DEFAULT NULL COMMENT '商户id',
mch_dept_id bigint 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 '修改人',
@@ -11,6 +11,12 @@ public interface CommonRoleConstant {
// 管理员
String ROLE_ADMIN = "ROLE_ADMIN";
// 机关管理员
String JG_ADMIN = "JG_ADMIN";
// 财务管理员
String CANTEEN_FINANCE = "CANTEEN_FINANCE";
// 部门管理员
String DEPT_ADMIN = "DEPT_ADMIN";
@@ -3,6 +3,8 @@ package com.bsd.pjcloud.common.data.datascope;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
import lombok.Setter;
import org.apache.ibatis.executor.Executor;
@@ -18,7 +18,9 @@
package com.bsd.pjcloud.common.data.datascope;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.bsd.pjcloud.admin.api.entity.SysDept;
import com.bsd.pjcloud.admin.api.entity.SysRole;
import com.bsd.pjcloud.admin.api.feign.RemoteDataScopeService;
@@ -11,6 +11,10 @@ public class HardAppCreateOrderScancode {
@NotNull(message = "商户id不能为空")
private Long merchantId;
@Schema(description = "钱包id")
@NotNull(message = "钱包id不能为空")
private Long walletId;
@Schema(description = "用户输入的价格")
@NotNull(message = "自定义金额不能为空")
private Integer customPrice;
@@ -22,7 +22,7 @@ public class HardAppCreateOrderDto {
@NotNull(message = "用户id不能为空")
private Long userId;
@NotNull(message = "钱包类型不能为空")
// @NotNull(message = "钱包类型不能为空")
private WalletTypeEnum walletType;
@NotNull(message = "订单类型不能为空")
@@ -42,4 +42,7 @@ public class HardAppCreateOrderDto {
// 商户id
private Long merchantId;
// 饭卡id
private Long walletId;
}
@@ -6,4 +6,9 @@ import lombok.Data;
@Data
public class HardSpuCategoryDto extends HardSpuCategoryEntity {
/**
* 设备id
*/
private Long hardId;
}
@@ -6,6 +6,7 @@ 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;
/**
@@ -19,64 +20,76 @@ import java.time.LocalDateTime;
public class HardSpuCategoryEntity extends Model<HardSpuCategoryEntity> {
/**
* 编号
*/
/**
* 编号
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description="编号")
@Schema(description = "编号")
private Long id;
/**
* 分类名
*/
@Schema(description="分类名")
/**
* 分类名
*/
@Schema(description = "分类名")
private String name;
/**
* 排序
*/
@Schema(description="排序")
/**
* 排序
*/
@Schema(description = "排序")
private Integer sort;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建人")
/**
* 商户id
*/
@Schema(description = "商户id")
private Long mchId;
/**
* 商户部门id
*/
@Schema(description = "商户部门id")
private Long mchDeptId;
/**
* 创建人
*/
@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;
}
@@ -99,6 +99,24 @@ public class HardSpuEntity extends Model<HardSpuEntity> {
@Schema(description = "旷世审核状态描述")
private String ksComments;
/**
* 设备id
*/
@Schema(description = "设备id")
private Long hardId;
/**
* 商户id
*/
@Schema(description = "商户id")
private Long mchId;
/**
* 商户部门id
*/
@Schema(description = "商户部门id")
private Long mchDeptId;
/**
* 创建人
*/
@@ -1,9 +1,19 @@
package com.bsd.pjcloud.hard.api.vo.spu;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuCategoryEntity;
import com.bsd.pjcloud.wallet.api.vo.base.BaseMchInterface;
import lombok.Data;
@Data
public class HardSpuCategoryVo extends HardSpuCategoryEntity {
public class HardSpuCategoryVo extends HardSpuCategoryEntity implements BaseMchInterface {
/**
* 商户相关
*/
private Long merchantId;
private String merchantName;
private String logoPic;
}
@@ -1,14 +1,31 @@
package com.bsd.pjcloud.hard.api.vo.spu;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity;
import com.bsd.pjcloud.hard.api.vo.base.BaseHardInterface;
import com.bsd.pjcloud.wallet.api.vo.base.BaseMchInterface;
import lombok.Data;
@Data
public class HardSpuVo extends HardSpuEntity {
public class HardSpuVo extends HardSpuEntity implements BaseMchInterface, BaseHardInterface {
/**
* 分类相关
*/
private String categoryName;
/**
* 商户相关
*/
private Long merchantId;
private String merchantName;
private String logoPic;
/**
* 设备相关
*/
private String hardName;
private String hardType;
}
@@ -40,6 +40,12 @@ public class HardManagerController {
private final HardManagerService hardManagerService;
@Operation(summary = "下拉选择", description = "下拉选择")
@GetMapping("/select")
public R select(@ParameterObject Page page, @ParameterObject HardManagerDto dto) {
return R.ok(hardManagerService.scopePageList(page, dto));
}
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('hard_hardManager_view')")
@@ -151,10 +151,10 @@ public class HardOrderController {
HardAppCreateOrderDto dto = HardAppCreateOrderDto.builder()
.customPrice(body.getCustomPrice())
.merchantId(body.getMerchantId())
.walletId(body.getWalletId())
.userId(user.getId())
.hardType(HardTypeEnum.MERCHANT_QR_CODE)
.orderType(HardOrderTypeEnum.BELOW)
.walletType(WalletTypeEnum.EAT)
.payType(HardPayTypeEnum.WALLET_QR_CODE_SCAN)
.build();
return R.ok(hardwareOrderService.appCreateOrderScancode(dto));
@@ -52,6 +52,13 @@ public class HardSpuCategoryController {
return R.ok(hardSpuCategoryService.scopPageJoin(page, dto, dataScope));
}
@Operation(summary = "下拉", description = "下拉")
@GetMapping("/select")
public R select(@ParameterObject Page page, @ParameterObject HardSpuCategoryDto dto) {
DataScope dataScope = null;
return R.ok(hardSpuCategoryService.scopPageJoin(page, dto, dataScope));
}
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('hard_hardSpuCategory_view')")
@@ -36,6 +36,13 @@ public class HardSpuController {
private final HardSpuService hardSpuService;
@Operation(summary = "下拉查询", description = "下拉查询")
@GetMapping("/select")
public R select(@ParameterObject Page page, @ParameterObject HardSpuDto dto) {
DataScope dataScope = null;
return R.ok(hardSpuService.scopPageJoin(page, dto, dataScope));
}
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('hard_hardSpu_view')")
@@ -1,11 +1,28 @@
package com.bsd.pjcloud.hard.mapper.spu;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuCategoryDto;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuCategoryEntity;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuCategoryVo;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface HardSpuCategoryMapper extends PjcloudBaseMapper<HardSpuCategoryEntity> {
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);
Page pageList = selectPageByScope(page, wrapper, dataScope);
pageList.setRecords(BeanUtils.toBean(pageList.getRecords(), HardSpuCategoryVo.class));
return pageList;
}
}
@@ -218,7 +218,7 @@ public class HardManagerServiceImpl extends ServiceImpl<HardManagerMapper, HardM
String[] roles = userInfo.getRoleCodes();
if (roles.length == 0) return result;
List<String> roleList = Arrays.asList(roles);
if (roleList.contains(CommonRoleConstant.ROLE_ADMIN)) {
if (roleList.contains(CommonRoleConstant.ROLE_ADMIN) || roleList.contains(CommonRoleConstant.JG_ADMIN) || roleList.contains(CommonRoleConstant.CANTEEN_FINANCE)) {
result.setCanteenView(true);
result.setSupermarket(true);
return result;
@@ -51,10 +51,12 @@ import com.bsd.pjcloud.wallet.api.dto.WalletBalanceTransactionDto;
import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity;
import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity;
import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity;
import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity;
import com.bsd.pjcloud.wallet.api.feign.*;
import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil;
import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo;
import com.bsd.pjcloud.wallet.service.WalletTypeService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -364,7 +366,7 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
UserInfo userDetail = userService.getByUserId(dto.getUserId()).getData();
if (ObjectUtil.isEmpty(userDetail)) throw new RuntimeException("用户不存在不存在");
// 钱包
WalletManageEntity wallet = remoteWalletService.getWallet(dto.getUserId(), dto.getWalletType()).getData();
WalletManageEntity wallet = remoteWalletService.getWalletById(dto.getWalletId()).getData();
if (ObjectUtil.isEmpty(wallet)) throw new RuntimeException("用户钱包不存在");
Integer balance = wallet.getBalance();
int totalPrice = dto.getCustomPrice();
@@ -9,6 +9,7 @@ import com.bsd.pjcloud.admin.api.entity.SysDept;
import com.bsd.pjcloud.admin.api.feign.RemoteDeptService;
import com.bsd.pjcloud.common.core.util.CollectionUtils;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.data.datascope.DataScopeFuncEnum;
import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum;
@@ -65,23 +66,27 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService {
*/
@Override
public List<HardOrderSbVo> listSb(HardOrderDto dto) {
DataScope dataScope = DataScope.of();
dataScope.setScopeDeptName("merchant_dept_id");
PjcloudUser user = SecurityUtils.getUser();
CurrentUserHardTypeInfoDto hardTypeInfo = hardManagerService.getCurrentUserHardTypeInfo(user);
dto.setMchTypeCodes(hardTypeInfo.getHardTypeList());
// 查询总流水
HardOrderDto totalDto = BeanUtil.toBean(dto, HardOrderDto.class);
totalDto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice());
List<HardOrderSbVo> totalList = hardOrderMapper.listSb(totalDto, dataScope);
DataScope totalDataScope = DataScope.of().func(DataScopeFuncEnum.ALL);
totalDataScope.setScopeDeptName("merchant_dept_id");
List<HardOrderSbVo> totalList = hardOrderMapper.listSb(totalDto, totalDataScope);
// 扣款总流水
HardOrderDto refundDto = BeanUtil.toBean(dto, HardOrderDto.class);
refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes());
List<HardOrderSbVo> refundList = hardOrderMapper.listSb(refundDto, dataScope);
DataScope refundDataScope = DataScope.of().func(DataScopeFuncEnum.ALL);
refundDataScope.setScopeDeptName("merchant_dept_id");
List<HardOrderSbVo> refundList = hardOrderMapper.listSb(refundDto, refundDataScope);
// 盈利
HardOrderDto profitDto = BeanUtil.toBean(dto, HardOrderDto.class);
profitDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes());
List<HardOrderSbVo> profitList = hardOrderMapper.listSb(profitDto, dataScope);
DataScope profitDataScope = DataScope.of().func(DataScopeFuncEnum.ALL);
profitDataScope.setScopeDeptName("merchant_dept_id");
List<HardOrderSbVo> profitList = hardOrderMapper.listSb(profitDto, profitDataScope);
// 聚合一下数据
for (HardOrderSbVo v : totalList) {
// 退款
@@ -127,23 +132,27 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService {
*/
@Override
public List<HardOrderCsVo> listCs(HardOrderDto dto) {
DataScope dataScope = DataScope.of();
dataScope.setScopeDeptName("merchant_dept_id");
PjcloudUser user = SecurityUtils.getUser();
CurrentUserHardTypeInfoDto hardTypeInfo = hardManagerService.getCurrentUserHardTypeInfo(user);
dto.setMchTypeCodes(hardTypeInfo.getHardTypeList());
// 查询总流水
HardOrderDto totalDto = BeanUtil.toBean(dto, HardOrderDto.class);
totalDto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice());
List<HardOrderCsVo> totalList = hardOrderMapper.listCs(totalDto, dataScope);
DataScope totalDataScope = DataScope.of();
totalDataScope.setScopeDeptName("merchant_dept_id");
List<HardOrderCsVo> totalList = hardOrderMapper.listCs(totalDto, totalDataScope);
// 扣款总流水
HardOrderDto refundDto = BeanUtil.toBean(dto, HardOrderDto.class);
refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes());
List<HardOrderCsVo> refundList = hardOrderMapper.listCs(refundDto, dataScope);
DataScope refundDataScope = DataScope.of();
refundDataScope.setScopeDeptName("merchant_dept_id");
List<HardOrderCsVo> refundList = hardOrderMapper.listCs(refundDto, refundDataScope);
// 盈利
HardOrderDto profitDto = BeanUtil.toBean(dto, HardOrderDto.class);
profitDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes());
List<HardOrderCsVo> profitList = hardOrderMapper.listCs(profitDto, dataScope);
DataScope profitDataScope = DataScope.of();
profitDataScope.setScopeDeptName("merchant_dept_id");
List<HardOrderCsVo> profitList = hardOrderMapper.listCs(profitDto, profitDataScope);
for (HardOrderCsVo v : totalList) {
// 退款
if (ObjectUtil.isNotEmpty(refundList)) {
@@ -4,18 +4,25 @@ 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.spu.HardSpuCategoryDto;
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuCategoryEntity;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuCategoryVo;
import com.bsd.pjcloud.hard.mapper.spu.HardSpuCategoryMapper;
import com.bsd.pjcloud.hard.service.HardManagerService;
import com.bsd.pjcloud.hard.service.HardSpuCategoryService;
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;
/**
* 硬件商品分类
@@ -26,12 +33,25 @@ import java.util.ArrayList;
@Service
public class HardSpuCategoryServiceImpl extends ServiceImpl<HardSpuCategoryMapper, HardSpuCategoryEntity> implements HardSpuCategoryService {
private final HardManagerService hardManagerService;
private final RemoteMchService remoteMchService;
/**
* 分页查询
*/
@Override
public Page<HardSpuCategoryVo> scopPageJoin(Page page, HardSpuCategoryDto dto, DataScope dataScope) {
return null;
// 设备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;
}
/**
@@ -72,6 +92,7 @@ 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())
);
@@ -80,4 +101,17 @@ public class HardSpuCategoryServiceImpl extends ServiceImpl<HardSpuCategoryMappe
}
return count > 0;
}
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));
}
}
}
}
@@ -4,18 +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.HardManagerDto;
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto;
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity;
import com.bsd.pjcloud.hard.api.utils.HardUtil;
import com.bsd.pjcloud.hard.api.vo.HardManagerVo;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuVo;
import com.bsd.pjcloud.hard.mapper.HardManagerMapper;
import com.bsd.pjcloud.hard.mapper.spu.HardSpuMapper;
import com.bsd.pjcloud.hard.service.HardManagerService;
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;
/**
* 硬件商品
@@ -26,12 +37,20 @@ import java.util.ArrayList;
@Service
public class HardSpuServiceImpl extends ServiceImpl<HardSpuMapper, HardSpuEntity> implements HardSpuService {
private final HardManagerService hardManagerService;
private final RemoteMchService remoteMchService;
private final HardManagerMapper hardManagerMapper;
/**
* 分页查询
*/
@Override
public Page<HardSpuVo> scopPageJoin(Page page, HardSpuDto dto, DataScope dataScope) {
return baseMapper.scopPageJoin(page, dto, dataScope);
Page<HardSpuVo> pageList = baseMapper.scopPageJoin(page, dto, dataScope);
disposeList(pageList.getRecords(), dto);
return pageList;
}
/**
@@ -42,6 +61,18 @@ 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.insert(entity);
return entity.getId();
}
@@ -54,6 +85,18 @@ 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();
}
@@ -81,4 +124,27 @@ public class HardSpuServiceImpl extends ServiceImpl<HardSpuMapper, HardSpuEntity
return count > 0;
}
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));
}
}
}
}
@@ -16,6 +16,8 @@
<result property="ksStatus" column="ks_status"/>
<result property="ksStatusTitle" column="ks_status_title"/>
<result property="ksComments" column="ks_comments"/>
<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,6 +40,9 @@
a.ks_status,
a.ks_status_title,
a.ks_comments,
a.hard_id,
a.mch_id,
a.mch_dept_id,
a.create_by,
a.create_time,
a.update_by,
@@ -48,7 +53,7 @@
<sql id="whereA">
a.del_flag = '0'
<if test="dto.name != null ">
<if test="dto.name != null ">
and a.name like concat('%', #{dto.name}, '%')
</if>
<if test="dto.spuCategoryId != null ">
@@ -57,6 +62,9 @@
<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>
@@ -78,7 +78,8 @@ public class WalletRuleTransactionServiceImpl extends ServiceImpl<WalletRuleTran
}
}
// 是否已经超过最大限制
if (userConfig.getTotalTransferBalance() > userConfig.getMaxTransferBalance()) {
long cuurentTotalTransferBalance = userConfig.getTotalTransferBalance() + body.getBalance();
if (cuurentTotalTransferBalance > userConfig.getMaxTransferBalance()) {
throw new RuntimeException("已经超过最大转账金额限制");
}
entity.setSourceWalletId(userConfig.getSourceWalletId());