团购id查询详情

1126/wuchang
wuchang2 2024-11-27 10:32:08 +08:00
parent a04925eab4
commit 3e66d44dd0
12 changed files with 479 additions and 10 deletions

View File

@ -0,0 +1,106 @@
package com.muyu.marketing.domain.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.resp.ActivityTeamProjectSkuResp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.List;
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityTeamInfoByIdQueryModel {
/**
* ID
*/
private Long teamId;
/**
*
*/
private String name;
/**
* ID
*/
private Long productId;
/**
*
*/
private String produceName;
/**
*
*/
private String productImage;
/**
*
*/
private String introduction;
/**
* temoteproduyce
*/
private String unit;
/**
*
*/
private String imageList;
/**
* SkU
*/
private List<ActivityTeamProjectSkuResp> activityTeamProjectSkuList;
/**
*
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date endTime;
/**
*
*/
private Integer sort;
/**
*
*/
private String content;
/**
*
*/
private String status;
/**
*
*/
private String strategyType;
/**
* ID
*/
private Long strategyId;
public static ActivityTeamInfoByIdQueryModel FindByIdQuery(ActivityTeamInfo activityTeamInfo,String name,List<ActivityTeamProjectSkuResp> activityTeamProjectSkuList){
return ActivityTeamInfoByIdQueryModel.builder()
.teamId(activityTeamInfo.getId())
.name(activityTeamInfo.getName())
.productId(activityTeamInfo.getProductId())
.produceName(name)
.productImage(activityTeamInfo.getProductImage())
.introduction(activityTeamInfo.getIntroduction())
.unit(activityTeamInfo.getUnit())
.imageList(activityTeamInfo.getImageList())
.activityTeamProjectSkuList(activityTeamProjectSkuList)
.endTime(activityTeamInfo.getEndTime())
.sort((int) activityTeamInfo.getSort())
.content(activityTeamInfo.getContent())
.status(activityTeamInfo.getStatus())
.strategyType(activityTeamInfo.getStrategyType())
.strategyId(activityTeamInfo.getStrategyId())
.build();
}
}

View File

@ -0,0 +1,43 @@
package com.muyu.marketing.domain.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.math.BigDecimal;
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class ActivityTeamProductSKUModel {
/**
* SkuID
*/
private Long id;
/**
* ID
*/
private Long teamId;
/**
* ID
*/
private Long productId;
/**
* SKu
*/
private String sku;
/**
*
*/
private BigDecimal teamPrice;
/**
*
*/
private Long teamStock;
}

View File

@ -51,5 +51,7 @@ public class TeamProductDiscountPriceModel {
productPrice.subtract(teamPrice).divide(productPrice, 2, RoundingMode.HALF_UP).doubleValue() productPrice.subtract(teamPrice).divide(productPrice, 2, RoundingMode.HALF_UP).doubleValue()
) )
.build(); .build();
return null;
} }
} }

View File

@ -0,0 +1,104 @@
package com.muyu.marketing.domain.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.marketing.domain.model.ActivityTeamInfoByIdQueryModel;
import com.muyu.marketing.domain.req.TeamProjectSkuInfoAddReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.List;
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityTeamDetailResp {
/**
* ID
*/
private Long teamId;
/**
*
*/
private String name;
/**
* ID
*/
private Long productId;
/**
*
*/
private String productName;
/**
*
*/
private String productImage;
/**
*
*/
private String introduction;
/**
* temoteproduyce
*/
private String unit;
/**
*
*/
private String imageList;
/**
*
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date endTime;
/**
*
*/
private Integer sort;
/**
* SkU
*/
private List<ActivityTeamProjectSkuResp> activityTeamProjectSkuList;
/**
*
*/
private String content;
/**
*
*/
private String status;
/**
*
*/
private String strategyType;
/**
* ID
*/
private Long strategyId;
public static ActivityTeamDetailResp findByTeamId(ActivityTeamInfoByIdQueryModel activityTeamInfoByIdQueryModel){
return ActivityTeamDetailResp.builder()
.teamId(activityTeamInfoByIdQueryModel.getTeamId())
.name(activityTeamInfoByIdQueryModel.getName())
.productId(activityTeamInfoByIdQueryModel.getProductId())
.productName(activityTeamInfoByIdQueryModel.getProduceName())
.productImage(activityTeamInfoByIdQueryModel.getProductImage())
.introduction(activityTeamInfoByIdQueryModel.getIntroduction())
.unit(activityTeamInfoByIdQueryModel.getUnit())
.imageList(activityTeamInfoByIdQueryModel.getImageList())
.activityTeamProjectSkuList(activityTeamInfoByIdQueryModel.getActivityTeamProjectSkuList())
.endTime(activityTeamInfoByIdQueryModel.getEndTime())
.sort(activityTeamInfoByIdQueryModel.getSort())
.content(activityTeamInfoByIdQueryModel.getContent())
.status(activityTeamInfoByIdQueryModel.getStatus())
.strategyType(activityTeamInfoByIdQueryModel.getStrategyType())
.strategyId(activityTeamInfoByIdQueryModel.getStrategyId())
.build();
}
}

View File

@ -0,0 +1,79 @@
package com.muyu.marketing.domain.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.marketing.domain.req.TeamProjectSkuInfoAddReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.List;
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityTeamInfoResp {
/**
* id
*/
private Long id;
/**
*
*/
private String name;
/**
* ID
*/
private Long productId;
/**
*
*/
private String productImage;
/**
*
*/
private String introduction;
/**
*
*/
private String unit;
/**
*
*/
private String imageList;
/**
*
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date endTime;
/**
*
*/
private Integer sort;
/**
* SkU
*/
private List<TeamProjectSkuInfoAddReq> teamProjectSkuInfoAddReqList;
/**
*
*/
private String content;
/**
*
*/
private String status;
/**
*
*/
private String strategyType;
/**
* ID
*/
private Long strategyId;
}

View File

@ -0,0 +1,44 @@
package com.muyu.marketing.domain.resp;
import com.muyu.marketing.domain.model.ActivityTeamProductSKUModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.math.BigDecimal;
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class ActivityTeamProjectSkuResp {
/**
* SkuID
*/
private Long productSkuId;
/**
* SKu
*/
private String sku;
/**
*
*/
private BigDecimal teamPrice;
/**
*
*/
private Long teamStock;
public static ActivityTeamProjectSkuResp getById(ActivityTeamProductSKUModel activityTeamProductSKUModel){
return ActivityTeamProjectSkuResp.builder()
.productSkuId(activityTeamProductSKUModel.getProductId())
.sku(activityTeamProductSKUModel.getSku())
.teamPrice(activityTeamProductSKUModel.getTeamPrice())
.teamStock(activityTeamProductSKUModel.getTeamStock())
.build();
}
}

View File

@ -95,6 +95,13 @@
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>
<artifactId>muyu-product-cache</artifactId> <artifactId>muyu-product-cache</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-product-server</artifactId>
<version>3.6.3</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -4,16 +4,15 @@ package com.muyu.marketing.team.controller;
import com.muyu.common.core.domain.Result; import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel; import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoByIdQueryModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListModel;
import com.muyu.marketing.domain.req.ActivityTeamInfoSaveReq; import com.muyu.marketing.domain.req.ActivityTeamInfoSaveReq;
import com.muyu.marketing.domain.req.TeamInfoListReq; import com.muyu.marketing.domain.req.TeamInfoListReq;
import com.muyu.marketing.domain.resp.ActivityTeamDetailResp;
import com.muyu.marketing.domain.resp.TeamInfoListResp; import com.muyu.marketing.domain.resp.TeamInfoListResp;
import com.muyu.marketing.team.service.ActivityTeamInfoService; import com.muyu.marketing.team.service.ActivityTeamInfoService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@ -58,4 +57,12 @@ public class ActivityTeamController {
activityTeamInfoService.save(ActivityTeamInfoAddModel.addReqBuild(activityTeamInfoSaveReq)); activityTeamInfoService.save(ActivityTeamInfoAddModel.addReqBuild(activityTeamInfoSaveReq));
return Result.success(); return Result.success();
} }
@GetMapping("/findByTeamId/{id}")
public Result<ActivityTeamDetailResp> findByTeamId(@PathVariable Long id){
ActivityTeamInfoByIdQueryModel infoByIdQueryModel = activityTeamInfoService.findByTeamId(id);
return Result.success(ActivityTeamDetailResp.findByTeamId(infoByIdQueryModel));
}
} }

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.marketing.domain.ActivityTeamInfo; import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel; import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoByIdQueryModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel;
@ -24,4 +25,9 @@ public interface ActivityTeamInfoService extends IService<ActivityTeamInfo> {
* @param activityTeamInfoAddModel * @param activityTeamInfoAddModel
*/ */
public void save(ActivityTeamInfoAddModel activityTeamInfoAddModel); public void save(ActivityTeamInfoAddModel activityTeamInfoAddModel);
public ActivityTeamInfoByIdQueryModel findByTeamId(Long teamId);
} }

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.marketing.domain.TeamStrategyExemptionHundred; import com.muyu.marketing.domain.TeamStrategyExemptionHundred;
import com.muyu.marketing.domain.model.ActivityTeamProductSKUModel;
import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel; import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel;
import com.muyu.marketing.domain.model.TeamProductDiscountPriceModel; import com.muyu.marketing.domain.model.TeamProductDiscountPriceModel;
import com.muyu.marketing.domain.model.TeamProductStockModel; import com.muyu.marketing.domain.model.TeamProductStockModel;
@ -41,4 +42,12 @@ public interface ActivityTeamProductSkuInfoService extends IService<ActivityTeam
*/ */
public void batchSave(List<ActivityTeamProductSkuAddModel> activityTeamProductSkuAddModelList); public void batchSave(List<ActivityTeamProductSkuAddModel> activityTeamProductSkuAddModelList);
/**
* IDSKU
* @param teamId id
* @return SKU
*/
public List<ActivityTeamProductSKUModel> findListByTeamId(Long teamId);
} }

View File

@ -4,22 +4,29 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.exception.ServiceException; import com.muyu.common.core.exception.ServiceException;
import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.marketing.domain.ActivityTeamInfo; import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.marketing.domain.model.*; import com.muyu.marketing.domain.model.*;
import com.muyu.marketing.domain.resp.ActivityTeamProjectSkuResp;
import com.muyu.marketing.team.mapper.ActivityTeamInfoMapper; import com.muyu.marketing.team.mapper.ActivityTeamInfoMapper;
import com.muyu.marketing.team.service.ActivityTeamInfoService; import com.muyu.marketing.team.service.ActivityTeamInfoService;
import com.muyu.marketing.team.service.ActivityTeamOpenInfoService; import com.muyu.marketing.team.service.ActivityTeamOpenInfoService;
import com.muyu.marketing.team.service.ActivityTeamProductSkuInfoService; import com.muyu.marketing.team.service.ActivityTeamProductSkuInfoService;
import com.muyu.product.domain.ProjectInfo;
import com.muyu.product.remote.RemoteProjectInfoService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.stream.Collectors;
@Service @Service
@ -32,6 +39,9 @@ public class ActivityTeamInfoServiceImpl extends ServiceImpl<ActivityTeamInfoMap
@Autowired @Autowired
private ActivityTeamProductSkuInfoService activityTeamProductSkuInfoService; private ActivityTeamProductSkuInfoService activityTeamProductSkuInfoService;
@Autowired
private RemoteProjectInfoService remoteProjectInfoService;
@Override @Override
public TableDataInfo<ActivityTeamInfoListModel> query(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel) { public TableDataInfo<ActivityTeamInfoListModel> query(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel) {
@ -77,9 +87,31 @@ public class ActivityTeamInfoServiceImpl extends ServiceImpl<ActivityTeamInfoMap
@Override @Override
public void save(ActivityTeamInfoAddModel activityTeamInfoAddModel) { public void save(ActivityTeamInfoAddModel activityTeamInfoAddModel) {
ActivityTeamInfo activityTeamInfo = ActivityTeamInfo.addModelBuild(activityTeamInfoAddModel); ActivityTeamInfo activityTeamInfo = ActivityTeamInfo.addModelBuild(activityTeamInfoAddModel);
Assert.isTrue(this.save(activityTeamInfo), StringUtils.format("团购活动添加失败:[{}]", activityTeamInfoAddModel)); //判是否添加成功 失败测提示
Assert.isTrue(
this.save(activityTeamInfo), StringUtils.format("团购活动添加失败:[{}]", activityTeamInfoAddModel)
);
List<ActivityTeamProductSkuAddModel> teamProductSkuAddModelList = activityTeamInfoAddModel.getActivityTeamProductSkuAddModelList(); List<ActivityTeamProductSkuAddModel> teamProductSkuAddModelList = activityTeamInfoAddModel.getActivityTeamProductSkuAddModelList();
teamProductSkuAddModelList.forEach(activityTeamProductSkuAddModel -> activityTeamProductSkuAddModel.setTeamId(activityTeamInfo.getId())); teamProductSkuAddModelList.forEach(activityTeamProductSkuAddModel -> activityTeamProductSkuAddModel.setTeamId(activityTeamInfo.getId()));
this.activityTeamProductSkuInfoService.batchSave(teamProductSkuAddModelList); this.activityTeamProductSkuInfoService.batchSave(teamProductSkuAddModelList);
} }
@Transactional
@Override
public ActivityTeamInfoByIdQueryModel findByTeamId(Long teamId) {
ActivityTeamInfo byId = this.getById(teamId);
Result<ProjectInfo> projectInfo = remoteProjectInfoService.getInfo(byId.getProductId());
ProjectInfo data = projectInfo.getData();
String name = data.getName();
List<ActivityTeamProductSKUModel> activityTeamProductSKUModels = activityTeamProductSkuInfoService.findListByTeamId(teamId);
return ActivityTeamInfoByIdQueryModel.FindByIdQuery(byId,name,
activityTeamProductSKUModels.stream().map(activityTeamProductSKUModel -> {
return ActivityTeamProjectSkuResp.getById(activityTeamProductSKUModel);
}).collect(Collectors.toList())
);
}
} }

View File

@ -4,22 +4,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.exception.ServiceException; import com.muyu.common.core.exception.ServiceException;
import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.marketing.domain.model.ActivityTeamProductSKUModel;
import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel; import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel;
import com.muyu.marketing.domain.model.TeamProductDiscountPriceModel; import com.muyu.marketing.domain.model.TeamProductDiscountPriceModel;
import com.muyu.marketing.domain.model.TeamProductStockModel; import com.muyu.marketing.domain.model.TeamProductStockModel;
import com.muyu.marketing.team.mapper.ActivityTeamProductSkuInfoMapper; import com.muyu.marketing.team.mapper.ActivityTeamProductSkuInfoMapper;
import com.muyu.marketing.team.service.ActivityTeamProductSkuInfoService; import com.muyu.marketing.team.service.ActivityTeamProductSkuInfoService;
import com.muyu.product.cache.ProjectSkuCache; import com.muyu.product.cache.ProjectSkuCache;
import com.muyu.product.domain.AsAttributeGroup;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.domain.ProjectSkuInfo; import com.muyu.product.domain.ProjectSkuInfo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList; import java.util.*;
import java.util.Comparator; import java.util.stream.Collectors;
import java.util.List;
import java.util.Optional;
@Service @Service
public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl<ActivityTeamProductSkuInfoMapper, ActivityTeamProductSkuInfo> public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl<ActivityTeamProductSkuInfoMapper, ActivityTeamProductSkuInfo>
@ -80,4 +81,33 @@ public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl<ActivityT
activityTeamProductSkuAddModelList.stream().map(ActivityTeamProductSkuInfo::modelBuild).toList() activityTeamProductSkuAddModelList.stream().map(ActivityTeamProductSkuInfo::modelBuild).toList()
); );
} }
/**
* IDSKU
* @param teamId id
* @return SKU
*/
@Override
public List<ActivityTeamProductSKUModel> findListByTeamId(Long teamId) {
ActivityTeamProductSkuInfo byId = getById(teamId);
LambdaQueryWrapper<ActivityTeamProductSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId, teamId);
List<ActivityTeamProductSkuInfo> list = this.list(queryWrapper);
List<ActivityTeamProductSKUModel> list1 = list.stream().map(activityTeamProductSkuInfo -> {
return ActivityTeamProductSKUModel.builder()
.id(activityTeamProductSkuInfo.getId())
.productId(activityTeamProductSkuInfo.getProductId())
.teamId(activityTeamProductSkuInfo.getTeamId())
.sku(activityTeamProductSkuInfo.getProductSku())
.teamPrice(activityTeamProductSkuInfo.getTeamPrice())
.teamStock(activityTeamProductSkuInfo.getTeamStock())
.build();
}).filter(Objects::nonNull) // 过滤掉null值
.collect(Collectors.toList());
return list1;
}
} }