feat(clothes): 新增多图案和图案位置功能
- 新增 ApiClothesLocationRemarkVo 和 ApiClothesPatternRemarkVo 类用于表示图案位置和图案信息
- 在 ApiMyDraftSaveDto 中添加 patternList 和 locationList 字段,支持多图案和图案位置选择- 修改 ApiClothesService 和 ApiClothesServiceImpl,增加对多图案和图案位置的支持
- 更新 ApiSocialMuseVo 和 ApiMyDraftVo,增加图案列表和位置列表的展示
- 新增 ClothesLocationRemark 实体类,用于保存图案位置备注信息
21 files modified
16 files added
New file |
| | |
| | | package cc.mrbird.febs.common.enumerates; |
| | | |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * |
| | | **/ |
| | | @Getter |
| | | public enum SocialPatternLocationTypeEnum { |
| | | |
| | | /** |
| | | * 类型 1-订单 2-草稿 3-灵感 |
| | | */ |
| | | |
| | | MUSE(3), |
| | | DRAFT(2), |
| | | ORDER(1) |
| | | |
| | | ; |
| | | |
| | | private final int value; |
| | | |
| | | SocialPatternLocationTypeEnum(int value) { |
| | | this.value = value; |
| | | } |
| | | } |
| | |
| | | */ |
| | | |
| | | COMMENT(2), |
| | | SOCIAL(1), |
| | | SOCIAL(1) |
| | | |
| | | ; |
| | | |
| | |
| | | */ |
| | | |
| | | COLLECT(2), |
| | | LIKE(1), |
| | | LIKE(1) |
| | | |
| | | ; |
| | | |
| | |
| | | return clothesService.statureInfo(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "身材数据-详情", notes = "身材数据-详情") |
| | | @ApiOperation(value = "身材数据-保存", notes = "身材数据-保存") |
| | | @PostMapping(value = "/statureUpdate") |
| | | public FebsResponse statureUpdate(@RequestBody @Validated ApiClothesMemberStatureUpdateDto dto) { |
| | | |
| | | return clothesService.statureUpdate(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "身材数据-设置默认", notes = "身材数据-设置默认") |
| | | @PostMapping(value = "/statureUpdateState") |
| | | public FebsResponse statureUpdateState(@RequestBody @Validated ApiClothesMemberStatureUpdateStateDto dto) { |
| | | |
| | | return clothesService.statureUpdateState(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "身材数据-删除", notes = "身材数据-删除") |
| | | @PostMapping(value = "/statureDel") |
| | | public FebsResponse statureDel(@RequestBody @Validated ApiClothesMemberStatureInfoDto dto) { |
| | |
| | | |
| | | import cc.mrbird.febs.common.controller.BaseController; |
| | | import cc.mrbird.febs.common.entity.FebsConstant; |
| | | import cc.mrbird.febs.common.enumerates.SocialPatternLocationTypeEnum; |
| | | import cc.mrbird.febs.common.utils.FebsUtil; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | |
| | | import cc.mrbird.febs.mall.vo.AdminLabelSetVo; |
| | | import cc.mrbird.febs.mall.vo.AdminMallOrderVo; |
| | | import cc.mrbird.febs.mall.vo.clothes.AdminClothesDeliverGoodsVo; |
| | | import cc.mrbird.febs.mall.vo.clothes.AdminClothesLocationRemarkVo; |
| | | import cc.mrbird.febs.mall.vo.clothes.AdminClothesPatternRemarkVo; |
| | | import cc.mrbird.febs.mall.vo.clothes.AdminClothesTypeInfoVo; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | |
| | | private final ClothesSocialMuseMapper clothesSocialMuseMapper; |
| | | private final ClothesSocialFileMapper clothesSocialFileMapper; |
| | | private final MallExpressInfoMapper mallExpressInfoMapper; |
| | | private final ClothesPatternRemarkMapper clothesPatternRemarkMapper; |
| | | private final ClothesLocationRemarkMapper clothesLocationRemarkMapper; |
| | | |
| | | /** |
| | | * 社区分类列表 |
| | |
| | | .last("LIMIT 1") |
| | | ); |
| | | |
| | | String patternRemark = clothesSocialMuse.getPatternRemark(); |
| | | if(StrUtil.isNotBlank(patternRemark)){ |
| | | JSON parse = JSONUtil.parse(patternRemark); |
| | | clothesSocialMuse.setPatternText(parse.getByPath("text", String.class)); |
| | | clothesSocialMuse.setPatternImage(parse.getByPath("file", String.class)); |
| | | List<AdminClothesPatternRemarkVo> patternData = new ArrayList<>(); |
| | | List<ClothesPatternRemark> patternRemarks = clothesPatternRemarkMapper.selectList( |
| | | Wrappers.lambdaQuery(ClothesPatternRemark.class) |
| | | .eq(ClothesPatternRemark::getSourceId, clothesSocialMuse.getId()) |
| | | .eq(ClothesPatternRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(patternRemarks)){ |
| | | for (ClothesPatternRemark entity : patternRemarks){ |
| | | AdminClothesPatternRemarkVo vo = new AdminClothesPatternRemarkVo(); |
| | | vo.setPatternId(entity.getPatternId()); |
| | | ClothesPattern clothesPattern = clothesPatternMapper.selectById(entity.getPatternId()); |
| | | vo.setPatternName(clothesPattern.getName()); |
| | | JSON parse = JSONUtil.parse(entity.getRemark()); |
| | | vo.setPatternText(parse.getByPath("text", String.class)); |
| | | vo.setSkuPatternImage(parse.getByPath("file", String.class)); |
| | | patternData.add(vo); |
| | | } |
| | | clothesSocialMuse.setPatternData(patternData); |
| | | } |
| | | List<AdminClothesLocationRemarkVo> locationData = new ArrayList<>(); |
| | | List<ClothesLocationRemark> locationRemarks = clothesLocationRemarkMapper.selectList( |
| | | Wrappers.lambdaQuery(ClothesLocationRemark.class) |
| | | .eq(ClothesLocationRemark::getSourceId, clothesSocialMuse.getId()) |
| | | .eq(ClothesLocationRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(locationRemarks)){ |
| | | for (ClothesLocationRemark entity : locationRemarks){ |
| | | AdminClothesLocationRemarkVo vo = new AdminClothesLocationRemarkVo(); |
| | | vo.setLocationId(entity.getLocationId()); |
| | | ClothesLocation clothesLocation = clothesLocationMapper.selectById(entity.getLocationId()); |
| | | vo.setLocationName(clothesLocation.getName()); |
| | | JSON parse = JSONUtil.parse(entity.getRemark()); |
| | | vo.setLocationText(parse.getByPath("text", String.class)); |
| | | vo.setSkuLocationImage(parse.getByPath("file", String.class)); |
| | | locationData.add(vo); |
| | | } |
| | | clothesSocialMuse.setLocationData(locationData); |
| | | } |
| | | |
| | | model.addAttribute("socialMuse", clothesSocialMuse); |
| | | |
| | | return FebsUtil.view("modules/clothesType/socialMuseUpdate"); |
New file |
| | |
| | | package cc.mrbird.febs.mall.dto.clothes; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiClothesMemberStatureUpdateStateDto", description = "参数") |
| | | public class ApiClothesMemberStatureUpdateStateDto { |
| | | |
| | | @NotNull(message = "身材不能为空") |
| | | @ApiModelProperty(value = "ID") |
| | | private Long id; |
| | | |
| | | @NotNull(message = "是否默认不能为空") |
| | | @ApiModelProperty(value = "是否默认 0-否 1-是") |
| | | private Integer state; |
| | | } |
| | |
| | | private Integer cnt; |
| | | |
| | | @NotNull(message = "参数不能为空") |
| | | @ApiModelProperty(value = "类型 1图案 2图案位置 3工艺 4布料 5尺码 6尺码自定义", example = "2") |
| | | @ApiModelProperty(value = "类型 1正面图案 2反面图案 3工艺 4布料 5尺码 6尺码自定义", example = "2") |
| | | private Integer type; |
| | | |
| | | @ApiModelProperty(value = "自定义图案内容", example = "2") |
New file |
| | |
| | | package cc.mrbird.febs.mall.dto.clothes; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiLocationAddDto", description = "") |
| | | public class ApiLocationAddDto { |
| | | |
| | | @ApiModelProperty(value = "反面图案ID") |
| | | private Long locationId; |
| | | |
| | | @ApiModelProperty(value = "自定义内容") |
| | | private String patternRemark; |
| | | } |
| | |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotNull; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiMyDraftSaveDto", description = "参数") |
| | |
| | | @ApiModelProperty(value = "尺码ID") |
| | | private Long sizeId; |
| | | |
| | | @ApiModelProperty(value = "正面图案") |
| | | private List<ApiPatternAddDto> patternList; |
| | | @ApiModelProperty(value = "反面图案") |
| | | private List<ApiLocationAddDto> locationList; |
| | | |
| | | |
| | | @NotNull(message = "图案不能为空") |
| | | @ApiModelProperty(value = "图案ID") |
New file |
| | |
| | | package cc.mrbird.febs.mall.dto.clothes; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiPatternAddDto", description = "") |
| | | public class ApiPatternAddDto { |
| | | |
| | | @ApiModelProperty(value = "正面图案ID") |
| | | private Long patternId; |
| | | |
| | | @ApiModelProperty(value = "自定义内容") |
| | | private String patternRemark; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.entity; |
| | | |
| | | import cc.mrbird.febs.common.entity.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @TableName("clothes_location_remark") |
| | | public class ClothesLocationRemark extends BaseEntity { |
| | | /** |
| | | * |
| | | `member_id` bigint(20) DEFAULT NULL, |
| | | `type` int(11) DEFAULT NULL COMMENT '类型 1-订单 2-草稿 3-灵感', |
| | | `source_id` bigint(20) DEFAULT NULL COMMENT '订单、草稿、灵感ID', |
| | | `location_id` bigint(20) DEFAULT NULL COMMENT '正面ID', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '文字图片内容', |
| | | */ |
| | | private Long memberId; |
| | | private Integer type; |
| | | private Long sourceId; |
| | | private Long locationId; |
| | | private String remark; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.entity; |
| | | |
| | | import cc.mrbird.febs.common.entity.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @TableName("clothes_pattern_remark") |
| | | public class ClothesPatternRemark extends BaseEntity { |
| | | /** |
| | | * |
| | | `member_id` bigint(20) DEFAULT NULL, |
| | | `type` int(11) DEFAULT NULL COMMENT '类型 1-订单 2-草稿 3-灵感', |
| | | `source_id` bigint(20) DEFAULT NULL COMMENT '订单、草稿、灵感ID', |
| | | `pattern_id` bigint(20) DEFAULT NULL COMMENT '正面ID', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '文字图片内容', |
| | | */ |
| | | private Long memberId; |
| | | private Integer type; |
| | | private Long sourceId; |
| | | private Long patternId; |
| | | private String remark; |
| | | } |
| | |
| | | package cc.mrbird.febs.mall.entity; |
| | | |
| | | import cc.mrbird.febs.common.entity.BaseEntity; |
| | | import cc.mrbird.febs.mall.vo.clothes.AdminClothesLocationRemarkVo; |
| | | import cc.mrbird.febs.mall.vo.clothes.AdminClothesPatternRemarkVo; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @TableName("clothes_social_muse") |
| | |
| | | private String patternText; |
| | | @TableField(exist = false) |
| | | private String patternImage; |
| | | @TableField(exist = false) |
| | | private List<AdminClothesPatternRemarkVo> patternData; |
| | | @TableField(exist = false) |
| | | private List<AdminClothesLocationRemarkVo> locationData; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.mapper; |
| | | |
| | | import cc.mrbird.febs.mall.entity.ClothesLocationRemark; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | public interface ClothesLocationRemarkMapper extends BaseMapper<ClothesLocationRemark> { |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.mapper; |
| | | |
| | | import cc.mrbird.febs.mall.entity.ClothesPatternRemark; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | public interface ClothesPatternRemarkMapper extends BaseMapper<ClothesPatternRemark> { |
| | | } |
| | |
| | | |
| | | FebsResponse statureUpdate(ApiClothesMemberStatureUpdateDto dto); |
| | | |
| | | FebsResponse statureUpdateState(ApiClothesMemberStatureUpdateStateDto dto); |
| | | |
| | | FebsResponse statureDel(ApiClothesMemberStatureInfoDto dto); |
| | | |
| | | FebsResponse draftSave(ApiMyDraftSaveDto dto); |
| | |
| | | private final IApiMallMemberWalletService apiMallMemberWalletService; |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | | |
| | | private final ClothesPatternRemarkMapper clothesPatternRemarkMapper; |
| | | private final ClothesLocationRemarkMapper clothesLocationRemarkMapper; |
| | | |
| | | @Override |
| | | public FebsResponse myDraft(ApiMyDraftPageDto dto) { |
| | | |
| | |
| | | record.setStatureName(clothesMemberStature.getName()); |
| | | } |
| | | |
| | | Long patternId = ObjectUtil.defaultIfNull(record.getPatternId(),0L); |
| | | List<ClothesTypePattern> clothesTypePatterns = clothesTypePatternMapper.selectList(Wrappers.<ClothesTypePattern>lambdaQuery().eq(ClothesTypePattern::getTypeId, typeId)); |
| | | if (CollUtil.isNotEmpty(clothesTypePatterns)){ |
| | | Set<Long> patternIds = clothesTypePatterns.stream().map(ClothesTypePattern::getPatternId).collect(Collectors.toSet()); |
| | | if(CollUtil.isNotEmpty( patternIds) && patternIds.contains(patternId)){ |
| | | BigDecimal totalPatternPrice = BigDecimal.ZERO; |
| | | List<ClothesPatternRemark> clothesPatternRemarks = clothesPatternRemarkMapper.selectList( |
| | | Wrappers.lambdaQuery(ClothesPatternRemark.class) |
| | | .eq(ClothesPatternRemark::getSourceId, record.getId()) |
| | | .eq(ClothesPatternRemark::getType, SocialPatternLocationTypeEnum.DRAFT.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(clothesPatternRemarks)){ |
| | | List<ApiClothesPatternInfoVo> vos = new ArrayList<>(); |
| | | for (ClothesPatternRemark entity : clothesPatternRemarks){ |
| | | Long patternId = entity.getPatternId(); |
| | | ApiClothesPatternInfoVo vo = new ApiClothesPatternInfoVo(); |
| | | vo.setPatternId(patternId); |
| | | ClothesPattern clothesPattern = clothesPatternMapper.selectById(patternId); |
| | | if (ObjectUtil.isNotNull(clothesPattern)){ |
| | | record.setPatternName(clothesPattern.getName()); |
| | | record.setPatternPrice(clothesPattern.getPrice()); |
| | | } |
| | | vo.setPatternName(clothesPattern.getName()); |
| | | vo.setPatternPrice(clothesPattern.getPrice()); |
| | | vo.setPatternRemark(entity.getRemark()); |
| | | vos.add(vo); |
| | | |
| | | totalPatternPrice = totalPatternPrice.add(clothesPattern.getPrice()); |
| | | } |
| | | record.setPatternList(vos); |
| | | } |
| | | |
| | | Long locationId = ObjectUtil.defaultIfNull(record.getLocationId(),0L); |
| | | List<ClothesTypeLocation> clothesTypeLocations = clothesTypeLocationMapper.selectList(Wrappers.<ClothesTypeLocation>lambdaQuery().eq(ClothesTypeLocation::getTypeId, typeId)); |
| | | if (CollUtil.isNotEmpty(clothesTypeLocations)){ |
| | | Set<Long> locationIds = clothesTypeLocations.stream().map(ClothesTypeLocation::getLocationId).collect(Collectors.toSet()); |
| | | if(CollUtil.isNotEmpty( locationIds) && locationIds.contains(locationId)){ |
| | | ClothesLocation clothesLocation = clothesLocationMapper.selectById(locationId); |
| | | if (ObjectUtil.isNotNull(clothesLocation)){ |
| | | record.setLocationName(clothesLocation.getName()); |
| | | record.setLocationPrice(clothesLocation.getPrice()); |
| | | } |
| | | BigDecimal totalLocationPrice = BigDecimal.ZERO; |
| | | List<ClothesLocationRemark> clothesLocationRemarks = clothesLocationRemarkMapper.selectList( |
| | | Wrappers.lambdaQuery(ClothesLocationRemark.class) |
| | | .eq(ClothesLocationRemark::getSourceId, record.getId()) |
| | | .eq(ClothesLocationRemark::getType, SocialPatternLocationTypeEnum.DRAFT.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(clothesLocationRemarks)){ |
| | | List<ApiClothesLocationInfoVo> vos = new ArrayList<>(); |
| | | for (ClothesLocationRemark entity : clothesLocationRemarks){ |
| | | Long locationId = entity.getLocationId(); |
| | | ApiClothesLocationInfoVo vo = new ApiClothesLocationInfoVo(); |
| | | vo.setLocationId(locationId); |
| | | ClothesLocation location = clothesLocationMapper.selectById(locationId); |
| | | vo.setLocationName(location.getName()); |
| | | vo.setLocationPrice(location.getPrice()); |
| | | vo.setLocationRemark(entity.getRemark()); |
| | | vos.add(vo); |
| | | |
| | | totalLocationPrice = totalLocationPrice.add(location.getPrice()); |
| | | } |
| | | record.setLocationList(vos); |
| | | } |
| | | |
| | | Long artId = ObjectUtil.defaultIfNull(record.getArtId(),0L); |
| | |
| | | } |
| | | |
| | | BigDecimal amount = |
| | | record.getClothPrice() |
| | | .add(record.getLocationPrice()) |
| | | record.getClothPrice() |
| | | .add(totalPatternPrice) |
| | | .add(record.getArtPrice()) |
| | | .add(record.getSizePrice()) |
| | | .add(record.getPatternPrice()).setScale(2, RoundingMode.DOWN); |
| | | .add(totalLocationPrice).setScale(2, RoundingMode.DOWN); |
| | | record.setAmount(amount); |
| | | } |
| | | } |
| | |
| | | record.setTypeId(typeId); |
| | | record.setTypeName(clothesType.getName()); |
| | | record.setTypeImage(clothesType.getImage()); |
| | | record.setPatternRemark(clothesOrderDraft.getPatternRemark()); |
| | | |
| | | Long sizeId = ObjectUtil.defaultIfNull(clothesOrderDraft.getSizeId(),0L); |
| | | List<ClothesTypeSize> clothesTypeSizes = clothesTypeSizeMapper.selectList(Wrappers.<ClothesTypeSize>lambdaQuery().eq(ClothesTypeSize::getTypeId, typeId)); |
| | |
| | | record.setStatureName(clothesMemberStature.getName()); |
| | | } |
| | | |
| | | Long patternId = ObjectUtil.defaultIfNull(clothesOrderDraft.getPatternId(),0L); |
| | | List<ClothesTypePattern> clothesTypePatterns = clothesTypePatternMapper.selectList(Wrappers.<ClothesTypePattern>lambdaQuery().eq(ClothesTypePattern::getTypeId, typeId)); |
| | | if (CollUtil.isNotEmpty(clothesTypePatterns)){ |
| | | Set<Long> patternIds = clothesTypePatterns.stream().map(ClothesTypePattern::getPatternId).collect(Collectors.toSet()); |
| | | if(CollUtil.isNotEmpty( patternIds) && patternIds.contains(patternId)){ |
| | | BigDecimal totalPatternPrice = BigDecimal.ZERO; |
| | | List<ClothesPatternRemark> clothesPatternRemarks = clothesPatternRemarkMapper.selectList( |
| | | Wrappers.lambdaQuery(ClothesPatternRemark.class) |
| | | .eq(ClothesPatternRemark::getSourceId, record.getId()) |
| | | .eq(ClothesPatternRemark::getType, SocialPatternLocationTypeEnum.DRAFT.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(clothesPatternRemarks)){ |
| | | List<ApiClothesPatternInfoVo> vos = new ArrayList<>(); |
| | | for (ClothesPatternRemark entity : clothesPatternRemarks){ |
| | | Long patternId = entity.getPatternId(); |
| | | ApiClothesPatternInfoVo vo = new ApiClothesPatternInfoVo(); |
| | | vo.setPatternId(patternId); |
| | | ClothesPattern clothesPattern = clothesPatternMapper.selectById(patternId); |
| | | if (ObjectUtil.isNotNull(clothesPattern)){ |
| | | record.setPatternId(patternId); |
| | | record.setPatternName(clothesPattern.getName()); |
| | | record.setPatternPrice(clothesPattern.getPrice()); |
| | | } |
| | | vo.setPatternName(clothesPattern.getName()); |
| | | vo.setPatternPrice(clothesPattern.getPrice()); |
| | | vo.setPatternRemark(entity.getRemark()); |
| | | vos.add(vo); |
| | | |
| | | totalPatternPrice = totalPatternPrice.add(clothesPattern.getPrice()); |
| | | } |
| | | record.setPatternList(vos); |
| | | } |
| | | |
| | | Long locationId = ObjectUtil.defaultIfNull(clothesOrderDraft.getLocationId(),0L); |
| | | List<ClothesTypeLocation> clothesTypeLocations = clothesTypeLocationMapper.selectList(Wrappers.<ClothesTypeLocation>lambdaQuery().eq(ClothesTypeLocation::getTypeId, typeId)); |
| | | if (CollUtil.isNotEmpty(clothesTypeLocations)){ |
| | | Set<Long> locationIds = clothesTypeLocations.stream().map(ClothesTypeLocation::getLocationId).collect(Collectors.toSet()); |
| | | if(CollUtil.isNotEmpty( locationIds) && locationIds.contains(locationId)){ |
| | | ClothesLocation clothesLocation = clothesLocationMapper.selectById(locationId); |
| | | if (ObjectUtil.isNotNull(clothesLocation)){ |
| | | record.setLocationId(locationId); |
| | | record.setLocationName(clothesLocation.getName()); |
| | | record.setLocationPrice(clothesLocation.getPrice()); |
| | | } |
| | | BigDecimal totalLocationPrice = BigDecimal.ZERO; |
| | | List<ClothesLocationRemark> clothesLocationRemarks = clothesLocationRemarkMapper.selectList( |
| | | Wrappers.lambdaQuery(ClothesLocationRemark.class) |
| | | .eq(ClothesLocationRemark::getSourceId, record.getId()) |
| | | .eq(ClothesLocationRemark::getType, SocialPatternLocationTypeEnum.DRAFT.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(clothesLocationRemarks)){ |
| | | List<ApiClothesLocationInfoVo> vos = new ArrayList<>(); |
| | | for (ClothesLocationRemark entity : clothesLocationRemarks){ |
| | | Long locationId = entity.getLocationId(); |
| | | ApiClothesLocationInfoVo vo = new ApiClothesLocationInfoVo(); |
| | | vo.setLocationId(locationId); |
| | | ClothesLocation location = clothesLocationMapper.selectById(locationId); |
| | | vo.setLocationName(location.getName()); |
| | | vo.setLocationPrice(location.getPrice()); |
| | | vo.setLocationRemark(entity.getRemark()); |
| | | vos.add(vo); |
| | | |
| | | totalLocationPrice = totalLocationPrice.add(location.getPrice()); |
| | | } |
| | | record.setLocationList(vos); |
| | | } |
| | | |
| | | Long artId = ObjectUtil.defaultIfNull(clothesOrderDraft.getArtId(),0L); |
| | |
| | | |
| | | BigDecimal amount = |
| | | record.getClothPrice() |
| | | .add(record.getLocationPrice()) |
| | | .add(totalPatternPrice) |
| | | .add(record.getArtPrice()) |
| | | .add(record.getSizePrice()) |
| | | .add(record.getPatternPrice()).setScale(2, RoundingMode.DOWN); |
| | | .add(totalLocationPrice).setScale(2, RoundingMode.DOWN); |
| | | record.setAmount(amount); |
| | | } |
| | | |
| | |
| | | clothesOrderMapper.insert(orderInfo); |
| | | |
| | | Long orderId = orderInfo.getId(); |
| | | |
| | | /** |
| | | * 创建订单子表 |
| | | */ |
| | |
| | | orderItem.setPrice(location.getPrice()); |
| | | orderItem.setItemCnt(item.getCnt()); |
| | | orderItem.setAmount(orderItem.getPrice().multiply(new BigDecimal(orderItem.getItemCnt())).setScale(2, RoundingMode.DOWN)); |
| | | orderItem.setRemark(item.getPatternRemark()); |
| | | clothesOrderItemMapper.insert(orderItem); |
| | | |
| | | total = total.add(orderItem.getAmount()); |
| | |
| | | orderItem.setName(pattern.getName()); |
| | | orderItem.setPrice(pattern.getPrice()); |
| | | orderItem.setItemCnt(item.getCnt()); |
| | | orderItem.setRemark(item.getPatternRemark()); |
| | | orderItem.setAmount(orderItem.getPrice().multiply(new BigDecimal(orderItem.getItemCnt())).setScale(2, RoundingMode.DOWN)); |
| | | clothesOrderItemMapper.insert(orderItem); |
| | | |
| | |
| | | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.enumerates.ClothesEnum; |
| | | import cc.mrbird.febs.common.enumerates.SocialPatternLocationTypeEnum; |
| | | import cc.mrbird.febs.common.enumerates.StateUpDownEnum; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.LoginUserUtil; |
| | |
| | | private final ClothesTypeArtMapper clothesTypeArtMapper; |
| | | private final ClothesMemberStatureMapper clothesMemberStatureMapper; |
| | | private final ClothesOrderDraftMapper clothesOrderDraftMapper; |
| | | private final ClothesPatternRemarkMapper clothesPatternRemarkMapper; |
| | | private final ClothesLocationRemarkMapper clothesLocationRemarkMapper; |
| | | |
| | | @Override |
| | | public FebsResponse clothesType() { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse statureUpdateState(ApiClothesMemberStatureUpdateStateDto dto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | ClothesMemberStature clothesMemberStature = clothesMemberStatureMapper.selectById(dto.getId()); |
| | | if (ObjectUtil.isNotEmpty(clothesMemberStature)){ |
| | | clothesMemberStature.setState(dto.getState()); |
| | | clothesMemberStatureMapper.updateById(clothesMemberStature); |
| | | |
| | | if(ClothesEnum.UP.getCode() == dto.getState()){ |
| | | clothesMemberStatureMapper.update(null, |
| | | Wrappers.lambdaUpdate(ClothesMemberStature.class) |
| | | .set(ClothesMemberStature::getState, ClothesEnum.DOWN.getCode()) |
| | | .eq(ClothesMemberStature::getMemberId, memberId) |
| | | .ne(ClothesMemberStature::getId, clothesMemberStature.getId()) |
| | | .eq(ClothesMemberStature::getDelFlag, ClothesEnum.DOWN.getCode()) |
| | | ); |
| | | } |
| | | } |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse statureDel(ApiClothesMemberStatureInfoDto dto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | clothesMemberStatureMapper.update(null, |
| | |
| | | } |
| | | clothesOrderDraft.setSizeId(sizeId); |
| | | |
| | | Long patternId = ObjectUtil.defaultIfNull(dto.getPatternId(),0L); |
| | | ClothesPattern pattern = clothesPatternMapper.selectById(patternId); |
| | | if (ObjectUtil.isNull(pattern)){ |
| | | throw new FebsException("请选择图案"); |
| | | } |
| | | clothesOrderDraft.setPatternId(patternId); |
| | | if(StrUtil.isNotBlank(dto.getPatternRemark())){ |
| | | clothesOrderDraft.setPatternRemark(dto.getPatternRemark()); |
| | | } |
| | | |
| | | Long locationId = ObjectUtil.defaultIfNull(dto.getLocationId(),0L); |
| | | ClothesLocation clothesLocation = clothesLocationMapper.selectById(locationId); |
| | | if (ObjectUtil.isNull(clothesLocation)){ |
| | | throw new FebsException("请选择图案位置"); |
| | | } |
| | | clothesOrderDraft.setLocationId(locationId); |
| | | |
| | | Long clothId = ObjectUtil.defaultIfNull(dto.getClothId(),0L); |
| | | ClothesCloth clothesCloth = clothesClothMapper.selectById(clothId); |
| | | if (ObjectUtil.isNull(clothesCloth)){ |
| | |
| | | |
| | | clothesOrderDraftMapper.insert(clothesOrderDraft); |
| | | |
| | | List<ApiPatternAddDto> patternList = dto.getPatternList(); |
| | | if (CollUtil.isNotEmpty(patternList)){ |
| | | for (ApiPatternAddDto patternAddDto : patternList){ |
| | | Long patternId = patternAddDto.getPatternId(); |
| | | String patternRemark = patternAddDto.getPatternRemark(); |
| | | |
| | | ClothesPatternRemark clothesPatternRemark = new ClothesPatternRemark(); |
| | | clothesPatternRemark.setMemberId(memberId); |
| | | clothesPatternRemark.setType(SocialPatternLocationTypeEnum.DRAFT.getValue()); |
| | | clothesPatternRemark.setSourceId(clothesOrderDraft.getId()); |
| | | clothesPatternRemark.setPatternId(patternId); |
| | | clothesPatternRemark.setRemark(patternRemark); |
| | | clothesPatternRemarkMapper.insert(clothesPatternRemark); |
| | | } |
| | | } |
| | | |
| | | List<ApiLocationAddDto> locationList = dto.getLocationList(); |
| | | if (CollUtil.isNotEmpty(locationList)){ |
| | | for (ApiLocationAddDto locationAddDto : locationList){ |
| | | Long locationId = locationAddDto.getLocationId(); |
| | | String patternRemark = locationAddDto.getPatternRemark(); |
| | | |
| | | ClothesLocationRemark clothesLocationRemark = new ClothesLocationRemark(); |
| | | clothesLocationRemark.setMemberId(memberId); |
| | | clothesLocationRemark.setType(SocialPatternLocationTypeEnum.DRAFT.getValue()); |
| | | clothesLocationRemark.setSourceId(clothesOrderDraft.getId()); |
| | | clothesLocationRemark.setLocationId(locationId); |
| | | clothesLocationRemark.setRemark(patternRemark); |
| | | clothesLocationRemarkMapper.insert(clothesLocationRemark); |
| | | } |
| | | } |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private final ClothesTypeSizeMapper clothesTypeSizeMapper; |
| | | private final ClothesTypeLocationMapper clothesTypeLocationMapper; |
| | | private final ClothesTypeArtMapper clothesTypeArtMapper; |
| | | private final ClothesLocationRemarkMapper clothesLocationRemarkMapper; |
| | | private final ClothesPatternRemarkMapper clothesPatternRemarkMapper; |
| | | |
| | | |
| | | @Override |
| | |
| | | if(ObjectUtil.isNotNull(clothesSocialMuse)){ |
| | | BigDecimal totalAmount = BigDecimal.ZERO; |
| | | apiSocialMuseVo.setMuseId(clothesSocialMuse.getId()); |
| | | |
| | | apiSocialMuseVo.setPatternImage(clothesSocialMuse.getPatternImage()); |
| | | apiSocialMuseVo.setPatternText(clothesSocialMuse.getPatternText()); |
| | | |
| | | ClothesType clothesType = clothesTypeMapper.selectById(clothesSocialMuse.getTypeId()); |
| | | if(ObjectUtil.isNotNull(clothesType)){ |
| | | apiSocialMuseVo.setTypeName(clothesType.getName()); |
| | |
| | | apiSocialMuseVo.setSizeName(clothesSize.getName()); |
| | | totalAmount = totalAmount.add(clothesSize.getPrice()); |
| | | } |
| | | ClothesPattern clothesPattern = clothesPatternMapper.selectById(clothesSocialMuse.getPatternId()); |
| | | if(ObjectUtil.isNotNull(clothesPattern)){ |
| | | apiSocialMuseVo.setPatternName(clothesPattern.getName()); |
| | | totalAmount = totalAmount.add(clothesPattern.getPrice()); |
| | | } |
| | | ClothesLocation clothesLocation = clothesLocationMapper.selectById(clothesSocialMuse.getLocationId()); |
| | | if(ObjectUtil.isNotNull(clothesLocation)){ |
| | | apiSocialMuseVo.setLocationName(clothesLocation.getName()); |
| | | totalAmount = totalAmount.add(clothesLocation.getPrice()); |
| | | } |
| | | ClothesCloth clothesCloth = clothesClothMapper.selectById(clothesSocialMuse.getClothId()); |
| | | if(ObjectUtil.isNotNull(clothesCloth)){ |
| | | apiSocialMuseVo.setClothName(clothesCloth.getName()); |
| | |
| | | if(ObjectUtil.isNotNull(clothesArt)){ |
| | | apiSocialMuseVo.setArtName(clothesArt.getName()); |
| | | totalAmount = totalAmount.add(clothesArt.getPrice()); |
| | | } |
| | | |
| | | |
| | | List<ApiClothesPatternRemarkVo> patternRemarkList = new ArrayList<>(); |
| | | |
| | | List<ClothesPatternRemark> patternRemarks = clothesPatternRemarkMapper.selectList( |
| | | Wrappers.lambdaQuery(ClothesPatternRemark.class) |
| | | .eq(ClothesPatternRemark::getSourceId, clothesSocialMuse.getId()) |
| | | .eq(ClothesPatternRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(patternRemarks)){ |
| | | for (ClothesPatternRemark entity : patternRemarks){ |
| | | ApiClothesPatternRemarkVo vo = new ApiClothesPatternRemarkVo(); |
| | | ClothesPattern pattern = clothesPatternMapper.selectById(entity.getPatternId()); |
| | | vo.setPatternName(pattern.getName()); |
| | | vo.setPatternRemark(entity.getRemark()); |
| | | patternRemarkList.add( vo); |
| | | |
| | | totalAmount = totalAmount.add(pattern.getPrice()); |
| | | } |
| | | apiSocialMuseVo.setPatternRemarkList(patternRemarkList); |
| | | } |
| | | |
| | | List<ApiClothesLocationRemarkVo> locationRemarkList = new ArrayList<>(); |
| | | List<ClothesLocationRemark> locationRemarks = clothesLocationRemarkMapper.selectList( |
| | | Wrappers.lambdaQuery(ClothesLocationRemark.class) |
| | | .eq(ClothesLocationRemark::getSourceId, clothesSocialMuse.getId()) |
| | | .eq(ClothesLocationRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(locationRemarks)){ |
| | | for (ClothesLocationRemark entity : locationRemarks){ |
| | | ApiClothesLocationRemarkVo vo = new ApiClothesLocationRemarkVo(); |
| | | ClothesLocation clothesLocation = clothesLocationMapper.selectById(entity.getLocationId()); |
| | | vo.setLocationName(clothesLocation.getName()); |
| | | vo.setLocationRemark(entity.getRemark()); |
| | | locationRemarkList.add(vo); |
| | | |
| | | totalAmount = totalAmount.add(clothesLocation.getPrice()); |
| | | } |
| | | apiSocialMuseVo.setLocationRemarkList(locationRemarkList); |
| | | } |
| | | apiSocialMuseVo.setTotalAmount(totalAmount.setScale(2, RoundingMode.DOWN)); |
| | | } |
| | |
| | | Wrappers.lambdaQuery(ClothesOrderItem.class) |
| | | .eq(ClothesOrderItem::getOrderId, orderId) |
| | | ); |
| | | |
| | | List<ClothesLocationRemark> clothesLocationRemarks = new ArrayList<>(); |
| | | List<ClothesPatternRemark> clothesPatternRemarks = new ArrayList<>(); |
| | | if(CollUtil.isEmpty(clothesOrderItems)){ |
| | | for (ClothesOrderItem item : clothesOrderItems){ |
| | | if (ClothesOrderItemEnum.CLOTH.getCode() == item.getType()) { |
| | |
| | | continue; |
| | | } else if (ClothesOrderItemEnum.LOCATION.getCode() == item.getType()) { |
| | | ClothesLocation location = clothesLocationMapper.selectById(item.getItemId()); |
| | | clothesSocialMuse.setLocationId(location.getId()); |
| | | ClothesLocationRemark entity = new ClothesLocationRemark(); |
| | | entity.setLocationId(location.getId()); |
| | | entity.setMemberId(memberId); |
| | | entity.setSourceId(clothesSocialMuse.getId()); |
| | | entity.setType(SocialPatternLocationTypeEnum.MUSE.getValue()); |
| | | entity.setRemark(item.getRemark()); |
| | | clothesLocationRemarks.add(entity); |
| | | continue; |
| | | } else if (ClothesOrderItemEnum.PATTERN.getCode() == item.getType()) { |
| | | ClothesPattern pattern = clothesPatternMapper.selectById(item.getItemId()); |
| | | clothesSocialMuse.setPatternId(pattern.getId()); |
| | | clothesSocialMuse.setPatternRemark(item.getRemark()); |
| | | ClothesPatternRemark entity = new ClothesPatternRemark(); |
| | | entity.setPatternId(pattern.getId()); |
| | | entity.setMemberId(memberId); |
| | | entity.setSourceId(clothesSocialMuse.getId()); |
| | | entity.setType(SocialPatternLocationTypeEnum.MUSE.getValue()); |
| | | entity.setRemark(item.getRemark()); |
| | | clothesPatternRemarks.add(entity); |
| | | continue; |
| | | } else if (ClothesOrderItemEnum.ART.getCode() == item.getType()) { |
| | | ClothesArt art = clothesArtMapper.selectById(item.getItemId()); |
| | |
| | | } |
| | | } |
| | | clothesSocialMuseMapper.insert(clothesSocialMuse); |
| | | |
| | | if (CollUtil.isNotEmpty(clothesLocationRemarks)){ |
| | | for (ClothesLocationRemark entity : clothesLocationRemarks){ |
| | | entity.setSourceId(clothesSocialMuse.getId()); |
| | | clothesLocationRemarkMapper.insert(entity); |
| | | } |
| | | } |
| | | |
| | | if (CollUtil.isNotEmpty(clothesPatternRemarks)){ |
| | | for (ClothesPatternRemark entity : clothesPatternRemarks){ |
| | | entity.setSourceId(clothesSocialMuse.getId()); |
| | | clothesPatternRemarkMapper.insert(entity); |
| | | } |
| | | } |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | |
| | | record.setTypeId(typeId); |
| | | record.setTypeName(clothesType.getName()); |
| | | record.setTypeImage(clothesType.getImage()); |
| | | record.setPatternRemark(entity.getPatternRemark()); |
| | | |
| | | Long sizeId = ObjectUtil.defaultIfNull(entity.getSizeId(),0L); |
| | | List<ClothesTypeSize> clothesTypeSizes = clothesTypeSizeMapper.selectList(Wrappers.<ClothesTypeSize>lambdaQuery().eq(ClothesTypeSize::getTypeId, typeId)); |
| | |
| | | } |
| | | } |
| | | |
| | | Long patternId = ObjectUtil.defaultIfNull(entity.getPatternId(),0L); |
| | | List<ClothesTypePattern> clothesTypePatterns = clothesTypePatternMapper.selectList(Wrappers.<ClothesTypePattern>lambdaQuery().eq(ClothesTypePattern::getTypeId, typeId)); |
| | | if (CollUtil.isNotEmpty(clothesTypePatterns)){ |
| | | Set<Long> patternIds = clothesTypePatterns.stream().map(ClothesTypePattern::getPatternId).collect(Collectors.toSet()); |
| | | if(CollUtil.isNotEmpty( patternIds) && patternIds.contains(patternId)){ |
| | | ClothesPattern clothesPattern = clothesPatternMapper.selectById(patternId); |
| | | if (ObjectUtil.isNotNull(clothesPattern)){ |
| | | record.setPatternId(patternId); |
| | | record.setPatternName(clothesPattern.getName()); |
| | | record.setPatternPrice(clothesPattern.getPrice()); |
| | | } |
| | | BigDecimal totalPatternAmount = BigDecimal.ZERO; |
| | | List<ApiClothesPatternRemarkVo> patternRemarkList = new ArrayList<>(); |
| | | List<ClothesPatternRemark> patternRemarks = clothesPatternRemarkMapper.selectList( |
| | | Wrappers.lambdaQuery(ClothesPatternRemark.class) |
| | | .eq(ClothesPatternRemark::getSourceId, entity.getId()) |
| | | .eq(ClothesPatternRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(patternRemarks)){ |
| | | for (ClothesPatternRemark patternRemark : patternRemarks){ |
| | | ApiClothesPatternRemarkVo vo = new ApiClothesPatternRemarkVo(); |
| | | ClothesPattern pattern = clothesPatternMapper.selectById(patternRemark.getPatternId()); |
| | | vo.setPatternName(pattern.getName()); |
| | | vo.setPatternPrice(pattern.getPrice()); |
| | | vo.setPatternId(pattern.getId()); |
| | | vo.setPatternRemark(patternRemark.getRemark()); |
| | | patternRemarkList.add( vo); |
| | | |
| | | totalPatternAmount = totalPatternAmount.add(pattern.getPrice()); |
| | | } |
| | | record.setPatternRemarkList(patternRemarkList); |
| | | } |
| | | |
| | | Long locationId = ObjectUtil.defaultIfNull(entity.getLocationId(),0L); |
| | | List<ClothesTypeLocation> clothesTypeLocations = clothesTypeLocationMapper.selectList(Wrappers.<ClothesTypeLocation>lambdaQuery().eq(ClothesTypeLocation::getTypeId, typeId)); |
| | | if (CollUtil.isNotEmpty(clothesTypeLocations)){ |
| | | Set<Long> locationIds = clothesTypeLocations.stream().map(ClothesTypeLocation::getLocationId).collect(Collectors.toSet()); |
| | | if(CollUtil.isNotEmpty( locationIds) && locationIds.contains(locationId)){ |
| | | ClothesLocation clothesLocation = clothesLocationMapper.selectById(locationId); |
| | | if (ObjectUtil.isNotNull(clothesLocation)){ |
| | | record.setLocationId(locationId); |
| | | record.setLocationName(clothesLocation.getName()); |
| | | record.setLocationPrice(clothesLocation.getPrice()); |
| | | } |
| | | |
| | | BigDecimal totalLocationAmount = BigDecimal.ZERO; |
| | | List<ApiClothesLocationRemarkVo> locationRemarkList = new ArrayList<>(); |
| | | List<ClothesLocationRemark> locationRemarks = clothesLocationRemarkMapper.selectList( |
| | | Wrappers.lambdaQuery(ClothesLocationRemark.class) |
| | | .eq(ClothesLocationRemark::getSourceId, entity.getId()) |
| | | .eq(ClothesLocationRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(locationRemarks)){ |
| | | for (ClothesLocationRemark locationRemark : locationRemarks){ |
| | | ApiClothesLocationRemarkVo vo = new ApiClothesLocationRemarkVo(); |
| | | ClothesLocation clothesLocation = clothesLocationMapper.selectById(locationRemark.getLocationId()); |
| | | vo.setLocationName(clothesLocation.getName()); |
| | | vo.setLocationRemark(locationRemark.getRemark()); |
| | | vo.setLocationPrice(clothesLocation.getPrice()); |
| | | vo.setLocationId(clothesLocation.getId()); |
| | | locationRemarkList.add(vo); |
| | | |
| | | totalLocationAmount = totalLocationAmount.add(clothesLocation.getPrice()); |
| | | } |
| | | record.setLocationRemarkList(locationRemarkList); |
| | | } |
| | | |
| | | Long artId = ObjectUtil.defaultIfNull(entity.getArtId(),0L); |
| | |
| | | |
| | | BigDecimal amount = |
| | | record.getClothPrice() |
| | | .add(record.getLocationPrice()) |
| | | .add(totalLocationAmount) |
| | | .add(record.getArtPrice()) |
| | | .add(record.getSizePrice()) |
| | | .add(record.getPatternPrice()).setScale(2, RoundingMode.DOWN); |
| | | .add(totalPatternAmount) |
| | | .setScale(2, RoundingMode.DOWN); |
| | | record.setAmount(amount); |
| | | } |
| | | |
| | |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; |
| | | import cc.mrbird.febs.mall.service.IMallMoneyFlowService; |
| | | import cc.mrbird.febs.mall.vo.AdminMallOrderInfoVo; |
| | | import cc.mrbird.febs.mall.vo.clothes.AdminClothesLocationRemarkVo; |
| | | import cc.mrbird.febs.mall.vo.clothes.AdminClothesOrderListVo; |
| | | import cc.mrbird.febs.mall.vo.clothes.AdminClothesPatternRemarkVo; |
| | | import cc.mrbird.febs.mall.vo.clothes.AdminClothesSocialListVo; |
| | | import cc.mrbird.febs.pay.util.WeixinServiceUtil; |
| | | import cn.hutool.core.bean.BeanUtil; |
| | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | |
| | | private final ClothesSocialFileMapper clothesSocialFileMapper; |
| | | private final ClothesSocialMuseMapper clothesSocialMuseMapper; |
| | | private final ClothesSocialCategoryMapper clothesSocialCategoryMapper; |
| | | |
| | | private final ClothesPatternRemarkMapper clothesPatternRemarkMapper; |
| | | private final ClothesLocationRemarkMapper clothesLocationRemarkMapper; |
| | | |
| | | private final IApiMallMemberWalletService memberWalletService; |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | |
| | | public FebsResponse sizeAdd(ClothesSize dto) { |
| | | ClothesSize clothesSize = new ClothesSize(); |
| | | clothesSize.setName(dto.getName()); |
| | | clothesSize.setCode(dto.getCode()); |
| | | clothesSize.setOrderNum(dto.getOrderNum()); |
| | | clothesSize.setPrice(dto.getPrice()); |
| | | clothesSize.setType(dto.getType()); |
| | |
| | | ClothesPattern clothesPattern = new ClothesPattern(); |
| | | clothesPattern.setName(dto.getName()); |
| | | clothesPattern.setCode(dto.getCode()); |
| | | clothesPattern.setType(dto.getType()); |
| | | // clothesPattern.setType(dto.getType()); |
| | | clothesPattern.setPrice(dto.getPrice()); |
| | | clothesPattern.setOrderNum(dto.getOrderNum()); |
| | | clothesPattern.setImage(dto.getImage()); |
| | |
| | | .set(ClothesPattern::getContent, dto.getContent()) |
| | | .set(ClothesPattern::getOrderNum, dto.getOrderNum()) |
| | | .set(ClothesPattern::getPrice, dto.getPrice()) |
| | | .set(ClothesPattern::getType, dto.getType()) |
| | | ); |
| | | } |
| | | return new FebsResponse().success().message("操作成功"); |
| | |
| | | if(ObjectUtil.isNull(entity)){ |
| | | throw new RuntimeException("内容不存在,无法操作"); |
| | | } |
| | | |
| | | if(ObjectUtil.isNull(dto.getTypeId())){ |
| | | throw new RuntimeException("请选择设计类型"); |
| | | } |
| | | entity.setCategoryId(dto.getCategoryId()); |
| | | entity.setMemberId(dto.getMemberId()); |
| | | entity.setName(dto.getName()); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | clothesSocialMuseMapper.delete( |
| | | Wrappers.lambdaQuery(ClothesSocialMuse.class) |
| | | .eq(ClothesSocialMuse::getSocialId, entity.getId()) |
| | | ); |
| | | if(ObjectUtil.isNotNull(dto.getTypeId())){ |
| | | ClothesSocialMuse clothesSocialMuse = new ClothesSocialMuse(); |
| | | clothesSocialMuse.setSocialId(entity.getId()); |
| | | clothesSocialMuse.setTypeId(dto.getTypeId()); |
| | | clothesSocialMuseMapper.insert(clothesSocialMuse); |
| | | } |
| | | ClothesSocialMuse clothesSocialMuse = new ClothesSocialMuse(); |
| | | clothesSocialMuse.setSocialId(entity.getId()); |
| | | clothesSocialMuse.setTypeId(dto.getTypeId()); |
| | | clothesSocialMuseMapper.insert(clothesSocialMuse); |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | |
| | | ClothesSocialMuse entity = clothesSocialMuseMapper.selectById(id); |
| | | if(ObjectUtil.isNotNull(entity)){ |
| | | entity.setClothId(dto.getClothId()); |
| | | entity.setLocationId(dto.getLocationId()); |
| | | entity.setSizeId(dto.getSizeId()); |
| | | entity.setPatternId(dto.getPatternId()); |
| | | entity.setArtId(dto.getArtId()); |
| | | |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.putByPath("text", dto.getPatternText()); |
| | | jsonObject.putByPath("file", dto.getPatternImage()); |
| | | entity.setPatternRemark(jsonObject.toString()); |
| | | |
| | | clothesSocialMuseMapper.updateById(entity); |
| | | } |
| | | |
| | | Long socialId = entity.getSocialId(); |
| | | ClothesSocial clothesSocial = clothesSocialMapper.selectById(socialId); |
| | | |
| | | List<AdminClothesPatternRemarkVo> patternData = dto.getPatternData(); |
| | | if(CollUtil.isNotEmpty(patternData)){ |
| | | Set<Long> patternIds = patternData.stream().map(AdminClothesPatternRemarkVo::getPatternId).collect(Collectors.toSet()); |
| | | |
| | | clothesPatternRemarkMapper.delete( |
| | | Wrappers.lambdaQuery(ClothesPatternRemark.class) |
| | | .eq(ClothesPatternRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) |
| | | .eq(ClothesPatternRemark::getSourceId, id) |
| | | .in(ClothesPatternRemark::getPatternId, patternIds) |
| | | ); |
| | | for (AdminClothesPatternRemarkVo pattern : patternData) { |
| | | ClothesPatternRemark clothesPatternRemark = new ClothesPatternRemark(); |
| | | clothesPatternRemark.setMemberId(clothesSocial.getMemberId()); |
| | | clothesPatternRemark.setType(SocialPatternLocationTypeEnum.MUSE.getValue()); |
| | | clothesPatternRemark.setSourceId(entity.getId()); |
| | | clothesPatternRemark.setPatternId(pattern.getPatternId()); |
| | | |
| | | Map<String,String> remarkMap = new HashMap<>(); |
| | | remarkMap.put("file",pattern.getSkuPatternImage()); |
| | | remarkMap.put("text",pattern.getPatternText()); |
| | | clothesPatternRemark.setRemark(JSONUtil.parse(remarkMap).toString()); |
| | | clothesPatternRemarkMapper.insert(clothesPatternRemark); |
| | | } |
| | | } |
| | | |
| | | List<AdminClothesLocationRemarkVo> locationData = dto.getLocationData(); |
| | | if(CollUtil.isNotEmpty(locationData)){ |
| | | Set<Long> locationIds = locationData.stream().map(AdminClothesLocationRemarkVo::getLocationId).collect(Collectors.toSet()); |
| | | |
| | | clothesLocationRemarkMapper.delete( |
| | | Wrappers.lambdaQuery(ClothesLocationRemark.class) |
| | | .eq(ClothesLocationRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) |
| | | .eq(ClothesLocationRemark::getSourceId, id) |
| | | .in(ClothesLocationRemark::getLocationId, locationIds) |
| | | ); |
| | | for (AdminClothesLocationRemarkVo location : locationData) { |
| | | ClothesLocationRemark clothesLocationRemark = new ClothesLocationRemark(); |
| | | clothesLocationRemark.setMemberId(clothesSocial.getMemberId()); |
| | | clothesLocationRemark.setType(SocialPatternLocationTypeEnum.MUSE.getValue()); |
| | | clothesLocationRemark.setSourceId(entity.getId()); |
| | | clothesLocationRemark.setLocationId(location.getLocationId()); |
| | | |
| | | Map<String,String> remarkMap = new HashMap<>(); |
| | | remarkMap.put("file",location.getSkuLocationImage()); |
| | | remarkMap.put("text",location.getLocationText()); |
| | | clothesLocationRemark.setRemark(JSONUtil.parse(remarkMap).toString()); |
| | | clothesLocationRemarkMapper.insert(clothesLocationRemark); |
| | | } |
| | | } |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
New file |
| | |
| | | package cc.mrbird.febs.mall.vo.clothes; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class AdminClothesLocationRemarkVo { |
| | | |
| | | private Long locationId; |
| | | private String locationName; |
| | | private String locationText; |
| | | private String skuLocationImage; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.vo.clothes; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class AdminClothesPatternRemarkVo { |
| | | |
| | | private Long patternId; |
| | | private String patternName; |
| | | private String patternText; |
| | | private String skuPatternImage; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.vo.clothes; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiClothesLocationInfoVo", description = "参数") |
| | | public class ApiClothesLocationInfoVo { |
| | | |
| | | |
| | | @ApiModelProperty(value = "反面图案ID") |
| | | private Long locationId; |
| | | @ApiModelProperty(value = "反面图案名称") |
| | | private String locationName; |
| | | @ApiModelProperty(value = "反面图案价格") |
| | | private BigDecimal locationPrice = BigDecimal.ZERO; |
| | | @ApiModelProperty(value = "反面自定义内容") |
| | | private String locationRemark; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.vo.clothes; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiClothesLocationRemarkVo", description = "参数") |
| | | public class ApiClothesLocationRemarkVo { |
| | | |
| | | |
| | | @ApiModelProperty(value = "反面图案ID") |
| | | private Long locationId; |
| | | @ApiModelProperty(value = "反面图案名称") |
| | | private String locationName; |
| | | @ApiModelProperty(value = "反面图案价格") |
| | | private BigDecimal locationPrice = BigDecimal.ZERO; |
| | | @ApiModelProperty(value = "反面自定义内容") |
| | | private String locationRemark; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.vo.clothes; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiClothesPatternInfoVo", description = "参数") |
| | | public class ApiClothesPatternInfoVo { |
| | | |
| | | |
| | | @ApiModelProperty(value = "正面图案ID") |
| | | private Long patternId; |
| | | @ApiModelProperty(value = "正面图案名称") |
| | | private String patternName; |
| | | @ApiModelProperty(value = "正面图案价格") |
| | | private BigDecimal patternPrice = BigDecimal.ZERO; |
| | | @ApiModelProperty(value = "正面自定义内容") |
| | | private String patternRemark; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.vo.clothes; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiClothesPatternRemarkVo", description = "参数") |
| | | public class ApiClothesPatternRemarkVo { |
| | | |
| | | |
| | | @ApiModelProperty(value = "正面图案ID") |
| | | private Long patternId; |
| | | @ApiModelProperty(value = "正面图案名称") |
| | | private String patternName; |
| | | @ApiModelProperty(value = "正面图案价格") |
| | | private BigDecimal patternPrice = BigDecimal.ZERO; |
| | | @ApiModelProperty(value = "正面自定义内容") |
| | | private String patternRemark; |
| | | } |
| | |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiClothesSocialMuseVo", description = "参数") |
| | |
| | | @ApiModelProperty(value = "尺码价格") |
| | | private BigDecimal sizePrice = BigDecimal.ZERO; |
| | | |
| | | @ApiModelProperty(value = "图案ID") |
| | | private Long patternId; |
| | | @ApiModelProperty(value = "图案名称") |
| | | private String patternName; |
| | | @ApiModelProperty(value = "图案价格") |
| | | private BigDecimal patternPrice = BigDecimal.ZERO; |
| | | @ApiModelProperty(value = "自定义内容") |
| | | private String patternRemark; |
| | | |
| | | @ApiModelProperty(value = "图案位置ID") |
| | | private Long locationId; |
| | | @ApiModelProperty(value = "图案位置") |
| | | private String locationName; |
| | | @ApiModelProperty(value = "图案位置价格") |
| | | private BigDecimal locationPrice = BigDecimal.ZERO; |
| | | |
| | | @ApiModelProperty(value = "布料ID") |
| | | private Long clothId; |
| | | @ApiModelProperty(value = "布料名称") |
| | |
| | | @ApiModelProperty(value = "布料价格") |
| | | private BigDecimal clothPrice = BigDecimal.ZERO; |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value = "正面图案详情") |
| | | private List<ApiClothesPatternRemarkVo> patternRemarkList; |
| | | |
| | | @ApiModelProperty(value = "反面图案详情") |
| | | private List<ApiClothesLocationRemarkVo> locationRemarkList; |
| | | |
| | | } |
| | |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiMyDraftVo", description = "参数") |
| | |
| | | @ApiModelProperty(value = "尺码价格") |
| | | private BigDecimal sizePrice = BigDecimal.ZERO; |
| | | |
| | | @ApiModelProperty(value = "图案ID") |
| | | private Long patternId; |
| | | @ApiModelProperty(value = "图案名称") |
| | | private String patternName; |
| | | @ApiModelProperty(value = "图案价格") |
| | | private BigDecimal patternPrice = BigDecimal.ZERO; |
| | | @ApiModelProperty(value = "自定义内容") |
| | | private String patternRemark; |
| | | @ApiModelProperty(value = "正面图案") |
| | | private List<ApiClothesPatternInfoVo> patternList; |
| | | |
| | | @ApiModelProperty(value = "图案位置ID") |
| | | private Long locationId; |
| | | @ApiModelProperty(value = "图案位置") |
| | | private String locationName; |
| | | @ApiModelProperty(value = "图案位置价格") |
| | | private BigDecimal locationPrice = BigDecimal.ZERO; |
| | | @ApiModelProperty(value = "反面图案") |
| | | private List<ApiClothesLocationInfoVo> locationList; |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value = "布料ID") |
| | | private Long clothId; |
| | |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiSocialMuseVo", description = "参数") |
| | |
| | | private String artName; |
| | | @ApiModelProperty(value = "尺码名称") |
| | | private String sizeName; |
| | | @ApiModelProperty(value = "图案名称") |
| | | private String patternName; |
| | | |
| | | @ApiModelProperty(value = "图案图片内容") |
| | | private String patternImage; |
| | | @ApiModelProperty(value = "图案文案内容") |
| | | private String patternText; |
| | | @ApiModelProperty(value = "图案位置名称") |
| | | private String locationName; |
| | | @ApiModelProperty(value = "布料名称") |
| | | private String clothName; |
| | | |
| | | @ApiModelProperty(value = "正面图案详情") |
| | | private List<ApiClothesPatternRemarkVo> patternRemarkList; |
| | | |
| | | @ApiModelProperty(value = "反面图案详情") |
| | | private List<ApiClothesLocationRemarkVo> locationRemarkList; |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cc.mrbird.febs.mall.mapper.ClothesLocationRemarkMapper"> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cc.mrbird.febs.mall.mapper.ClothesPatternRemarkMapper"> |
| | | |
| | | </mapper> |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-location" lay-title="图案位置管理"> |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-location" lay-title="反面图案管理"> |
| | | <div class="layui-row febs-container"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-card"> |
| | |
| | | </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="type"> |
| | | <option value="1">文字</option> |
| | | <option value="2">图案</option> |
| | | <option value="3">文字和图案</option> |
| | | </select> |
| | | </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="type">--> |
| | | <!-- <option value="1">文字</option>--> |
| | | <!-- <option value="2">图案</option>--> |
| | | <!-- <option value="3">文字和图案</option>--> |
| | | <!-- </select>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <div class="layui-col-lg6"> |
| | |
| | | </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="type"> |
| | | <option value="1">文字</option> |
| | | <option value="2">图案</option> |
| | | <option value="3">文字和图案</option> |
| | | </select> |
| | | </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="type">--> |
| | | <!-- <option value="1">文字</option>--> |
| | | <!-- <option value="2">图案</option>--> |
| | | <!-- <option value="3">文字和图案</option>--> |
| | | <!-- </select>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <div class="layui-col-lg6"> |
| | |
| | | "name": clothesPattern.name, |
| | | "code": clothesPattern.code, |
| | | "price": clothesPattern.price, |
| | | "type": clothesPattern.type, |
| | | "orderNum": clothesPattern.orderNum, |
| | | }); |
| | | |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-pattern" lay-title="图案管理"> |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-pattern" lay-title="正面图案管理"> |
| | | <div class="layui-row febs-container"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-card"> |
| | |
| | | <script type="text/html" id="patternOption"> |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="patternInfo:view" lay-event="patternInfoEvent">编辑</button> |
| | | </script> |
| | | <script type="text/html" id="patternTypeOption"> |
| | | {{# |
| | | var type = { |
| | | 1: {title: '文字', color: 'green'}, |
| | | 2: {title: '图案', color: 'blue'}, |
| | | 3: {title: '文字和图案', color: 'red'}, |
| | | }[d.type]; |
| | | }} |
| | | <span class="layui-badge febs-bg-{{type.color}}">{{ type.title }}</span> |
| | | </script> |
| | | <!--<script type="text/html" id="patternTypeOption">--> |
| | | <!-- {{#--> |
| | | <!-- var type = {--> |
| | | <!-- 1: {title: '文字', color: 'green'},--> |
| | | <!-- 2: {title: '图案', color: 'blue'},--> |
| | | <!-- 3: {title: '文字和图案', color: 'red'},--> |
| | | <!-- }[d.type];--> |
| | | <!-- }}--> |
| | | <!-- <span class="layui-badge febs-bg-{{type.color}}">{{ type.title }}</span>--> |
| | | <!--</script>--> |
| | | |
| | | |
| | | <!-- 表格操作栏 end --> |
| | |
| | | {field: 'code', title: '编码', minWidth: 150,align:'center'}, |
| | | {field: 'orderNum', title: '序号', minWidth: 100,align:'center'}, |
| | | {field: 'price', title: '价格', minWidth: 150,align:'center'}, |
| | | {title: '图案类型', templet: '#patternTypeOption', minWidth: 150,align:'center'}, |
| | | // {title: '图案类型', templet: '#patternTypeOption', minWidth: 150,align:'center'}, |
| | | {field: 'image',title: '小图标', |
| | | templet: function (d) { |
| | | return '<a lay-event="seePatternImage">' + |
| | |
| | | </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"> |
| | | <div id="sc-pattern"></div> |
| | | </div> |
| | | </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="patternText" |
| | | 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">图案-图片:</label> |
| | | <div class="layui-input-block"> |
| | | <div class="layui-upload"> |
| | | <button type="button" class="layui-btn layui-btn-normal layui-btn" id="patternImageUploadButton">上传</button> |
| | | <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> |
| | | <div class="layui-upload-list" id="patternImageUpload"></div> |
| | | </blockquote> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-row layui-col-space10 layui-form-item febs-hide"> |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label">图案:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" id="patternImage" name="patternImage" autocomplete="off" class="layui-input" readonly> |
| | | </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"> |
| | | <div id="sc-location"></div> |
| | | </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> |
| | |
| | | <label class="layui-form-label febs-form-item-require">工艺:</label> |
| | | <div class="layui-input-block"> |
| | | <div id="sc-art"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item multi-rule-table"> |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <blockquote class="layui-elem-quote blue-border">正面图案</blockquote> |
| | | |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label">图案:</label> |
| | | <div class="layui-input-block"> |
| | | <div id="sc-pattern"></div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-lg6"> |
| | | <button type="button" class="layui-btn layui-btn-normal layui-btn" id="testPattern" >添加</button> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <div class="layui-input-block"> |
| | | <table id="multiPattern" lay-filter="multiPattern"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item multi-rule-table"> |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <blockquote class="layui-elem-quote blue-border">反面图案</blockquote> |
| | | |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label">图案:</label> |
| | | <div class="layui-input-block"> |
| | | <div id="sc-location"></div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-lg6"> |
| | | <button type="button" class="layui-btn layui-btn-normal layui-btn" id="testLocation" >添加</button> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <div class="layui-input-block"> |
| | | <table id="multiLocation" lay-filter="multiLocation"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <button class="layui-btn layui-btn-danger layui-btn-sm" type="button" lay-event="delSku">删除</button> |
| | | </div> |
| | | </script> |
| | | |
| | | <script type="text/html" id="tablePatternImgUpload"> |
| | | <div class="layui-upload"> |
| | | <button type="button" class="layui-btn layui-btn-normal layui-btn-xs sku-img" id="skuPatternImg{{d.index}}">上传 |
| | | </button> |
| | | </br> |
| | | <img class="layui-upload-img" id="imagePatternUrls{{d.index}}" style="width: 100px; display:none;" |
| | | src="{{d.skuPatternImage}}"> |
| | | <input type="text" id="skuPatternImage{{d.index}}" name="skuPatternImage{{d.index}}" autoComplete="off" value="{{d.skuPatternImage}}" |
| | | class="layui-input febs-hide"> |
| | | </div> |
| | | </script> |
| | | |
| | | <script type="text/html" id="tableLocationImgUpload"> |
| | | <div class="layui-upload"> |
| | | <button type="button" class="layui-btn layui-btn-normal layui-btn-xs sku-img" id="skuLocationImg{{d.index}}">上传 |
| | | </button> |
| | | </br> |
| | | <img class="layui-upload-img" id="imageLocationUrls{{d.index}}" style="width: 100px; display:none;" |
| | | src="{{d.skuLocationImage}}"> |
| | | <input type="text" id="skuLocationImage{{d.index}}" name="skuLocationImage{{d.index}}" autoComplete="off" value="{{d.skuLocationImage}}" |
| | | class="layui-input febs-hide"> |
| | | </div> |
| | | </script> |
| | | <!-- 表格操作栏 end --> |
| | | <script data-th-inline="javascript"> |
| | | layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','dropdown', 'laydate', 'layedit', 'upload', 'element', 'table', 'xmSelect'], function () { |
| | |
| | | validate = layui.validate, |
| | | element = layui.element; |
| | | |
| | | |
| | | form.render(); |
| | | formSelects.render(); |
| | | |
| | | var patternSet = xmSelect.render({ |
| | | |
| | | el: '#sc-pattern', |
| | | language: 'zn', |
| | | prop : { |
| | | value : 'id', |
| | | children : 'child' |
| | | }, |
| | | iconfont: { |
| | | parent: 'hidden', |
| | | }, |
| | | tips: '请选择', |
| | | filterable: true, |
| | | radio: true, |
| | | clickClose: true, |
| | | tree: { |
| | | show: true, |
| | | //非严格模式 |
| | | strict: false, |
| | | }, |
| | | data: [] |
| | | }) |
| | | febs.get(ctx + 'admin/clothesType/allPattern/' + socialMuse.typeId, null, function(res) { |
| | | patternSet.update({ |
| | | data : res.data, |
| | | autoRow: true, |
| | | }); |
| | | }) |
| | | |
| | | $('#testPattern').on('click', function (){ |
| | | let patternChoice = patternSet.getValue(); |
| | | console.log(patternChoice); |
| | | if(patternChoice == null || patternChoice == ""){ |
| | | febs.alert.warn('请选择图案'); |
| | | return false; |
| | | } |
| | | for (let i = 0; i < patternChoice.length; i++) { |
| | | let data = {}; |
| | | data.patternId = patternChoice[i].id; |
| | | data.patternName = patternChoice[i].name; |
| | | addTablePatternDate(data); |
| | | } |
| | | }); |
| | | |
| | | var patternData=[]; |
| | | var tableInitPattern = table.render({ |
| | | elem: '#multiPattern' |
| | | ,limit:999 |
| | | ,toolbar:"#toolbar" |
| | | ,defaultToolbar:[] |
| | | ,cols:[[//表头 |
| | | |
| | | {type: 'checkbox'}, |
| | | {field: 'patternId', title: '正面ID', width:200,edit:'text'}, |
| | | {field: 'patternName', title: '正面图案', width:200,edit:'text'}, |
| | | {field: 'patternText', title: '文字', width:200,edit:'text'}, |
| | | {templet: '#tablePatternImgUpload', title: '图案', width:150}, |
| | | {field: 'skuPatternImage', title: '图案地址'}, |
| | | ]] |
| | | ,data: [] |
| | | |
| | | }); |
| | | |
| | | table.on('toolbar(multiPattern)', function(obj){ |
| | | var data = obj.data; |
| | | var hasData = table.cache['multiPattern']; |
| | | var checkData = table.checkStatus('multiPattern').data; |
| | | |
| | | if (checkData.length <= 0) { |
| | | febs.alert.warn('请选择删除数据'); |
| | | return; |
| | | } |
| | | if(obj.event === 'delSku'){ |
| | | for (let i = 0; i < checkData.length; i++) { |
| | | var delData = checkData[i]; |
| | | for (let j = 0; j < hasData.length; j++) { |
| | | if (hasData[j].index == delData.index) { |
| | | hasData.splice(j, 1); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | for (let i = 0; i < hasData.length; i++) { |
| | | hasData[i].index = i + 1; |
| | | } |
| | | |
| | | patternData=hasData; |
| | | reloadPatternTable(hasData); |
| | | } |
| | | }); |
| | | |
| | | function addTablePatternDate(data) { |
| | | var hasData = table.cache['multiPattern']; |
| | | |
| | | data.index = hasData.length + 1; |
| | | patternData.push(data); |
| | | |
| | | reloadPatternTable(patternData); |
| | | return data.index; |
| | | } |
| | | |
| | | function reloadPatternTable(data) { |
| | | table.reload('multiPattern', { |
| | | data : data |
| | | }); |
| | | |
| | | for (let i = 0; i < data.length; i++) { |
| | | if (data[i].skuPatternImage) { |
| | | $('#imagePatternUrls' + (i + 1)).css('display', 'block'); |
| | | } |
| | | // 重新绑定图片上传 |
| | | bindPatternUpload(i + 1); |
| | | } |
| | | } |
| | | |
| | | table.on('edit(multiPattern)', function(obj){ |
| | | var value = obj.value //得到修改后的值 |
| | | ,data = obj.data //得到所在行所有键值 |
| | | ,field = obj.field; //得到字段 |
| | | |
| | | for (let i = 0; i < patternData.length; i++) { |
| | | if (patternData[i].index == data.index) { |
| | | patternData[i] = data; |
| | | } |
| | | } |
| | | }); |
| | | |
| | | function bindPatternUpload(index) { |
| | | // 普通图片上传 |
| | | upload.render({ |
| | | elem: '#skuPatternImg' + index |
| | | , url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 |
| | | , done: function (res) { |
| | | febs.alert.success(res.data.src); |
| | | $('#imagePatternUrls' + index).attr('src', res.data.src); |
| | | $('#imagePatternUrls' + index).css('display', 'block'); |
| | | $('#skuPatternImage' + index).val(res.data.src); |
| | | |
| | | |
| | | for (let i = 0; i < patternData.length; i++) { |
| | | if (patternData[i].index == index) { |
| | | patternData[i].skuPatternImage = res.data.src; |
| | | } |
| | | } |
| | | |
| | | reloadPatternTable(patternData); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | var locationSet = xmSelect.render({ |
| | | |
| | | el: '#sc-location', |
| | | language: 'zn', |
| | | prop : { |
| | | value : 'id', |
| | | children : 'child' |
| | | }, |
| | | iconfont: { |
| | | parent: 'hidden', |
| | | }, |
| | | tips: '请选择', |
| | | filterable: true, |
| | | radio: true, |
| | | clickClose: true, |
| | | tree: { |
| | | show: true, |
| | | //非严格模式 |
| | | strict: false, |
| | | }, |
| | | data: [] |
| | | }) |
| | | |
| | | febs.get(ctx + 'admin/clothesType/allLocation/' + socialMuse.typeId, null, function(res) { |
| | | locationSet.update({ |
| | | data : res.data, |
| | | autoRow: true, |
| | | }); |
| | | }) |
| | | |
| | | $('#testLocation').on('click', function (){ |
| | | let locationChoice = locationSet.getValue(); |
| | | console.log(locationChoice); |
| | | if(locationChoice == null || locationChoice == ""){ |
| | | febs.alert.warn('请选择图案'); |
| | | return false; |
| | | } |
| | | for (let i = 0; i < locationChoice.length; i++) { |
| | | let data = {}; |
| | | data.locationId = locationChoice[i].id; |
| | | data.locationName = locationChoice[i].name; |
| | | addTableLocationDate(data); |
| | | } |
| | | }); |
| | | |
| | | var locationData=[]; |
| | | var tableInitLocation = table.render({ |
| | | elem: '#multiLocation' |
| | | ,limit:999 |
| | | ,toolbar:"#toolbar" |
| | | ,defaultToolbar:[] |
| | | ,cols:[[//表头 |
| | | |
| | | {type: 'checkbox'}, |
| | | {field: 'locationId', title: '反面ID', width:200,edit:'text'}, |
| | | {field: 'locationName', title: '反面图案', width:200,edit:'text'}, |
| | | {field: 'locationText', title: '文字', width:200,edit:'text'}, |
| | | {templet: '#tableLocationImgUpload', title: '图案', width:150}, |
| | | {field: 'skuLocationImage', title: '图案地址'}, |
| | | ]] |
| | | ,data: [] |
| | | |
| | | }); |
| | | |
| | | table.on('toolbar(multiLocation)', function(obj){ |
| | | var data = obj.data; |
| | | var hasData = table.cache['multiLocation']; |
| | | var checkData = table.checkStatus('multiLocation').data; |
| | | |
| | | if (checkData.length <= 0) { |
| | | febs.alert.warn('请选择删除数据'); |
| | | return; |
| | | } |
| | | if(obj.event === 'delSku'){ |
| | | for (let i = 0; i < checkData.length; i++) { |
| | | var delData = checkData[i]; |
| | | for (let j = 0; j < hasData.length; j++) { |
| | | if (hasData[j].index == delData.index) { |
| | | hasData.splice(j, 1); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | for (let i = 0; i < hasData.length; i++) { |
| | | hasData[i].index = i + 1; |
| | | } |
| | | |
| | | locationData=hasData; |
| | | reloadLocationTable(hasData); |
| | | } |
| | | }); |
| | | |
| | | function addTableLocationDate(data) { |
| | | var hasData = table.cache['multiLocation']; |
| | | |
| | | data.index = hasData.length + 1; |
| | | locationData.push(data); |
| | | |
| | | reloadLocationTable(locationData); |
| | | return data.index; |
| | | } |
| | | |
| | | function reloadLocationTable(data) { |
| | | table.reload('multiLocation', { |
| | | data : data |
| | | }); |
| | | |
| | | for (let i = 0; i < data.length; i++) { |
| | | if (data[i].skuLocationImage) { |
| | | $('#imageLocationUrls' + (i + 1)).css('display', 'block'); |
| | | } |
| | | // 重新绑定图片上传 |
| | | bindLocationUpload(i + 1); |
| | | } |
| | | } |
| | | |
| | | table.on('edit(multiLocation)', function(obj){ |
| | | var value = obj.value //得到修改后的值 |
| | | ,data = obj.data //得到所在行所有键值 |
| | | ,field = obj.field; //得到字段 |
| | | |
| | | for (let i = 0; i < locationData.length; i++) { |
| | | if (locationData[i].index == data.index) { |
| | | locationData[i] = data; |
| | | } |
| | | } |
| | | }); |
| | | |
| | | function bindLocationUpload(index) { |
| | | // 普通图片上传 |
| | | upload.render({ |
| | | elem: '#skuLocationImg' + index |
| | | , url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 |
| | | , done: function (res) { |
| | | febs.alert.success(res.data.src); |
| | | $('#imageLocationUrls' + index).attr('src', res.data.src); |
| | | $('#imageLocationUrls' + index).css('display', 'block'); |
| | | $('#skuLocationImage' + index).val(res.data.src); |
| | | |
| | | |
| | | for (let i = 0; i < locationData.length; i++) { |
| | | if (locationData[i].index == index) { |
| | | locationData[i].skuLocationImage = res.data.src; |
| | | } |
| | | } |
| | | |
| | | reloadLocationTable(locationData); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | //图片上传 |
| | | upload.render({ |
| | |
| | | }); |
| | | }) |
| | | |
| | | let scLocation = xmSelect.render({ |
| | | el: '#sc-location', |
| | | language: 'zn', |
| | | prop : { |
| | | value : 'id', |
| | | children : 'child' |
| | | }, |
| | | iconfont: { |
| | | parent: 'hidden', |
| | | }, |
| | | tips: '请选择', |
| | | filterable: true, |
| | | radio: true, |
| | | clickClose: true, |
| | | tree: { |
| | | show: true, |
| | | //非严格模式 |
| | | strict: false, |
| | | }, |
| | | data: [] |
| | | }) |
| | | |
| | | febs.get(ctx + 'admin/clothesType/allLocation/' + socialMuse.typeId, null, function(res) { |
| | | scLocation.update({ |
| | | data : res.data, |
| | | autoRow: true, |
| | | }); |
| | | }) |
| | | |
| | | let scPattern = xmSelect.render({ |
| | | el: '#sc-pattern', |
| | | language: 'zn', |
| | | prop : { |
| | | value : 'id', |
| | | children : 'child' |
| | | }, |
| | | iconfont: { |
| | | parent: 'hidden', |
| | | }, |
| | | tips: '请选择', |
| | | filterable: true, |
| | | radio: true, |
| | | clickClose: true, |
| | | tree: { |
| | | show: true, |
| | | //非严格模式 |
| | | strict: false, |
| | | }, |
| | | data: [] |
| | | }) |
| | | |
| | | febs.get(ctx + 'admin/clothesType/allPattern/' + socialMuse.typeId, null, function(res) { |
| | | scPattern.update({ |
| | | data : res.data, |
| | | autoRow: true, |
| | | }); |
| | | }) |
| | | |
| | | let scCloth = xmSelect.render({ |
| | | el: '#sc-cloth', |
| | | language: 'zn', |
| | |
| | | |
| | | form.val("sc-muse-update-form", { |
| | | "id": socialMuse.id, |
| | | "patternImage": socialMuse.patternImage, |
| | | "patternText": socialMuse.patternText, |
| | | }); |
| | | |
| | | $('#patternImageUpload').append('<img src="' + socialMuse.patternImage + '" alt="" class="layui-upload-img single-image" style="width: 130px">'); |
| | | $("#patternImage").val(socialMuse.patternImage); |
| | | |
| | | var artList = []; |
| | | artList.push(socialMuse.artId); |
| | |
| | | sizeList.push(socialMuse.sizeId); |
| | | scSize.setValue(sizeList); |
| | | |
| | | var patternList = []; |
| | | patternList.push(socialMuse.patternId); |
| | | scPattern.setValue(patternList); |
| | | |
| | | var clothList = []; |
| | | clothList.push(socialMuse.clothId); |
| | | scCloth.setValue(clothList); |
| | | |
| | | var locationList = []; |
| | | locationList.push(socialMuse.locationId); |
| | | scLocation.setValue(locationList); |
| | | var patternDataList = socialMuse.patternData; |
| | | if (patternDataList) { |
| | | for (let i = 0; i < patternDataList.length; i++) { |
| | | patternDataList[i].index = i+1; |
| | | } |
| | | patternData = patternDataList; |
| | | reloadPatternTable(patternData); |
| | | } |
| | | |
| | | var locationDataList = socialMuse.locationData; |
| | | if (locationDataList) { |
| | | for (let i = 0; i < locationDataList.length; i++) { |
| | | locationDataList[i].index = i+1; |
| | | } |
| | | locationData = locationDataList; |
| | | reloadLocationTable(locationData); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | form.on('submit(sc-muse-update-form-submit)', function (data) { |
| | | data.field.artId = scArt.getValue('valueStr'); |
| | | data.field.sizeId = scSize.getValue('valueStr'); |
| | | data.field.patternId = scPattern.getValue('valueStr'); |
| | | data.field.locationId = scLocation.getValue('valueStr'); |
| | | |
| | | data.field.patternData = patternData; |
| | | data.field.locationData = locationData; |
| | | |
| | | data.field.clothId = scCloth.getValue('valueStr'); |
| | | $.ajax({ |
| | | 'url':ctx + 'admin/clothesType/socialMuseUpdate', |
| | |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="artSet:view" lay-event="artSet">工艺配置</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="sizeSet:view" lay-event="sizeSet">尺码配置</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="clothSet:view" lay-event="clothSet">布料配置</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="patternSet:view" lay-event="patternSet">图案文字配置</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="locationSet:view" lay-event="locationSet">图案位置配置</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="patternSet:view" lay-event="patternSet">正面图案配置</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="locationSet:view" lay-event="locationSet">反面图案配置</button> |
| | | </div> |
| | | </script> |
| | | |
| | |
| | | febs.alert.warn('每次操作只能操作一行数据'); |
| | | return; |
| | | } |
| | | febs.modal.open('图案文字配置', 'modules/clothesType/patternSet/' + checkData[0].id, { |
| | | febs.modal.open('正面图案配置', 'modules/clothesType/patternSet/' + checkData[0].id, { |
| | | btn: ['提交', '取消'], |
| | | area:['100%','100%'], |
| | | yes: function (index, layero) { |
| | |
| | | febs.alert.warn('每次操作只能操作一行数据'); |
| | | return; |
| | | } |
| | | febs.modal.open('图案位置配置', 'modules/clothesType/locationSet/' + checkData[0].id, { |
| | | febs.modal.open('反面图案配置', 'modules/clothesType/locationSet/' + checkData[0].id, { |
| | | btn: ['提交', '取消'], |
| | | area:['100%','100%'], |
| | | yes: function (index, layero) { |
| | |
| | | {field: 'state', title: '允许上线', templet: '#stateSwitch', minWidth: 130,align:'center'}, |
| | | {field: 'clothState', title: '允许选择布料', templet: '#clothStateSwitch', minWidth: 130,align:'center'}, |
| | | {field: 'artState', title: '允许选择工艺', templet: '#artStateSwitch', minWidth: 130,align:'center'}, |
| | | {field: 'patternState', title: '允许选择图案', templet: '#patternStateSwitch', minWidth: 130,align:'center'}, |
| | | {field: 'locationState', title: '允许选择图案位置', templet: '#locationStateSwitch', minWidth: 180,align:'center'}, |
| | | {field: 'patternState', title: '允许选择正面图案', templet: '#patternStateSwitch', minWidth: 130,align:'center'}, |
| | | {field: 'locationState', title: '允许选择反面图案', templet: '#locationStateSwitch', minWidth: 180,align:'center'}, |
| | | {field: 'sizeState', title: '允许选择尺码', templet: '#sizeStateSwitch', minWidth: 130,align:'center'}, |
| | | {field: 'image',title: '小图标', |
| | | templet: function (d) { |