From de0bc16a1c8cf8951578b82a45a95191edaa2b99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B2=B3=E5=B9=B3?= <14767849+liuehping@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 17:23:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=95=86=E5=93=81=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/AsCategoryAttributeGroup.java | 4 + .../muyu/product/domain/AttributeInfo.java | 89 +++++++++++++++---- .../com/muyu/product/domain/ProjectInfo.java | 2 + .../product/domain/model/ProjectAddModel.java | 28 ++++++ .../product/domain/model/ProjectModel.java | 14 +++ .../product/domain/model/ProjectSkuModel.java | 36 ++++++++ .../domain/req/AttributeInfoEditReq.java | 26 ++++++ .../domain/req/AttributeInfoQueryReq.java | 1 + .../domain/req/ProjectInfoEditReq.java | 7 +- .../controller/ProjectInfoController.java | 17 +++- .../product/service/ProjectInfoService.java | 11 +++ .../service/impl/ProjectInfoServiceImpl.java | 57 ++++++++++++ 12 files changed, 274 insertions(+), 18 deletions(-) create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectModel.java create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectSkuModel.java diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java index 1dd2789..138b955 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.muyu.product.domain.base.CategoryBase; +import com.muyu.product.domain.model.TemplateAttributeGroupModel; +import com.muyu.product.domain.model.TemplateAttributeModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -13,6 +15,8 @@ import io.swagger.annotations.*; import com.muyu.common.core.annotation.Excel; import com.muyu.common.core.web.domain.BaseEntity; +import java.util.List; + /** * 品类属性组中间对象 as_category_attribute_group * diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java index 2071ddc..cd9a64f 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java @@ -1,6 +1,7 @@ package com.muyu.product.domain; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,23 +36,64 @@ public class AttributeInfo extends BaseEntity { private static final long serialVersionUID = 1L; - /** 属性编号 */ - @TableId(value = "id",type = IdType.AUTO) + /** + * 属性编号 + */ + @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(name = "属性编号", value = "属性编号") private Long id; - /** 属性编码 */ + /** + * 属性编码 + */ @Excel(name = "属性编码") @ApiModelProperty(name = "属性编码", value = "属性编码", required = true) private String code; - /** 属性名 */ + /** + * 属性名 + */ @Excel(name = "属性名") @ApiModelProperty(name = "属性名", value = "属性名", required = true) private String name; + /** + * 属性编码 + */ + @Excel(name = "创建人") + @ApiModelProperty(name = "创建人", value = "创建人", required = true) + private String createBy; - public TemplateAttributeModel buildTemplateModel(){ + /** + * 属性名 + */ + @Excel(name = "创建时间") + @ApiModelProperty(name = "创建时间", value = "创建时间", required = true) + private Date createTime; + + /** + * 属性编码 + */ + @Excel(name = "更新人") + @ApiModelProperty(name = "更新人", value = "更新人", required = true) + private String updateBy; + + /** + * 属性名 + */ + @Excel(name = "更新时间") + @ApiModelProperty(name = "更新时间", value = "更新时间", required = true) + private Date updateTime; + + /** + * 属性名 + */ + @Excel(name = "备注") + @ApiModelProperty(name = "备注", value = "备注", required = true) + private String remark; + + + public TemplateAttributeModel buildTemplateModel() { return TemplateAttributeModel.builder() .id(this.getId()) .code(this.getCode()) @@ -60,33 +102,50 @@ public class AttributeInfo extends BaseEntity { } /** - * 查询构造器 - */ - public static AttributeInfo queryBuild( AttributeInfoQueryReq attributeInfoQueryReq){ + * 查询构造器 + */ + public static AttributeInfo queryBuild(AttributeInfoQueryReq attributeInfoQueryReq) { return AttributeInfo.builder() + .id(attributeInfoQueryReq.getId()) .name(attributeInfoQueryReq.getName()) .code(attributeInfoQueryReq.getCode()) + .createBy(attributeInfoQueryReq.getCreateBy()) + .updateBy(attributeInfoQueryReq.getUpdateBy()) + .createTime(attributeInfoQueryReq.getCreateTime()) + .updateTime(attributeInfoQueryReq.getUpdateTime()) + .remark(attributeInfoQueryReq.getRemark()) .build(); } /** - * 添加构造器 - */ - public static AttributeInfo saveBuild(AttributeInfoSaveReq attributeInfoSaveReq){ + * 添加构造器 + */ + public static AttributeInfo saveBuild(AttributeInfoSaveReq attributeInfoSaveReq) { return AttributeInfo.builder() + .id(attributeInfoSaveReq.getId()) .name(attributeInfoSaveReq.getName()) .code(attributeInfoSaveReq.getCode()) + .createBy(attributeInfoSaveReq.getCreateBy()) + .updateBy(attributeInfoSaveReq.getUpdateBy()) + .createTime(attributeInfoSaveReq.getCreateTime()) + .updateTime(attributeInfoSaveReq.getUpdateTime()) + .remark(attributeInfoSaveReq.getRemark()) .build(); } /** - * 修改构造器 - */ - public static AttributeInfo editBuild(Long id, AttributeInfoEditReq attributeInfoEditReq){ + * 修改构造器 + */ + public static AttributeInfo editBuild(Long id, AttributeInfoEditReq attributeInfoEditReq) { return AttributeInfo.builder() - .id(id) + .id(id) .name(attributeInfoEditReq.getName()) .code(attributeInfoEditReq.getCode()) + .createBy(attributeInfoEditReq.getCreateBy()) + .updateBy(attributeInfoEditReq.getUpdateBy()) + .createTime(attributeInfoEditReq.getCreateTime()) + .updateTime(attributeInfoEditReq.getUpdateTime()) + .remark(attributeInfoEditReq.getRemark()) .build(); } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java index 23d2277..9420db8 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.muyu.product.domain.model.ProjectAddModel; +import com.muyu.product.domain.model.TemplateAttributeGroupModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -17,6 +18,7 @@ import com.muyu.product.domain.req.ProjectInfoEditReq; import com.muyu.common.core.web.domain.BaseEntity; import java.util.Date; +import java.util.List; import java.util.function.Supplier; /** diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java index a97f53a..a3ed18e 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java @@ -1,10 +1,14 @@ package com.muyu.product.domain.model; import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.ProjectInfo; +import com.muyu.product.domain.req.ProjectInfoEditReq; import io.swagger.annotations.ApiModelProperty; import lombok.*; import lombok.experimental.SuperBuilder; +import java.util.Date; + /** * @author DongZl * @description: 商品添加模型 @@ -57,4 +61,28 @@ public class ProjectAddModel extends BaseEntity { /** 品牌 */ @ApiModelProperty(name = "品牌", value = "品牌") private Long brandId; + + /** + * 修改构造器 + */ + public static ProjectInfo editBuild(Long id, ProjectInfoEditReq projectInfoEditReq){ + return ProjectInfo.builder() + .id(id) + .name(projectInfoEditReq.getName()) + .introduction(projectInfoEditReq.getIntroduction()) + .mianType(projectInfoEditReq.getMianType()) + .parentType(projectInfoEditReq.getParentType()) + .type(projectInfoEditReq.getType()) + .image(projectInfoEditReq.getImage()) + .carouselImages(projectInfoEditReq.getCarouselImages()) + .status(projectInfoEditReq.getStatus()) + .ruleId(projectInfoEditReq.getRuleId()) + .brandId(projectInfoEditReq.getBrandId()) + .remark(projectInfoEditReq.getRemark()) + .updateBy(projectInfoEditReq.getUpdateBy()) + .createTime(new Date()) + .createBy(projectInfoEditReq.getCreateBy()) + .updateTime(new Date()) + .build(); + } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectModel.java new file mode 100644 index 0000000..437d9a6 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectModel.java @@ -0,0 +1,14 @@ +package com.muyu.product.domain.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ProjectModel { + + private Long id; + private String value; +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectSkuModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectSkuModel.java new file mode 100644 index 0000000..f85686a --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectSkuModel.java @@ -0,0 +1,36 @@ +package com.muyu.product.domain.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ProjectSkuModel { + + + /** sku */ + @ApiModelProperty(name = "sku", value = "sku", required = true) + private String sku; + + /** 商品库存 */ + @ApiModelProperty(name = "商品库存", value = "商品库存", required = true) + private Long stock; + + /** 商品价格 */ + @ApiModelProperty(name = "商品价格", value = "商品价格", required = true) + private BigDecimal price; + + /** 规格图片 */ + @ApiModelProperty(name = "规格图片", value = "规格图片", required = true) + private String image; + + + + + +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeInfoEditReq.java index 20d95cd..9d9cade 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeInfoEditReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeInfoEditReq.java @@ -2,6 +2,7 @@ package com.muyu.product.domain.req; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -37,4 +38,29 @@ public class AttributeInfoEditReq extends BaseEntity { private String code; + /** 属性编码 */ + @Excel(name = "创建人") + @ApiModelProperty(name = "创建人", value = "创建人", required = true) + private String createBy; + + /** 属性名 */ + @Excel(name = "创建时间") + @ApiModelProperty(name = "创建时间", value = "创建时间", required = true) + private Date createTime; + + /** 属性编码 */ + @Excel(name = "更新人") + @ApiModelProperty(name = "更新人", value = "更新人", required = true) + private String updateBy; + + /** 属性名 */ + @Excel(name = "更新时间") + @ApiModelProperty(name = "更新时间", value = "更新时间", required = true) + private Date updateTime; + + /** 属性名 */ + @Excel(name = "备注") + @ApiModelProperty(name = "备注", value = "备注", required = true) + private String remark; + } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeInfoQueryReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeInfoQueryReq.java index aba8144..9dfd9c5 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeInfoQueryReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeInfoQueryReq.java @@ -24,6 +24,7 @@ import com.muyu.common.core.web.domain.BaseEntity; public class AttributeInfoQueryReq extends BaseEntity { private static final long serialVersionUID = 1L; + private Long id; /** 属性名 */ @ApiModelProperty(name = "属性名", value = "属性名") diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProjectInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProjectInfoEditReq.java index 0e9ae0a..2759d0b 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProjectInfoEditReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProjectInfoEditReq.java @@ -1,5 +1,8 @@ package com.muyu.product.domain.req; +import com.muyu.product.domain.model.ProjectAddModel; +import com.muyu.product.domain.model.ProjectModel; +import com.muyu.product.domain.model.ProjectSkuModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -64,6 +67,8 @@ public class ProjectInfoEditReq extends BaseEntity { /** 品牌 */ @ApiModelProperty(name = "品牌", value = "品牌") private Long brandId; - private List productSkuList; + private ProjectAddModel projectAddModel; + private List attrValueList; + private List productSkuList; } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java index ff900fa..da46fd8 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java @@ -4,8 +4,13 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.muyu.product.cache.ProjectInfoCache; +import com.muyu.product.domain.BrandInfo; +import com.muyu.product.domain.RuleInfo; import com.muyu.product.domain.resp.ProjectDetailResp; +import com.muyu.product.service.BrandInfoService; +import com.muyu.product.service.RuleInfoService; import io.swagger.annotations.*; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -42,7 +47,10 @@ public class ProjectInfoController extends BaseController { private ProjectInfoService projectInfoService; @Autowired - private ProjectInfoCache projectInfoCache; + private BrandInfoService brandInfoService; + + @Autowired + private RuleInfoService ruleInfoService; /** * 查询商品信息列表 @@ -78,6 +86,10 @@ public class ProjectInfoController extends BaseController { @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class) public Result getInfo(@PathVariable("id") Long id) { ProjectInfo serviceById = projectInfoService.getById(id); + BrandInfo brandInfo = brandInfoService.getById(serviceById.getBrandId()); +// BeanUtils.copyProperties(brandInfo,serviceById); + RuleInfo ruleInfo = ruleInfoService.getById(serviceById.getRuleId()); +// BeanUtils.copyProperties(ruleInfo,serviceById); return Result.success(serviceById); } @@ -122,7 +134,8 @@ public class ProjectInfoController extends BaseController { @PutMapping("/{id}") @ApiOperation("修改商品信息") public Result edit(@PathVariable Long id, @RequestBody ProjectInfoEditReq projectInfoEditReq) { - return toAjax(projectInfoService.updateById(ProjectInfo.editBuild(id,projectInfoEditReq))); +// return toAjax(projectInfoService.updateById(ProjectInfo.editBuild(id,projectInfoEditReq))); + return projectInfoService.updProject(id, projectInfoEditReq); } /** diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java index 0924c9e..e4a9feb 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java @@ -1,8 +1,11 @@ package com.muyu.product.service; import java.util.List; + +import com.muyu.common.core.domain.Result; import com.muyu.product.domain.ProjectInfo; import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.product.domain.req.ProjectInfoEditReq; import com.muyu.product.domain.req.ProjectInfoSaveReq; import com.muyu.product.domain.resp.ProjectDetailResp; @@ -34,4 +37,12 @@ public interface ProjectInfoService extends IService { * @return 商品详情 */ ProjectDetailResp getDetailInfo (Long id); + + /** + * 修改商品信息 + * @param id + * @param projectInfoEditReq + * @return + */ + Result updProject(Long id, ProjectInfoEditReq projectInfoEditReq); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java index 448a3d9..76b60e2 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java @@ -2,22 +2,29 @@ package com.muyu.product.service.impl; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.ObjUtils; +import com.muyu.common.core.utils.StringUtils; import com.muyu.common.security.utils.SecurityUtils; import com.muyu.product.domain.*; import com.muyu.product.domain.model.*; +import com.muyu.product.domain.req.ProjectInfoEditReq; import com.muyu.product.domain.req.ProjectInfoSaveReq; import com.muyu.product.domain.resp.CategoryCommonElementResp; import com.muyu.product.domain.resp.ProjectDetailResp; import com.muyu.product.service.*; +import io.netty.util.internal.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.muyu.product.mapper.ProjectInfoMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.springframework.util.CollectionUtils; /** * 商品信息Service业务层处理 @@ -229,4 +236,54 @@ public class ProjectInfoServiceImpl extends ServiceImpl attributeInfos = projectInfoEditReq.getAttrValueList().stream() + .filter(projectModel->!StringUtils.isBlank(projectModel.getValue())) + .map(item -> { + AttributeInfo attributeInfo = AttributeInfo.builder() + .id(item.getId()) + .name(item.getValue()) + .build(); + return attributeInfo; + }).toList(); + //批量修改 + attributeInfoService.updateBatchById(attributeInfos); + } + + if(!CollectionUtils.isEmpty(projectInfoEditReq.getProductSkuList())){ + List skuInfoList = projectInfoEditReq.getProductSkuList().stream() + .map(projectSkuInfoModel -> { + ProjectSkuInfo projectSkuInfo = ProjectSkuInfo.builder() + .sku(projectSkuInfoModel.getSku()) + .image(projectSkuInfoModel.getImage()) + .stock(projectSkuInfoModel.getStock()) + .price(projectSkuInfoModel.getPrice()) + .build(); + return projectSkuInfo; + }).toList(); + skuInfoList.forEach(projectSkuInfoModel -> { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + if(!StringUtils.isBlank(projectSkuInfoModel.getImage())){ + wrapper.set(ProjectSkuInfo::getImage,projectSkuInfoModel.getImage()); + } + wrapper.set(ProjectSkuInfo::getStock,projectSkuInfoModel.getStock()); + wrapper.set(ProjectSkuInfo::getPrice,projectSkuInfoModel.getPrice()); + wrapper.eq(ProjectSkuInfo::getSku, projectSkuInfoModel.getSku()); + projectSkuInfoService.update(null,wrapper); + }); + + + } + return Result.success(null,"修改成功"); + } }