From 041f8683651a19ebe041c239a3ca19822c53470c Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 28 Sep 2021 20:39:24 +0800 Subject: [PATCH] 20210928 --- src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsCategoryService.java | 2 src/main/resources/templates/febs/views/modules/goods/goodsUpdate.html | 277 +++++++++++- src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsImagesMapper.java | 5 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 1 src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html | 1 src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html | 2 src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java | 7 src/main/resources/mapper/modules/MallShoppingCartMapper.xml | 11 src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsSkuDetailVo.java | 4 src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java | 4 src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java | 7 src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html | 521 ++++++++++++++++++++++++ src/main/resources/templates/febs/views/modules/goods/goodsList.html | 4 src/main/resources/mapper/modules/MallGoodsSkuMapper.xml | 4 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java | 180 ++++++++ src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsImagesVo.java | 15 src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java | 11 src/main/resources/mapper/modules/MallGoodsImagesMapper.xml | 8 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java | 2 src/main/java/cc/mrbird/febs/mall/dto/MailGoodsSkuDto.java | 34 + src/main/resources/mapper/modules/MallGoodsMapper.xml | 14 src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsUpdateVo.java | 39 + src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java | 9 src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java | 40 + src/main/resources/templates/febs/views/modules/order/orderList.html | 20 25 files changed, 1,171 insertions(+), 51 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java index f71ae2c..303bb24 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java @@ -7,6 +7,7 @@ import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.utils.OssUtils; import cc.mrbird.febs.mall.dto.AddMallGoodsDto; +import cc.mrbird.febs.mall.dto.MallGoodsUpdateDto; import cc.mrbird.febs.mall.dto.UpMallGoodsDto; import cc.mrbird.febs.mall.entity.MallGoods; import cc.mrbird.febs.mall.entity.MallGoodsCategory; @@ -120,4 +121,14 @@ } + /** + * 商品-编辑 + */ + @PostMapping("updateMallGoods") + @ControllerEndpoint(operation = "商品-编辑", exceptionMessage = "操作失败") + public FebsResponse updateMallGoods(@RequestBody @Valid MallGoodsUpdateDto mallGoodsUpdateDto) { + return adminMallGoodsService.updateMallGoods(mallGoodsUpdateDto); + } + + } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java index bcec09e..028efda 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java @@ -6,6 +6,7 @@ import cc.mrbird.febs.mall.service.IAdminMallGoodsService; import cc.mrbird.febs.mall.service.IAdminMallMemberService; import cc.mrbird.febs.mall.vo.AdminMailGoodsDetailVo; +import cc.mrbird.febs.mall.vo.AdminMailGoodsUpdateVo; import cc.mrbird.febs.mall.vo.MallMemberVo; import lombok.RequiredArgsConstructor; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -72,11 +73,11 @@ * @param model * @return */ - @GetMapping("goodsUpdate/{id}") - @RequiresPermissions("goodsUpdate:update") + @GetMapping("goodsUpdateNew/{id}") + @RequiresPermissions("goodsUpdateNew:update") public String goodsUpdate(@PathVariable long id, Model model) { - AdminMailGoodsDetailVo data = mallGoodsService.getMallGoodsInfoById(id); + AdminMailGoodsUpdateVo data = mallGoodsService.getMallGoodsUpdateInfoById(id); model.addAttribute("mailGoodsUpdate", data); - return FebsUtil.view("modules/goods/goodsUpdate"); + return FebsUtil.view("modules/goods/goodsUpdateNew"); } } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MailGoodsSkuDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MailGoodsSkuDto.java new file mode 100644 index 0000000..2120122 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/MailGoodsSkuDto.java @@ -0,0 +1,34 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(value = "MailGoodsSkuDto", description = "参数接收类") +public class MailGoodsSkuDto { + + private Long id; + + private String styleName; + + private String skuName; + + private String skuImage; + + private Integer stock; + + private Integer skuVolume; + + private BigDecimal originalPrice; + + private BigDecimal presentPrice; + + private Long styleId; + + private Long goodsId; + + private String delLog; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java new file mode 100644 index 0000000..3917bc0 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java @@ -0,0 +1,40 @@ +package cc.mrbird.febs.mall.dto; + +import cc.mrbird.febs.mall.vo.AdminMailGoodsSkuDetailVo; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "MallGoodsUpdateDto", description = "参数接收类") +public class MallGoodsUpdateDto { + + private Long id; + + private String goodsNo; + + private String goodsName; + + private List<MailGoodsSkuDto> mailGoodsSkuDto; + + private String thumbs; + + private String goodsIntrodution; + + private String unit; + + private String thumb; + + private String goodsDetails; + + private Integer isSale; + + private String originalPrice; + + private String presentPrice; + + private Long categoryId; + + private Integer isHot; +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsImagesMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsImagesMapper.java index ef03aca..59824e6 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsImagesMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsImagesMapper.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.mapper; import cc.mrbird.febs.mall.entity.MallGoodsImages; +import cc.mrbird.febs.mall.vo.AdminMailGoodsImagesVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -13,4 +14,8 @@ public interface MallGoodsImagesMapper extends BaseMapper<MallGoodsImages> { List<String> selectGoodsImagesByGoodsId(@Param("goodsId") Long goodsId); + + List<String> selectByGoodId(@Param("goodsId") long id); + + void deleteByGoodsId(@Param("goodsId")Long id); } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java index 1ed6192..781b4ad 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java @@ -3,6 +3,7 @@ import cc.mrbird.febs.mall.dto.MallGoodsQueryDto; import cc.mrbird.febs.mall.entity.MallGoods; import cc.mrbird.febs.mall.vo.AdminMailGoodsDetailVo; +import cc.mrbird.febs.mall.vo.AdminMailGoodsUpdateVo; import cc.mrbird.febs.mall.vo.AdminMallGoodsVo; import cc.mrbird.febs.mall.vo.MallGoodsListVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -24,11 +25,17 @@ Integer selectMallGoodsCountByGoodsName(@Param("goodsName")String goodsName); + Integer selectMallGoodsCountByGoodsNameAndGoodId(@Param("goodsName")String goodsName,@Param("id")Long id); + Integer selectMallGoodsCountByGoodsNo(@Param("goodsNo")String goodsNo); + + Integer selectMallGoodsCountByGoodsNoAndGoodId(@Param("goodsNo")String goodsNo,@Param("id")Long id); AdminMailGoodsDetailVo selectMallGoodsInfoById(@Param("id")long id); Map<String, BigDecimal> selectGoodsStockAndVolume(@Param("id") Long id); List<MallGoods> selectMallGoodsByCategaryId(@Param("categaryId")Long id); + + AdminMailGoodsUpdateVo getMallGoodsUpdateInfoById(@Param("id")long id); } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java index c90781a..c59ee88 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java @@ -17,4 +17,8 @@ MallShoppingCart selectCartGoodsBySkuId(@Param("skuId") Long skuId, @Param("memberId") Long memberId); int delBySkuId(@Param("skuId") Long skuId, @Param("memberId") Long memberId); + + void deleteByGoodsId(@Param("goodsId")Long id); + + void deleteByGoodsIdAndSkuId(@Param("skuId")Long id, @Param("goodsId")Long goodsId); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java index f0b1b45..db842df 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java @@ -3,9 +3,12 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.mall.dto.AddMallGoodsDto; +import cc.mrbird.febs.mall.dto.MallGoodsUpdateDto; import cc.mrbird.febs.mall.dto.UpMallGoodsDto; import cc.mrbird.febs.mall.entity.MallGoods; +import cc.mrbird.febs.mall.entity.MallGoodsCategory; import cc.mrbird.febs.mall.vo.AdminMailGoodsDetailVo; +import cc.mrbird.febs.mall.vo.AdminMailGoodsUpdateVo; import cc.mrbird.febs.mall.vo.AdminMallGoodsVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -23,4 +26,8 @@ FebsResponse delMallGoods(Long id); AdminMailGoodsDetailVo getMallGoodsInfoById(long id); + + AdminMailGoodsUpdateVo getMallGoodsUpdateInfoById(long id); + + FebsResponse updateMallGoods(MallGoodsUpdateDto mallGoodsUpdateDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsCategoryService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsCategoryService.java index 27e4cde..8cb5411 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsCategoryService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsCategoryService.java @@ -18,12 +18,14 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @Slf4j @Service @RequiredArgsConstructor +@Transactional public class AdminMallGoodsCategoryService extends ServiceImpl<MallGoodsCategoryMapper, MallGoodsCategory> implements IAdminMallGoodsCategoryService { private final MallGoodsCategoryMapper mallGoodsCategoryMapper; diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java index 379d795..eff3ca9 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java @@ -2,15 +2,11 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; -import cc.mrbird.febs.mall.dto.AddMallGoodsDto; -import cc.mrbird.febs.mall.dto.AddMallGoodsSkuDto; -import cc.mrbird.febs.mall.dto.UpMallGoodsDto; +import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IAdminMallGoodsService; -import cc.mrbird.febs.mall.vo.AdminMailGoodsDetailVo; -import cc.mrbird.febs.mall.vo.AdminMailGoodsSkuDetailVo; -import cc.mrbird.febs.mall.vo.AdminMallGoodsVo; +import cc.mrbird.febs.mall.vo.*; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -23,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -30,6 +27,7 @@ @Slf4j @Service @RequiredArgsConstructor +@Transactional public class AdminMallGoodsService extends ServiceImpl<MallGoodsMapper, MallGoods> implements IAdminMallGoodsService { private final MallGoodsCategoryMapper mallGoodsCategoryMapper; @@ -37,6 +35,7 @@ private final MallGoodsSkuMapper mallGoodsSkuMapper; private final MallGoodsStyleMapper mallGoodsStyleMapper; private final MallGoodsImagesMapper mallGoodsImagesMapper; + private final MallShoppingCartMapper mallShoppingCartMapper; @Override public IPage<AdminMallGoodsVo> getCategoryListInPage(MallGoods mallGoods, QueryRequest request) { @@ -76,6 +75,10 @@ String skuName = addSku.getSkuName(); if(StrUtil.isEmpty(skuName)){ return new FebsResponse().fail().message("商品规格名称不能为空"); + } + String skuImage = addSku.getSkuImage(); + if(StrUtil.isEmpty(skuImage)){ + return new FebsResponse().fail().message("商品规格图片不能为空"); } Integer skuVolume = addSku.getSkuVolume()==null?0: addSku.getSkuVolume(); if(skuVolume < 0){ @@ -189,6 +192,7 @@ } @Override + @Transactional public FebsResponse delMallGoods(Long id) { MallGoods mallGoods = mallGoodsMapper.selectById(id); if(ObjectUtil.isEmpty(mallGoods)){ @@ -202,6 +206,8 @@ mallGoodsStyleMapper.deleteByGoodsId(id); mallGoodsSkuMapper.deleteByGoodsId(id); mallGoodsMapper.deleteById(mallGoods); + mallShoppingCartMapper.deleteByGoodsId(id); + return new FebsResponse().success(); } @@ -213,5 +219,167 @@ return adminMailGoodsDetailVo; } + @Override + public AdminMailGoodsUpdateVo getMallGoodsUpdateInfoById(long id) { + AdminMailGoodsUpdateVo adminMailGoodsUpdateVo = mallGoodsMapper.getMallGoodsUpdateInfoById(id); + List<AdminMailGoodsSkuDetailVo> adminMailGoodsSkuDetailVos = mallGoodsSkuMapper.selectByGoodId(id); + if(CollUtil.isNotEmpty(adminMailGoodsSkuDetailVos)){ + adminMailGoodsUpdateVo.setMailGoodsSkuDetailVo(adminMailGoodsSkuDetailVos); + } + List<String> adminMailGoodsImagesVos = mallGoodsImagesMapper.selectByGoodId(id); + if(CollUtil.isNotEmpty(adminMailGoodsImagesVos)){ + adminMailGoodsUpdateVo.setMailGoodsImagesVo(adminMailGoodsImagesVos); + } + return adminMailGoodsUpdateVo; + } + + @Override + @Transactional + public FebsResponse updateMallGoods(MallGoodsUpdateDto mallGoodsUpdateDto) { + String goodsName = mallGoodsUpdateDto.getGoodsName(); + if(StrUtil.isEmpty(goodsName)){ + return new FebsResponse().fail().message("商品名称不能为空"); + } + Integer mallGoodsByGoodsName = mallGoodsMapper.selectMallGoodsCountByGoodsNameAndGoodId(goodsName,mallGoodsUpdateDto.getId()); + if(mallGoodsByGoodsName > 0){ + return new FebsResponse().fail().message("商品名称不能重复"); + } + String goodsNo = mallGoodsUpdateDto.getGoodsNo(); + if(StrUtil.isEmpty(goodsNo)){ + return new FebsResponse().fail().message("商品编号不能为空"); + } + Integer mallGoodsByGoodsNo = mallGoodsMapper.selectMallGoodsCountByGoodsNoAndGoodId(goodsNo,mallGoodsUpdateDto.getId()); + if(mallGoodsByGoodsNo > 0){ + return new FebsResponse().fail().message("商品编号不能重复"); + } + Long categoryId = mallGoodsUpdateDto.getCategoryId(); + if(ObjectUtil.isEmpty(categoryId)){ + return new FebsResponse().fail().message("商品分类不能为空"); + } + List<MailGoodsSkuDto> addSkus = mallGoodsUpdateDto.getMailGoodsSkuDto(); + if(CollUtil.isEmpty(addSkus)){ + return new FebsResponse().fail().message("商品规格不能为空"); + } + for(MailGoodsSkuDto addSku : addSkus){ + String skuName = addSku.getSkuName(); + if(StrUtil.isEmpty(skuName)){ + return new FebsResponse().fail().message("商品规格名称不能为空"); + } + String skuImage = addSku.getSkuImage(); + if(StrUtil.isEmpty(skuImage)){ + return new FebsResponse().fail().message("商品规格图片不能为空"); + } + Integer skuVolume = addSku.getSkuVolume()==null?0: addSku.getSkuVolume(); + if(skuVolume < 0){ + return new FebsResponse().fail().message("商品规格销售数量不能小于0"); + } + Integer stock = addSku.getStock()==null?0: addSku.getStock(); + if(stock < 0){ + return new FebsResponse().fail().message("商品规格库存必须大于0"); + } + BigDecimal originalPrice = addSku.getOriginalPrice(); + if(originalPrice.compareTo(BigDecimal.ZERO) <= 0){ + return new FebsResponse().fail().message("商品规格原价不能小于0"); + } + BigDecimal presentPrice = addSku.getPresentPrice(); + if(presentPrice.compareTo(BigDecimal.ZERO) <= 0){ + return new FebsResponse().fail().message("商品规格现价不能小于0"); + } + + } + //新增商品 + MallGoods mallGoods = mallGoodsMapper.selectById(mallGoodsUpdateDto.getId()); + mallGoods.setGoodsNo(mallGoodsUpdateDto.getGoodsNo()); + mallGoods.setGoodsName(mallGoodsUpdateDto.getGoodsName()); + mallGoods.setGoodsIntrodution(mallGoodsUpdateDto.getGoodsIntrodution()); + mallGoods.setUnit(mallGoodsUpdateDto.getUnit()); + mallGoods.setThumb(mallGoodsUpdateDto.getThumb()); + mallGoods.setGoodsDetails(mallGoodsUpdateDto.getGoodsDetails()); + mallGoods.setOriginalPrice(mallGoodsUpdateDto.getOriginalPrice()); + mallGoods.setCategoryId(mallGoodsUpdateDto.getCategoryId()); + mallGoods.setPresentPrice(mallGoodsUpdateDto.getPresentPrice()); + mallGoods.setIsHot(mallGoodsUpdateDto.getIsHot()); +// mallGoods.setIsSale(MallGoods.ISSALE_STATUS_DISABLED); + mallGoodsMapper.updateById(mallGoods); + + mallGoodsImagesMapper.deleteByGoodsId(mallGoodsUpdateDto.getId()); + + String thumbs = mallGoodsUpdateDto.getThumbs(); + if(StrUtil.isNotEmpty(thumbs)){ + List<String> imgs = StrUtil.splitTrim(thumbs, ","); + if(CollUtil.isNotEmpty(imgs)){ + int i = 1; + for(String img : imgs){ + MallGoodsImages mallGoodsImages = new MallGoodsImages(); + mallGoodsImages.setGoodsId(mallGoods.getId()); + mallGoodsImages.setImageUrl(img); + mallGoodsImages.setSeq(i); + mallGoodsImagesMapper.insert(mallGoodsImages); + i++; + } + } + } + + List<MailGoodsSkuDto> mailGoodsSkuDto = mallGoodsUpdateDto.getMailGoodsSkuDto(); + Set<String> styles = new HashSet<>(); + if(CollUtil.isNotEmpty(mailGoodsSkuDto)){ + for(MailGoodsSkuDto addStyleDto : mailGoodsSkuDto){ + if(ObjectUtil.isNotEmpty(addStyleDto.getDelLog())){ + mallGoodsSkuMapper.deleteById(addStyleDto.getId()); + + mallShoppingCartMapper.deleteByGoodsIdAndSkuId(addStyleDto.getId(),addStyleDto.getGoodsId()); + } + if(ObjectUtil.isEmpty(addStyleDto.getStyleId())){ + MallGoodsStyle mallGoodsStyleSku = mallGoodsStyleMapper.selectByStyleName(addStyleDto.getStyleName(),mallGoods.getId()); + if(ObjectUtil.isEmpty(mallGoodsStyleSku)){ + styles.add(addStyleDto.getStyleName()); + } + } + } + } + if(CollUtil.isNotEmpty(styles)){ + for(String style : styles){ + //新增样式 + MallGoodsStyle mallGoodsStyle = new MallGoodsStyle(); + mallGoodsStyle.setName(style); + mallGoodsStyle.setGoodsId(mallGoods.getId()); + mallGoodsStyleMapper.insert(mallGoodsStyle); + } + } + + if(CollUtil.isNotEmpty(mailGoodsSkuDto)){ + for(MailGoodsSkuDto addMallGoodsSkuDto : mailGoodsSkuDto){ + if(StrUtil.isEmpty(addMallGoodsSkuDto.getDelLog())){ + if(ObjectUtil.isNotEmpty(addMallGoodsSkuDto.getId())){ + MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(addMallGoodsSkuDto.getId()); + mallGoodsSku.setSkuName(addMallGoodsSkuDto.getSkuName()); + mallGoodsSku.setSkuImage(addMallGoodsSkuDto.getSkuImage()); + mallGoodsSku.setStock(addMallGoodsSkuDto.getStock()==null?0:addMallGoodsSkuDto.getStock()); + mallGoodsSku.setSkuVolume(addMallGoodsSkuDto.getSkuVolume()==null?0:addMallGoodsSkuDto.getSkuVolume()); + mallGoodsSku.setOriginalPrice(addMallGoodsSkuDto.getOriginalPrice()); + mallGoodsSku.setPresentPrice(addMallGoodsSkuDto.getPresentPrice()); + mallGoodsSku.setStyleId(addMallGoodsSkuDto.getStyleId()); + mallGoodsSku.setGoodsId(mallGoods.getId()); + mallGoodsSkuMapper.updateById(mallGoodsSku); + }else{ + //新增商品规格 + MallGoodsStyle mallGoodsStyleSku = mallGoodsStyleMapper.selectByStyleName(addMallGoodsSkuDto.getStyleName(),mallGoods.getId()); + MallGoodsSku mallGoodsSku = new MallGoodsSku(); + mallGoodsSku.setSkuName(addMallGoodsSkuDto.getSkuName()); + mallGoodsSku.setSkuImage(addMallGoodsSkuDto.getSkuImage()); + mallGoodsSku.setStock(addMallGoodsSkuDto.getStock()==null?0:addMallGoodsSkuDto.getStock()); + mallGoodsSku.setSkuVolume(addMallGoodsSkuDto.getSkuVolume()==null?0:addMallGoodsSkuDto.getSkuVolume()); + mallGoodsSku.setOriginalPrice(addMallGoodsSkuDto.getOriginalPrice()); + mallGoodsSku.setPresentPrice(addMallGoodsSkuDto.getPresentPrice()); + mallGoodsSku.setStyleId(mallGoodsStyleSku.getId()); + mallGoodsSku.setGoodsId(mallGoods.getId()); + mallGoodsSkuMapper.insert(mallGoodsSku); + } + } + } + } + return new FebsResponse().success().message("操作成功"); + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java index 5285e56..bc930bc 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java @@ -33,6 +33,7 @@ @Slf4j @Service @RequiredArgsConstructor +@Transactional public class AdminMallMemberServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements IAdminMallMemberService { private final MallMemberMapper mallMemberMapper; diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java index 7919c46..2bbfb79 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java @@ -17,12 +17,14 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @Slf4j @Service @RequiredArgsConstructor +@Transactional public class AdminMallOrderService extends ServiceImpl<MallOrderInfoMapper, MallOrderInfo> implements IAdminMallOrderService { private final MallOrderInfoMapper mallOrderInfoMapper; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsImagesVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsImagesVo.java new file mode 100644 index 0000000..7ec2ddb --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsImagesVo.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@Data +@ApiModel(value = "AdminMailGoodsImagesVo", description = "信息返回类") +public class AdminMailGoodsImagesVo { + + private String imageUrl; + + private Integer seq; + + private Long goodsId; +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsSkuDetailVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsSkuDetailVo.java index a566aec..c360f71 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsSkuDetailVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsSkuDetailVo.java @@ -19,6 +19,10 @@ @ApiModelProperty(value = "sku图片") private String skuImage; + private String styleName; + + private Long styleId; + @ApiModelProperty(value = "库存") private Integer stock; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsUpdateVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsUpdateVo.java new file mode 100644 index 0000000..49481a8 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMailGoodsUpdateVo.java @@ -0,0 +1,39 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "AdminMailGoodsUpdateVo", description = "信息返回类") +public class AdminMailGoodsUpdateVo { + + private Long id; + + private String goodsNo; + + private String goodsName; + + private List<AdminMailGoodsSkuDetailVo> mailGoodsSkuDetailVo; + + private List<String> mailGoodsImagesVo; + + private String goodsIntrodution; + + private String unit; + + private String thumb; + + private String goodsDetails; + + private Integer isSale; + + private String originalPrice; + + private String presentPrice; + + private Long categoryId; + + private Integer isHot; +} diff --git a/src/main/resources/mapper/modules/MallGoodsImagesMapper.xml b/src/main/resources/mapper/modules/MallGoodsImagesMapper.xml index 6b3049e..f1e7f4f 100644 --- a/src/main/resources/mapper/modules/MallGoodsImagesMapper.xml +++ b/src/main/resources/mapper/modules/MallGoodsImagesMapper.xml @@ -5,4 +5,12 @@ <select id="selectGoodsImagesByGoodsId" resultType="java.lang.String"> select image_url from mall_goods_images where goods_id=#{goodsId} </select> + + <select id="selectByGoodId" resultType="java.lang.String"> + select image_url from mall_goods_images where goods_id = #{goodsId} + </select> + + <delete id="deleteByGoodsId"> + delete from mall_goods_images where goods_id = #{goodsId} + </delete> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallGoodsMapper.xml b/src/main/resources/mapper/modules/MallGoodsMapper.xml index b2e07cd..1e5d5a1 100644 --- a/src/main/resources/mapper/modules/MallGoodsMapper.xml +++ b/src/main/resources/mapper/modules/MallGoodsMapper.xml @@ -138,8 +138,18 @@ select count(id) from mall_goods a where a.goods_name = #{goodsName} </select> + + + <select id="selectMallGoodsCountByGoodsNameAndGoodId" resultType="java.lang.Integer"> + select count(id) from mall_goods a where a.goods_name = #{goodsName} and a.id != #{id} + </select> + <select id="selectMallGoodsCountByGoodsNo" resultType="java.lang.Integer"> select count(id) from mall_goods a where a.goods_no = #{goodsNo} + </select> + + <select id="selectMallGoodsCountByGoodsNoAndGoodId" resultType="java.lang.Integer"> + select count(id) from mall_goods a where a.goods_no = #{goodsNo} and a.id != #{id} </select> <select id="selectMallGoodsInfoById" resultType="cc.mrbird.febs.mall.vo.AdminMailGoodsDetailVo"> @@ -157,4 +167,8 @@ <select id="selectMallGoodsByCategaryId" resultType="cc.mrbird.febs.mall.entity.MallGoods"> select * from mall_goods a where a.category_id = #{categaryId} </select> + + <select id="getMallGoodsUpdateInfoById" resultType="cc.mrbird.febs.mall.vo.AdminMailGoodsUpdateVo"> + select * from mall_goods a where a.id = #{id} + </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml b/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml index 5bcfd23..88d4fd9 100644 --- a/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml +++ b/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml @@ -20,7 +20,9 @@ <select id="selectByGoodId" resultType="cc.mrbird.febs.mall.vo.AdminMailGoodsSkuDetailVo"> - select * from mall_goods_sku where goods_id = #{id} + select a.*,b.name styleName from mall_goods_sku a + left join mall_goods_style b on a.style_id=b.ID + where a.goods_id = #{id} </select> diff --git a/src/main/resources/mapper/modules/MallShoppingCartMapper.xml b/src/main/resources/mapper/modules/MallShoppingCartMapper.xml index 353e3ff..3acd27d 100644 --- a/src/main/resources/mapper/modules/MallShoppingCartMapper.xml +++ b/src/main/resources/mapper/modules/MallShoppingCartMapper.xml @@ -25,4 +25,15 @@ delete from mall_shopping_cart where member_id=#{memberId} and sku_id=#{skuId} </delete> + + <delete id="deleteByGoodsId"> + delete from mall_shopping_cart + where goods_id = #{goodsId} + </delete> + + <delete id="deleteByGoodsIdAndSkuId"> + delete from mall_shopping_cart + where goods_id = #{goodsId} and sku_id = #{skuId} + </delete> + </mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html index 3f97646..7dc5a75 100644 --- a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html +++ b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html @@ -190,7 +190,7 @@ } }); - //多图片上传 + //图片上传 upload.render({ elem: '#test2' ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsList.html b/src/main/resources/templates/febs/views/modules/goods/goodsList.html index e9f4442..37fc4b6 100644 --- a/src/main/resources/templates/febs/views/modules/goods/goodsList.html +++ b/src/main/resources/templates/febs/views/modules/goods/goodsList.html @@ -99,10 +99,10 @@ }); } if (layEvent === 'goodsUpdate') { - febs.modal.open('编辑', 'modules/goods/goodsUpdate/' + data.id, { + febs.modal.open('编辑', 'modules/goods/goodsUpdateNew/' + data.id, { btn: ['提交', '取消'], yes: function (index, layero) { - $('#goods-update').find('#submit').trigger('click'); + $('#goods-updatenew').find('#submit').trigger('click'); }, btn2: function () { layer.closeAll(); diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsUpdate.html b/src/main/resources/templates/febs/views/modules/goods/goodsUpdate.html index 5e66e5b..2227a55 100644 --- a/src/main/resources/templates/febs/views/modules/goods/goodsUpdate.html +++ b/src/main/resources/templates/febs/views/modules/goods/goodsUpdate.html @@ -29,13 +29,13 @@ <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">商品名称:</label> <div class="layui-input-block"> - <input type="text" name="goodsName" class="layui-input" readonly> + <input type="text" name="goodsName" class="layui-input" > </div> </div> <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">商品编号:</label> <div class="layui-input-block"> - <input type="text" name="goodsNo" class="layui-input" readonly> + <input type="text" name="goodsNo" class="layui-input" > </div> </div> </div> @@ -43,7 +43,7 @@ <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">所属分类:</label> <div class="layui-input-block"> - <select name="parentId" class="categary-goods-update-category" id="categarySelect" readonly> + <select name="parentId" class="categary-goods-update-category" id="categarySelect" > <option value="">请选择</option> </select> </div> @@ -75,24 +75,61 @@ <input type="text" name="goodsIntrodution" autocomplete="off" class="layui-input" > </div> </div> - <!-- <div class="layui-row layui-col-space10 layui-form-item">--> - <!-- <div class="layui-col-lg6">--> - <!-- <label class="layui-form-label">规格:</label>--> - <!-- <div class="layui-input-block">--> - <!-- <input type="text" name="addMallGoodsSkuDtos" autocomplete="off" class="layui-input" id="attrName">--> - <!-- </div>--> - <!-- </div>--> - <!-- <div class="layui-col-lg6">--> - <!-- <button type="button" class="layui-btn layui-btn-normal layui-btn-xs" id="test3" >添加</button>--> - <!-- </div>--> - <!-- </div>--> + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> + <label class="layui-form-label">规格:</label> + <div class="layui-input-block"> + <input type="text" name="addMallGoodsSkuDtos" autocomplete="off" class="layui-input" id="attrName"> + </div> + </div> + <div class="layui-col-lg6"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs" id="test3" >添加</button> + </div> + </div> <div id="attrWrap"></div> + <div class="layui-form-item"> - <label class="layui-form-label">缩略图链接:</label> + <label class="layui-form-label febs-form-item-require">缩略图:</label> <div class="layui-input-block"> - <img alt="缩略图" data-th-src="${mailGoodsUpdate.thumb}" style="width: 100px"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs" id="test2">上传</button> + <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> + <div class="layui-upload-list" id="demo2"></div> + </blockquote> + </div> </div> </div> + <div class="layui-form-item"> + <label class="layui-form-label">缩略图链接:</label> + <div class="layui-input-block"> + <input type="text" id="thumb" lay-verify="required" name="thumb" autocomplete="off" class="layui-input" readonly> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">轮播图:</label> + <div class="layui-input-block"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs" id="thumbsBanner">上传</button> + <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> + <div class="layui-upload-list" id="thumbsBanners"></div> + </blockquote> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">缩略图链接:</label> + <div class="layui-input-block"> + <input type="text" id="thumbs" lay-verify="required" name="thumbs" autocomplete="off" class="layui-input" readonly> + </div> + </div> + +<!-- <div class="layui-form-item">--> +<!-- <label class="layui-form-label">缩略图链接:</label>--> +<!-- <div class="layui-input-block">--> +<!-- <img alt="缩略图" data-th-src="${mailGoodsUpdate.thumb}" style="width: 100px">--> +<!-- </div>--> +<!-- </div>--> <div class="layui-form-item"> <label class="layui-form-label">商品详情:</label> <div class="layui-input-block"> @@ -108,23 +145,27 @@ </div> </div> </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="goods-update-form-submit" id="submit"></button> + </div> </form> </div> <script data-th-inline="javascript"> - layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','layedit'], function () { - var $ = layui.$, + layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','dropdown', 'laydate','layedit','upload'], function () { + var $ = layui.jquery, febs = layui.febs, layer = layui.layer, formSelects = layui.formSelects, treeSelect = layui.treeSelect, form = layui.form, + laydate = layui.laydate, eleTree = layui.eleTree, mailGoodsUpdate = [[${mailGoodsUpdate}]], - $view = $('#goods-update'), - validate = layui.validate, + $view = $('#goods-add'), layedit = layui.layedit, - _deptTree; + upload = layui.upload, + validate = layui.validate; form.render(); @@ -139,6 +180,50 @@ $("#categarySelect").val(mailGoodsUpdate.categoryId) form.render(); }); + }); + + //多图片上传 + upload.render({ + elem: '#thumbsBanner' + ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + ,multiple: true + ,before: function(obj){ + //预读本地文件示例,不支持ie8 + obj.preview(function(index, file, result){ + $('#thumbsBanners').append('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img" style="width: 100px">') + }); + } + ,done: function(res){ + var thumbs = $("#thumbs").val(); + if(thumbs == ''){ + $("#thumbs").val(res.data.src); + }else{ + $("#thumbs").val(thumbs + ',' + res.data.src); + } + // alert($("#thumb").val()); + } + }); + + //图片上传 + upload.render({ + elem: '#test2' + ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + ,multiple: true + ,before: function(obj){ + //预读本地文件示例,不支持ie8 + obj.preview(function(index, file, result){ + $('#demo2').append('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img" style="width: 100px">') + }); + } + ,done: function(res){ + // var thumbs = $("#thumb").val(); + // if(thumbs == ''){ + $("#thumb").val(res.data.src); + // }else{ + // $("#thumb").val(thumbs + ',' + res.data.src); + // } + // alert($("#thumb").val()); + } }); layedit.set({ //设置图片接口 @@ -175,32 +260,32 @@ <div class="layui-input-block layui-form-item item"> <div style="float:left" > <div> - <input type="text" class="layui-input" value="` + attrNameVal + `" readonly > + <input type="text" class="layui-input" value="` + attrNameVal + `" > </div> </div> <div style="float:left" > <div> - <img class="layui-upload-img" src="` + skuImage + `" style="width: 100px" readonly> + <img class="layui-upload-img" src="` + skuImage + `" style="width: 100px" > </div> </div> <div style="float:left" > <div> - <input type="text" value="` + stockVal + `" placeholder="库存" autocomplete="off" class="layui-input" readonly> + <input type="text" value="` + stockVal + `" placeholder="库存" autocomplete="off" class="layui-input" > </div> </div> <div style="float:left" > <div> - <input type="text" value="` + skuVolume + `" placeholder="销售数量" autocomplete="off" class="layui-input" readonly> + <input type="text" value="` + skuVolume + `" placeholder="销售数量" autocomplete="off" class="layui-input" > </div> </div> <div style="float:left" > <div> - <input type="text" value="` + originalPrice + `" placeholder="原价" autocomplete="off" class="layui-input" readonly> + <input type="text" value="` + originalPrice + `" placeholder="原价" autocomplete="off" class="layui-input" > </div> </div> <div style="float:left" > <div> - <input type="text" value="` + presentPrice + `" placeholder="现价" autocomplete="off" class="layui-input" readonly> + <input type="text" value="` + presentPrice + `" placeholder="现价" autocomplete="off" class="layui-input" > </div> </div> </div> @@ -214,12 +299,25 @@ for(var skuIndex = 0; skuIndex < skuLength; skuIndex++){ appendSku(mailGoodsUpdate.mailGoodsSkuDetailVo[skuIndex],skuIndex); } + //缩略图图片回显 + if(mailGoodsUpdate.thumb != null || mailGoodsUpdate.thumb != ''){ + $('#demo2').append('<img src="'+ mailGoodsUpdate.thumb +'" class="layui-upload-img" style="width: 100px">') + $("#thumb").val(mailGoodsUpdate.thumb); + } + var imagesInitIndex = 0; + let imagesInitIndexlength = mailGoodsUpdate.mailGoodsImagesVo.length; + for(var imagesInitIndex = 0; imagesInitIndex < imagesInitIndexlength; imagesInitIndex++){ + console.log(mailGoodsUpdate.mailGoodsImagesVo); + $('#thumbsBanners').append('<img src="'+ mailGoodsUpdate.mailGoodsImagesVo[imagesInitIndex] +'" class="layui-upload-img" style="width: 100px">') + $("#thumbs").val(mailGoodsUpdate.mailGoodsImagesVo[imagesInitIndex] + ','); + } form.val("goods-update-form", { "id": mailGoodsUpdate.id, "goodsNo": mailGoodsUpdate.goodsNo, "categoryId": mailGoodsUpdate.categoryId, "mailGoodsSkuDetailVo": mailGoodsUpdate.mailGoodsSkuDetailVo, + "mailGoodsImagesVo": mailGoodsUpdate.mailGoodsImagesVo, "unit": mailGoodsUpdate.unit, "originalPrice": mailGoodsUpdate.originalPrice, "presentPrice": mailGoodsUpdate.presentPrice, @@ -227,8 +325,133 @@ "thumb": mailGoodsUpdate.thumb, "goodsDetails": mailGoodsUpdate.goodsDetails, "isHot": mailGoodsUpdate.isHot, + "isHot": mailGoodsUpdate.isHot, "goodsName": mailGoodsUpdate.goodsName }); } + + $('#test3').on('click', function (){ + var index = $("#attrWrap").children().length; + let attrNameVal = $('#attrName').val(); + if(attrNameVal==null || attrNameVal==""){ + febs.alert.warn('样式名称不能为空'); + return false; + } + $('#attrWrap').append(` + <div class="layui-form-item item"> + <div style="float:left" > + <input type="text" name="styleName` + index + `" value="` + $('#attrName').val() + `" autocomplete="off" class="layui-input" readonly > + </div> + <div style="float:left" > + <div> + <input type="text" name="skuName` + index +`" placeholder="规格名称" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <label class="layui-form-label">图片:</label> + <div class="layui-input-block"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs sku-img" id="skuImg` + index + `">上传</button> + <img class="layui-upload-img" id="imageUrls` + index + `" style="width: 100px" > + </div> + </div> + </div> + <div style="float:left" class="febs-hide"> + <div> + <input type="text" id="skuImage` + index +`" name="skuImage` + index + `" autocomplete="off" class="layui-input"> + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="stock` + index +`" placeholder="库存" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="skuVolume` + index +`" placeholder="销售数量" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="originalPrice` + index +`" placeholder="原价" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="presentPrice` + index + `" placeholder="现价" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <button type="button" class="layui-btn del-attr-btn" data-index="` + index +`">删除</button> + </div> + </div> + `) + //普通图片上传 + upload.render({ + elem: '#skuImg' + index + ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + ,done: function(res){ + febs.alert.success(res.data.src); + $('#imageUrls' + index).attr('src', res.data.src); + $('#skuImage'+ index).val(res.data.src); + } + }); + }); + upload.render({ + elem: '#skuImg'+index + ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + ,done: function(res){ + febs.alert.success(res.data.src); + $('#imageUrls' + index).attr('src', res.data.src); + $('#skuImage'+ index).val(res.data.src); + } + }); + $("#attrWrap").on("click",".del-attr-btn",function(){ + var index = $(this).attr('data-index') + $($("#attrWrap").find(".item")[index].remove()); + }); + form.on('submit(goods-add-form-submit)', function (data) { + let skuArrs = []; + var skuArr = $("#attrWrap").find(".item"); + for(var i = 0;i < skuArr.length;i++){ + skuArrs.push({ + styleName: $("input[name='styleName" + i + "']").val(), + skuName: $("input[name='skuName" + i + "']").val(), + skuImage: $("input[name='skuImage" + i + "']").val(), + stock: $("input[name='stock" + i + "']").val(), + skuVolume: $("input[name='skuVolume" + i + "']").val(), + originalPrice:$("input[name='originalPrice" + i + "']").val(), + presentPrice: $("input[name='presentPrice" + i + "']").val() + }) + } + // if(skuArr.length < 0){ + // febs.alert.warn("请填写商品规格"); + // return false; + // } + // console.log(skuArrs) + data.field.addMallGoodsSkuDtos = skuArrs; + // console.log(data.field) + $.ajax({ + 'url':ctx + 'admin/goods/addMallGoods', + 'type':'post', + 'dataType':'json', + 'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式 + 'traditional': true,//ajax传递数组必须添加属性 + 'data':JSON.stringify(data.field), + 'success':function (data) { + if(data.code==0){ + febs.alert.success(data.message); + var index = parent.layer.getFrameIndex(window.name); + parent.layer.close(index); + }else{ + febs.alert.warn(data.message); + } + }, + 'error':function () { + febs.alert.warn('服务器繁忙'); + } + }) + return false; + }); }); </script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html new file mode 100644 index 0000000..0a8ff59 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html @@ -0,0 +1,521 @@ +<style> + #goods-updatenew { + padding: 20px 25px 25px 0; + } + + #goods-updatenew .layui-treeSelect .ztree li a, .ztree li span { + margin: 0 0 2px 3px !important; + } + #goods-updatenew #data-permission-tree-block { + border: 1px solid #eee; + border-radius: 2px; + padding: 3px 0; + } + #user-add .layui-treeSelect .ztree li span.button.switch { + top: 1px; + left: 3px; + } + +</style> +<div class="layui-fluid" id="goods-updatenew"> + <form class="layui-form" action="" lay-filter="goods-updatenew-form"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">id:</label> + <div class="layui-input-block"> + <input type="text" name="id"> + </div> + </div> + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">商品名称:</label> + <div class="layui-input-block"> + <input type="text" name="goodsName" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">商品编号:</label> + <div class="layui-input-block"> + <input type="text" name="goodsNo" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">所属分类:</label> + <div class="layui-input-block"> + <select name="categoryId" class="categary-goods-updatenew-category" id="goodsUpdateSelect" > + <option value="">请选择</option> + </select> + </div> + </div> + <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">单位:</label> + <div class="layui-input-block"> + <input type="text" name="unit" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">原价:</label> + <div class="layui-input-block"> + <input type="text" name="originalPrice" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">现价:</label> + <div class="layui-input-block"> + <input type="text" name="presentPrice" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">商品介绍:</label> + <div class="layui-input-block"> + <input type="text" name="goodsIntrodution" autocomplete="off" class="layui-input" > + </div> + </div> + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">样式:</label> + <div class="layui-input-block"> + <input type="text" name="addMallGoodsSkuDtos" autocomplete="off" class="layui-input" id="attrName"> + </div> + </div> + <div class="layui-col-lg6"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs" id="test3" >添加</button> + </div> + </div> + <div id="attrWrap"></div> + + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">缩略图:</label> + <div class="layui-input-block"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs" id="test2">上传</button> + <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> + <div class="layui-upload-list" id="demo2"></div> + </blockquote> + </div> + </div> + </div> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label">缩略图链接:</label> + <div class="layui-input-block"> + <input type="text" id="thumb" lay-verify="required" name="thumb" autocomplete="off" class="layui-input" readonly> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">轮播图:</label> + <div class="layui-input-block"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs" id="thumbsBanner">上传</button> + <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> + <div class="layui-upload-list" id="thumbsBanners"></div> + </blockquote> + </div> + </div> + </div> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label">缩略图链接:</label> + <div class="layui-input-block"> + <input type="text" id="thumbs" lay-verify="required" name="thumbs" autocomplete="off" class="layui-input" readonly> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">商品详情:</label> + <div class="layui-input-block"> + <textarea id="lay_edit" lay-verify="goodsDetails" name = "goodsDetails" class="layui-textarea">[[${mailGoodsUpdate.goodsDetails}]]</textarea> + </div> + </div> + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> + <label class="layui-form-label">是否热卖:</label> + <div class="layui-input-block"> + <input type="radio" name="isHot" value="1" title="是" > + <input type="radio" name="isHot" value="2" title="否" checked=""> + </div> + </div> + </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="goods-update-form-submit" id="submit"></button> + </div> +<!-- <div class="layui-form-item">--> +<!-- <div class="layui-form-item" style="text-align:center">--> +<!-- <button class="layui-btn" lay-submit="" lay-filter="goods-update-form-submit" id="submit">保存</button>--> +<!-- </div>--> +<!-- </div>--> + </form> +</div> + +<script data-th-inline="javascript"> + layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','dropdown', 'laydate','layedit','upload'], function () { + var $ = layui.jquery, + febs = layui.febs, + layer = layui.layer, + formSelects = layui.formSelects, + treeSelect = layui.treeSelect, + form = layui.form, + laydate = layui.laydate, + eleTree = layui.eleTree, + mailGoodsUpdate = [[${mailGoodsUpdate}]], + $view = $('#goods-add'), + layedit = layui.layedit, + upload = layui.upload, + validate = layui.validate; + + form.render(); + + //(下拉框) + $.get(ctx + 'admin/goodsCategory/categorys/allTree', function (data) { + for (var k in data) + { + $(".categary-goods-updatenew-category").append("<option value='" + data[k].parentId + "'>" + data[k].name + "</option>"); + } + layui.use('form', function () { + var form = layui.form; + $("#goodsUpdateSelect").val(mailGoodsUpdate.categoryId) + form.render(); + }); + }); + + //多图片上传 + upload.render({ + elem: '#thumbsBanner' + ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + ,multiple: true + ,before: function(obj){ + //预读本地文件示例,不支持ie8 + obj.preview(function(index, file, result){ + $('#thumbsBanners').append('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img" style="width: 100px">') + }); + } + ,done: function(res){ + var thumbs = $("#thumbs").val(); + if(thumbs == ''){ + $("#thumbs").val(res.data.src); + }else{ + $("#thumbs").val(thumbs + ',' + res.data.src); + } + // alert($("#thumb").val()); + } + }); + + //图片上传 + upload.render({ + elem: '#test2' + ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + ,multiple: true + ,before: function(obj){ + //预读本地文件示例,不支持ie8 + obj.preview(function(index, file, result){ + $('#demo2').append('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img" style="width: 100px">') + }); + } + ,done: function(res){ + // var thumbs = $("#thumb").val(); + // if(thumbs == ''){ + $("#thumb").val(res.data.src); + // }else{ + // $("#thumb").val(thumbs + ',' + res.data.src); + // } + // alert($("#thumb").val()); + } + }); + + layedit.set({ //设置图片接口 + uploadImage: { + url: 'admin/goods/uploadFileBase64', //接口url + type: 'post', + } + }); + //创建一个编辑器 + var index = layedit.build('lay_edit',{ + height: 300 + }); + //提交时把值同步到文本域中 + form.verify({ + //content富文本域中的lay-verify值 + goodsDetails: function(value) { + return layedit.sync(index); + } + }); + + initUserValue(); + + function appendSku(sku,skuIndex){ + var index = skuIndex; + let attrNameVal = sku.skuName; + let styleName = sku.styleName; + let styleId = sku.styleId; + let skuId = sku.id; + let stockVal = sku.stock; + let skuVolume = sku.skuVolume; + let originalPrice = sku.originalPrice; + let presentPrice = sku.presentPrice; + let skuImage = sku.skuImage; + $('#attrWrap').append(` + <div class="layui-form-item item"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">id:</label> + <div class="layui-input-block"> + <input type="text" name="id` + index + `" value="` + skuId + `"> + </div> + </div> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">id:</label> + <div class="layui-input-block"> + <input type="text" name="delLog` + index + `"> + </div> + </div> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">styleId:</label> + <div class="layui-input-block"> + <input type="text" id="styleId` + index +`" name="styleId` + index + `" value="` + styleId + `"> + </div> + </div> + <div style="float:left" > + <input type="text" name="styleName` + index + `" value="` + styleName + `" autocomplete="off" class="layui-input" readonly > + </div> + <div style="float:left" > + <div> + <input type="text" name="skuName` + index +`" value="` + attrNameVal + `" placeholder="规格名称" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <label class="layui-form-label">图片:</label> + <div class="layui-input-block"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs sku-img" id="skuImg` + index + `">上传</button> + <img class="layui-upload-img" src="` + skuImage + `" id="imageUrls` + index + `" style="width: 100px" > + </div> + </div> + </div> + <div style="float:left" class="febs-hide"> + <div> + <input type="text" id="skuImage` + index +`" value="` + skuImage + `" name="skuImage` + index + `" autocomplete="off" class="layui-input"> + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="stock` + index +`" value="` + stockVal + `" placeholder="库存" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="skuVolume` + index +`" value="` + skuVolume + `" placeholder="销售数量" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="originalPrice` + index +`" value="` + originalPrice + `" placeholder="原价" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="presentPrice` + index + `" value="` + presentPrice + `" placeholder="现价" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <button type="button" class="layui-btn del-attr-btn" data-index="` + index +`">删除</button> + </div> + </div> + `) + //普通图片上传 + upload.render({ + elem: '#skuImg' + index + ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + ,done: function(res){ + febs.alert.success(res.data.src); + $('#imageUrls' + index).attr('src', res.data.src); + $('#skuImage'+ index).val(res.data.src); + } + }); + } + + function initUserValue() { + var skuIndex = 0; + let skuLength = mailGoodsUpdate.mailGoodsSkuDetailVo.length; + for(var skuIndex = 0; skuIndex < skuLength; skuIndex++){ + appendSku(mailGoodsUpdate.mailGoodsSkuDetailVo[skuIndex],skuIndex); + } + //缩略图图片回显 + if(mailGoodsUpdate.thumb != null || mailGoodsUpdate.thumb != ''){ + $('#demo2').append('<img src="'+ mailGoodsUpdate.thumb +'" class="layui-upload-img" style="width: 100px">') + $("#thumb").val(mailGoodsUpdate.thumb); + } + var imagesInitIndex = 0; + let imagesInitIndexlength = mailGoodsUpdate.mailGoodsImagesVo.length; + for(var imagesInitIndex = 0; imagesInitIndex < imagesInitIndexlength; imagesInitIndex++){ + console.log(mailGoodsUpdate.mailGoodsImagesVo); + $('#thumbsBanners').append('<img src="'+ mailGoodsUpdate.mailGoodsImagesVo[imagesInitIndex] +'" class="layui-upload-img" style="width: 100px">') + $("#thumbs").val(mailGoodsUpdate.mailGoodsImagesVo[imagesInitIndex] + ','); + } + + form.val("goods-updatenew-form", { + "id": mailGoodsUpdate.id, + "goodsNo": mailGoodsUpdate.goodsNo, + "categoryId": mailGoodsUpdate.categoryId, + "mailGoodsSkuDetailVo": mailGoodsUpdate.mailGoodsSkuDetailVo, + "mailGoodsImagesVo": mailGoodsUpdate.mailGoodsImagesVo, + "unit": mailGoodsUpdate.unit, + "originalPrice": mailGoodsUpdate.originalPrice, + "presentPrice": mailGoodsUpdate.presentPrice, + "goodsIntrodution": mailGoodsUpdate.goodsIntrodution, + "thumb": mailGoodsUpdate.thumb, + "goodsDetails": mailGoodsUpdate.goodsDetails, + "isHot": mailGoodsUpdate.isHot, + "isHot": mailGoodsUpdate.isHot, + "goodsName": mailGoodsUpdate.goodsName + }); + } + + $('#test3').on('click', function (){ + var index = $("#attrWrap").children().length; + let attrNameVal = $('#attrName').val(); + if(attrNameVal==null || attrNameVal==""){ + febs.alert.warn('样式名称不能为空'); + return false; + } + $('#attrWrap').append(` + <div class="layui-form-item item"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">id:</label> + <div class="layui-input-block"> + <input type="text" name="id` + index + `"> + </div> + </div> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">styleId:</label> + <div class="layui-input-block"> + <input type="text" id="styleId` + index +`" name="styleId` + index + `"> + </div> + </div> + <div style="float:left" > + <input type="text" name="styleName` + index + `" value="` + $('#attrName').val() + `" autocomplete="off" class="layui-input" readonly > + </div> + <div style="float:left" > + <div> + <input type="text" name="skuName` + index +`" placeholder="规格名称" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <label class="layui-form-label">图片:</label> + <div class="layui-input-block"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs sku-img" id="skuImg` + index + `">上传</button> + <img class="layui-upload-img" id="imageUrls` + index + `" style="width: 100px" > + </div> + </div> + </div> + <div style="float:left" class="febs-hide"> + <div> + <input type="text" id="skuImage` + index +`" name="skuImage` + index + `" autocomplete="off" class="layui-input"> + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="stock` + index +`" placeholder="库存" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="skuVolume` + index +`" placeholder="销售数量" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="originalPrice` + index +`" placeholder="原价" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <div> + <input type="number" name="presentPrice` + index + `" placeholder="现价" autocomplete="off" class="layui-input" > + </div> + </div> + <div style="float:left" > + <button type="button" class="layui-btn del-attr-btn" data-index="` + index +`">删除</button> + </div> + </div> + `) + //普通图片上传 + upload.render({ + elem: '#skuImg' + index + ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + ,done: function(res){ + febs.alert.success(res.data.src); + $('#imageUrls' + index).attr('src', res.data.src); + $('#skuImage'+ index).val(res.data.src); + } + }); + }); + upload.render({ + elem: '#skuImg'+index + ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + ,done: function(res){ + febs.alert.success(res.data.src); + $('#imageUrls' + index).attr('src', res.data.src); + $('#skuImage'+ index).val(res.data.src); + } + }); + $("#attrWrap").on("click",".del-attr-btn",function(){ + var index = $(this).attr('data-index') + if($("input[name='styleId" + index + "']").val() ==null || $("input[name='styleId" + index + "']").val() ==''){ + $($("#attrWrap").find(".item")[index].remove()); + }else{ + $("input[name='delLog" + index + "']").val("delLog"); + $($("#attrWrap").find(".item")[index].style.display = "none"); + } + }); + form.on('submit(goods-update-form-submit)', function (data) { + let skuArrs = []; + var skuArr = $("#attrWrap").find(".item"); + for(var i = 0;i < skuArr.length;i++){ + skuArrs.push({ + id: $("input[name='id" + i + "']").val(), + styleName: $("input[name='styleName" + i + "']").val(), + styleId: $("input[name='styleId" + i + "']").val(), + delLog: $("input[name='delLog" + i + "']").val(), + skuName: $("input[name='skuName" + i + "']").val(), + skuImage: $("input[name='skuImage" + i + "']").val(), + stock: $("input[name='stock" + i + "']").val(), + skuVolume: $("input[name='skuVolume" + i + "']").val(), + originalPrice:$("input[name='originalPrice" + i + "']").val(), + presentPrice: $("input[name='presentPrice" + i + "']").val() + }) + } + // if(skuArr.length < 0){ + // febs.alert.warn("请填写商品规格"); + // return false; + // } + // console.log(skuArrs) + data.field.mailGoodsSkuDto = skuArrs; + console.log(data.field) + $.ajax({ + 'url':ctx + 'admin/goods/updateMallGoods', + 'type':'post', + 'dataType':'json', + 'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式 + 'traditional': true,//ajax传递数组必须添加属性 + 'data':JSON.stringify(data.field), + 'success':function (data) { + if(data.code==0){ + layer.closeAll(); + febs.alert.success('操作成功'); + // var index = parent.layer.getFrameIndex(window.name); + // parent.layer.close(index); + // febs.alert.success('操作成功'); + $('#febs-goods').find('#reset').click(); + }else{ + febs.alert.warn(data.message); + } + }, + 'error':function () { + febs.alert.warn('服务器繁忙'); + } + }) + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html index 4a75d57..ace7df4 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html @@ -130,6 +130,7 @@ return '' } }, minWidth: 80,align:'center'}, + {field: 'orderNo', title: '订单编号', minWidth: 150,align:'left'}, {field: 'createdTime', title: '创建时间', minWidth: 180,align:'center'} ]] }); diff --git a/src/main/resources/templates/febs/views/modules/order/orderList.html b/src/main/resources/templates/febs/views/modules/order/orderList.html index dd902cb..6de219c 100644 --- a/src/main/resources/templates/febs/views/modules/order/orderList.html +++ b/src/main/resources/templates/febs/views/modules/order/orderList.html @@ -206,22 +206,22 @@ }, minWidth: 80,align:'center'}, {title: '操作', templet: function (d) { - if(d.payMethod === '支付宝支付' || d.payMethod === '微信支付'){ - if (d.status === 2) { - return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="deliverGoods" shiro:hasPermission="user:update">发货</button>' - +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="cancelOrder" shiro:hasPermission="user:update">取消订单</button>' - +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' - }else{ - return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' - } - }else{ + // if(d.payMethod === '支付宝支付' || d.payMethod === '微信支付'){ + // if (d.status === 2) { + // return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="deliverGoods" shiro:hasPermission="user:update">发货</button>' + // +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="cancelOrder" shiro:hasPermission="user:update">取消订单</button>' + // +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' + // }else{ + // return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' + // } + // }else{ if (d.status === 2) { return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="deliverGoods" shiro:hasPermission="user:update">发货</button>' +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' }else{ return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' } - } + // } },minWidth: 300,align:'center'} ]] }); -- Gitblit v1.9.1