From db43ef4bc6d068cdbcf3052871dd18c57dc4fcb7 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 16 Sep 2025 15:14:22 +0800 Subject: [PATCH] feat(ai): 新增 AiMemberPoint 实体、Mapper 及 XML配置 --- src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java | 281 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 275 insertions(+), 6 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java index f52d65f..25e79e9 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java @@ -3,6 +3,7 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.enumerates.*; +import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.properties.XcxProperties; import cc.mrbird.febs.common.utils.SpringContextHolder; import cc.mrbird.febs.common.utils.excl.ExcelSheetPO; @@ -16,16 +17,14 @@ 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.mall.vo.clothes.*; import cc.mrbird.febs.pay.util.WeixinServiceUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSON; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -44,6 +43,7 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; @@ -66,14 +66,17 @@ private final ClothesTypePatternMapper clothesTypePatternMapper; private final ClothesTypeLocationMapper clothesTypeLocationMapper; private final ClothesOrderMapper clothesOrderMapper; + private final ClothesOrderItemMapper clothesOrderItemMapper; private final MallExpressInfoMapper mallExpressInfoMapper; private final ClothesSocialMapper clothesSocialMapper; private final ClothesSocialFileMapper clothesSocialFileMapper; private final ClothesSocialMuseMapper clothesSocialMuseMapper; private final ClothesSocialCategoryMapper clothesSocialCategoryMapper; + private final ClothesMemberStatureMapper clothesMemberStatureMapper; private final ClothesPatternRemarkMapper clothesPatternRemarkMapper; private final ClothesLocationRemarkMapper clothesLocationRemarkMapper; + private final ClothesSocialCommentMapper clothesSocialCommentMapper; private final IApiMallMemberWalletService memberWalletService; private final IMallMoneyFlowService mallMoneyFlowService; @@ -212,6 +215,10 @@ clothesPattern.setOrderNum(dto.getOrderNum()); clothesPattern.setImage(dto.getImage()); clothesPattern.setContent(dto.getContent()); + clothesPattern.setBoxWidth(dto.getBoxWidth()); + clothesPattern.setBoxHeight(dto.getBoxHeight()); + clothesPattern.setLeftPercent(dto.getLeftPercent()); + clothesPattern.setTopPercent(dto.getTopPercent()); clothesPatternMapper.insert(clothesPattern); return new FebsResponse().success().message("操作成功"); } @@ -230,6 +237,11 @@ .set(ClothesPattern::getContent, dto.getContent()) .set(ClothesPattern::getOrderNum, dto.getOrderNum()) .set(ClothesPattern::getPrice, dto.getPrice()) + .set(ClothesPattern::getBoxHeight, dto.getBoxHeight()) + .set(ClothesPattern::getBoxWidth, dto.getBoxWidth()) + .set(ClothesPattern::getLeftPercent, dto.getLeftPercent()) + .set(ClothesPattern::getTopPercent, dto.getTopPercent()) + ); } return new FebsResponse().success().message("操作成功"); @@ -252,6 +264,10 @@ clothesLocation.setContent(dto.getContent()); clothesLocation.setPrice(dto.getPrice()); clothesLocation.setOrderNum(dto.getOrderNum()); + clothesLocation.setBoxHeight(dto.getBoxHeight()); + clothesLocation.setBoxWidth(dto.getBoxWidth()); + clothesLocation.setLeftPercent(dto.getLeftPercent()); + clothesLocation.setTopPercent(dto.getTopPercent()); clothesLocationMapper.insert(clothesLocation); return new FebsResponse().success().message("操作成功"); } @@ -270,6 +286,10 @@ .set(ClothesLocation::getPrice, dto.getPrice()) .set(ClothesLocation::getImage, dto.getImage()) .set(ClothesLocation::getContent, dto.getContent()) + .set(ClothesLocation::getBoxHeight, dto.getBoxHeight()) + .set(ClothesLocation::getBoxWidth, dto.getBoxWidth()) + .set(ClothesLocation::getLeftPercent, dto.getLeftPercent()) + .set(ClothesLocation::getTopPercent, dto.getTopPercent()) ); } return new FebsResponse().success().message("操作成功"); @@ -549,8 +569,8 @@ clothesOrderMapper.update( null, Wrappers.lambdaUpdate(ClothesOrder.class) - .set(ClothesOrder::getStatus, ClothesOrderStatusEnum.CANCEL.getValue()) - .set(ClothesOrder::getUpdatedTime, new Date()) + .set(ClothesOrder::getStatus, value) + .set(ClothesOrder::getUpdatedTime, date) .eq(ClothesOrder::getId, id) ); } @@ -752,6 +772,13 @@ } @Override + public IPage<AdminClothesSocialCommentVo> socialComment(ClothesSocialComment dto, QueryRequest request) { + Page<AdminClothesSocialCommentVo> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<AdminClothesSocialCommentVo> vos = clothesSocialCommentMapper.selectSocialCommentListInPage(page, dto); + return vos; + } + + @Override public FebsResponse socialState(Long id, Integer state) { ClothesSocial clothesSocial = clothesSocialMapper.selectById(id); @@ -763,6 +790,39 @@ Wrappers.lambdaUpdate(ClothesSocial.class) .set(ClothesSocial::getState, state) .eq(ClothesSocial::getId, id) + ); + return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse commentStateSwitch(Long id, Integer state) { + + ClothesSocial clothesSocial = clothesSocialMapper.selectById(id); + if(ObjectUtil.isNull(clothesSocial)){ + throw new RuntimeException("内容不存在"); + } + clothesSocialMapper.update( + null, + Wrappers.lambdaUpdate(ClothesSocial.class) + .set(ClothesSocial::getCommentState, state) + .eq(ClothesSocial::getId, id) + ); + return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse showStateSwitch(Long id, Integer state) { + + ClothesSocialComment clothesSocialComment = clothesSocialCommentMapper.selectById(id); + + if(ObjectUtil.isNull(clothesSocialComment)){ + throw new RuntimeException("评论不存在"); + } + clothesSocialCommentMapper.update( + null, + Wrappers.lambdaUpdate(ClothesSocialComment.class) + .set(ClothesSocialComment::getShowState, state) + .eq(ClothesSocialComment::getId, id) ); return new FebsResponse().success().message("操作成功"); } @@ -934,6 +994,8 @@ entity.setContent(dto.getContent()); entity.setIndexFile(dto.getIndexFile()); entity.setOrderCnt(dto.getOrderCnt()); + entity.setLikeCnt(dto.getLikeCnt()); + entity.setCollectCnt(dto.getCollectCnt()); clothesSocialMapper.updateById(entity); @@ -1110,4 +1172,211 @@ return new FebsResponse().success().message("操作成功"); } + @Override + public FebsResponse printOrder(AdminClothesPrintOrderDto dto) { + HashMap<String, Object> objectObjectHashMap = new HashMap<>(); + ClothesOrder order = clothesOrderMapper.selectById(dto.getId()); + if (ObjectUtil.isNotNull(order)){ + objectObjectHashMap.put("orderNo", order.getOrderNo()); + } + ClothesType clothesType = clothesTypeMapper.selectById(order.getTypeId()); + if (ObjectUtil.isNotNull(clothesType)) { + objectObjectHashMap.put("typeName", clothesType.getName()); + objectObjectHashMap.put("typeFront", clothesType.getImageFront()); + objectObjectHashMap.put("typeBack", clothesType.getImageBack()); + } + List<ClothesOrderItem> clothesOrderItems = clothesOrderItemMapper.selectList( + Wrappers.lambdaQuery(ClothesOrderItem.class) + .eq(ClothesOrderItem::getOrderId, order.getId()) + ); + if(CollUtil.isNotEmpty(clothesOrderItems)){ + for (ClothesOrderItem item : clothesOrderItems){ + if (ClothesOrderItemEnum.CLOTH.getCode() == item.getType()) { + ClothesCloth cloth = clothesClothMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(cloth)) { + objectObjectHashMap.put("clothName", cloth.getName()); + objectObjectHashMap.put("clothCode", cloth.getCode()); + } + continue; + } else if (ClothesOrderItemEnum.SIZE.getCode() == item.getType()) { + ClothesSize size = clothesSizeMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(size)) { + objectObjectHashMap.put("sizeName", size.getName()); + objectObjectHashMap.put("sizeCode", size.getCode()); + } + continue; + } else if (ClothesOrderItemEnum.LOCATION.getCode() == item.getType()) { + ClothesLocation location = clothesLocationMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(location)) { + objectObjectHashMap.put("locationName", location.getName()); + objectObjectHashMap.put("locationCode", location.getCode()); + + JSON parse = JSONUtil.parse(item.getRemark()); + objectObjectHashMap.put("locationText", parse.getByPath("text", String.class)); + objectObjectHashMap.put("locationImage", parse.getByPath("file", String.class)); + }else{ + objectObjectHashMap.put("locationName", ""); + objectObjectHashMap.put("locationCode", ""); + objectObjectHashMap.put("locationText", ""); + objectObjectHashMap.put("locationImage", ""); + } + continue; + } else if (ClothesOrderItemEnum.PATTERN.getCode() == item.getType()) { + ClothesPattern pattern = clothesPatternMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(pattern)) { + objectObjectHashMap.put("patternName", pattern.getName()); + objectObjectHashMap.put("patternCode", pattern.getCode()); + + JSON parse = JSONUtil.parse(item.getRemark()); + objectObjectHashMap.put("patternText", parse.getByPath("text", String.class)); + objectObjectHashMap.put("patternImage", parse.getByPath("file", String.class)); + }else{ + objectObjectHashMap.put("patternName", ""); + objectObjectHashMap.put("patternCode", ""); + objectObjectHashMap.put("patternText", ""); + objectObjectHashMap.put("patternImage", ""); + } + continue; + } else if (ClothesOrderItemEnum.ART.getCode() == item.getType()) { + ClothesArt art = clothesArtMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(art)) { + objectObjectHashMap.put("artName", art.getName()); + objectObjectHashMap.put("artCode", art.getCode()); + } + continue; + } else if (ClothesOrderItemEnum.CUSTOMIZE.getCode() == item.getType()) { + ClothesMemberStature clothesMemberStature = clothesMemberStatureMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(clothesMemberStature)) { + objectObjectHashMap.put("statureName", clothesMemberStature.getName()); + } + continue; + } else { + continue; + } + } + } + return new FebsResponse().success().data(objectObjectHashMap); + } + + @Override + public AdminClothesPrintOrderVo printOrderEvent(AdminClothesPrintOrderDto dto) { + + AdminClothesPrintOrderVo vo = new AdminClothesPrintOrderVo(); + + ClothesOrder order = clothesOrderMapper.selectById(dto.getId()); + if (ObjectUtil.isNotNull(order)){ + vo.setOrderNo(order.getOrderNo()); + } + ClothesType clothesType = clothesTypeMapper.selectById(order.getTypeId()); + if (ObjectUtil.isNotNull(clothesType)) { + vo.setTypeName(clothesType.getName()); + vo.setTypeFront(clothesType.getImageFront()); + vo.setTypeBack(clothesType.getImageBack()); + } + List<ClothesOrderItem> clothesOrderItems = clothesOrderItemMapper.selectList( + Wrappers.lambdaQuery(ClothesOrderItem.class) + .eq(ClothesOrderItem::getOrderId, order.getId()) + ); + if(CollUtil.isNotEmpty(clothesOrderItems)){ + String nullStr = "暂无"; + List<AdminClothesPrintLocationVo> locations = new ArrayList<>(); + List<AdminClothesPrintPatternVo> patterns = new ArrayList<>(); + for (ClothesOrderItem item : clothesOrderItems){ + if (ClothesOrderItemEnum.CLOTH.getCode() == item.getType()) { + ClothesCloth cloth = clothesClothMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(cloth)) { + vo.setClothCode(cloth.getCode()); + vo.setClothName(cloth.getName()); + }else{ + vo.setClothCode(nullStr); + vo.setClothName(nullStr); + } + continue; + } else if (ClothesOrderItemEnum.SIZE.getCode() == item.getType()) { + ClothesSize size = clothesSizeMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(size)) { + vo.setSizeName(size.getName()); + vo.setSizeCode(size.getCode()); + }else { + vo.setSizeName(nullStr); + vo.setSizeCode(nullStr); + } + continue; + } else if (ClothesOrderItemEnum.LOCATION.getCode() == item.getType()) { + AdminClothesPrintLocationVo locationVo = new AdminClothesPrintLocationVo(); + ClothesLocation location = clothesLocationMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(location)) { + locationVo.setLocationName(location.getName()); + locationVo.setLocationCode(location.getCode()); + + JSON parse = JSONUtil.parse(item.getRemark()); + locationVo.setLocationText(parse.getByPath("text", String.class)); + locationVo.setLocationImage(parse.getByPath("file", String.class)); + }else{ + locationVo.setLocationName(nullStr); + locationVo.setLocationCode(nullStr); + locationVo.setLocationText(nullStr); + locationVo.setLocationImage(nullStr); + } + locations.add(locationVo); + vo.setLocations( locations); + continue; + } else if (ClothesOrderItemEnum.PATTERN.getCode() == item.getType()) { + AdminClothesPrintPatternVo patternVo = new AdminClothesPrintPatternVo(); + + ClothesPattern pattern = clothesPatternMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(pattern)) { + patternVo.setPatternName(pattern.getName()); + patternVo.setPatternCode(pattern.getCode()); + + JSON parse = JSONUtil.parse(item.getRemark()); + patternVo.setPatternText(parse.getByPath("text", String.class)); + patternVo.setPatternImage(parse.getByPath("file", String.class)); + }else{ + patternVo.setPatternName(nullStr); + patternVo.setPatternCode(nullStr); + patternVo.setPatternText(nullStr); + patternVo.setPatternImage(nullStr); + } + patterns.add(patternVo); + vo.setPatterns( patterns); + continue; + } else if (ClothesOrderItemEnum.ART.getCode() == item.getType()) { + ClothesArt art = clothesArtMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(art)) { + vo.setArtName(art.getName()); + vo.setArtCode(art.getCode()); + }else{ + vo.setArtName(nullStr); + vo.setArtCode(nullStr); + } + continue; + } else if (ClothesOrderItemEnum.CUSTOMIZE.getCode() == item.getType()) { + AdminClothesPrintMemberStatureVo memberStature = new AdminClothesPrintMemberStatureVo(); + ClothesMemberStature clothesMemberStature = clothesMemberStatureMapper.selectById(item.getItemId()); + if (ObjectUtil.isNotNull(clothesMemberStature)) { + memberStature.setName(clothesMemberStature.getName()); + memberStature.setHeightLine(clothesMemberStature.getHeightLine()); + memberStature.setBustLine(clothesMemberStature.getBustLine()); + memberStature.setWaistLine(clothesMemberStature.getWaistLine()); + memberStature.setWideLine(clothesMemberStature.getWideLine()); + memberStature.setHipLine(clothesMemberStature.getHipLine()); + }else{ + memberStature.setName(nullStr); + memberStature.setHeightLine(BigDecimal.ZERO); + memberStature.setBustLine(BigDecimal.ZERO); + memberStature.setWaistLine(BigDecimal.ZERO); + memberStature.setWideLine(BigDecimal.ZERO); + memberStature.setHipLine(BigDecimal.ZERO); + } + vo.setMemberStature(memberStature); + continue; + } else { + continue; + } + } + } + return vo; + } + } -- Gitblit v1.9.1