拼团列表
parent
793ac29194
commit
1ac7cdf7f8
|
@ -19,6 +19,7 @@
|
|||
<module>muyu-common-datasource</module>
|
||||
<module>muyu-common-system</module>
|
||||
<module>muyu-common-cache</module>
|
||||
|
||||
</modules>
|
||||
|
||||
<artifactId>muyu-common</artifactId>
|
||||
|
|
|
@ -16,6 +16,11 @@
|
|||
</description>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.aliyun.oss</groupId>
|
||||
<artifactId>aliyun-sdk-oss</artifactId>
|
||||
<version>3.17.4</version>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringCloud Alibaba Nacos -->
|
||||
<dependency>
|
||||
|
|
|
@ -11,6 +11,8 @@ import org.springframework.web.bind.annotation.PostMapping;
|
|||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* 文件请求处理
|
||||
*
|
||||
|
@ -34,6 +36,7 @@ public class SysFileController {
|
|||
SysFile sysFile = new SysFile();
|
||||
sysFile.setName(FileUtils.getName(url));
|
||||
sysFile.setUrl(url);
|
||||
|
||||
return Result.success(sysFile);
|
||||
} catch (Exception e) {
|
||||
log.error("上传文件失败", e);
|
||||
|
|
|
@ -50,6 +50,7 @@ public class FileUploadUtils {
|
|||
throw new IOException(fe.getDefaultMessage(), fe);
|
||||
} catch (Exception e) {
|
||||
throw new IOException(e.getMessage(), e);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
package com.muyu.product.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@SuperBuilder
|
||||
public class ActivityTeamInfo {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private Integer id;
|
||||
private String name;
|
||||
private Long productId;
|
||||
private String productImage;
|
||||
|
||||
|
||||
private Date endTime;
|
||||
|
||||
private String status;
|
||||
|
||||
private String teamPrice;
|
||||
private String teamStock;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private String productPrice;
|
||||
|
||||
|
||||
private String attendNumber;
|
||||
|
||||
private String openTeamNumber;
|
||||
|
||||
private String addTeamNumber;
|
||||
|
||||
private String remainStock;
|
||||
|
||||
|
||||
public int getaddTeamNumberCount() {
|
||||
return Integer.parseInt(addTeamNumber);
|
||||
}
|
||||
}
|
|
@ -109,6 +109,8 @@ public class ProjectInfo extends BaseEntity {
|
|||
.build();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 添加构造器
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package com.muyu.product.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TeamStrategyExemption {
|
||||
|
||||
|
||||
private Integer id;
|
||||
private Integer duration;
|
||||
private Integer exemption_number;
|
||||
private Integer max_buy;
|
||||
private Integer one_buy;
|
||||
private Integer virtual_number;
|
||||
private String type;
|
||||
private String rule_info;
|
||||
private String status;
|
||||
private String create_by;
|
||||
private Date create_time;
|
||||
private String update_by;
|
||||
private Date update_time;
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package com.muyu.product.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TeamStrategyExemptionHundred {
|
||||
|
||||
|
||||
private Integer id;
|
||||
private Integer duration;
|
||||
private Integer max_buy;
|
||||
private Integer one_buy;
|
||||
private Integer virtual_number;
|
||||
private String status;
|
||||
private String rule_info;
|
||||
private String create_by;
|
||||
private Date create_time;
|
||||
private String update_by;
|
||||
private Date update_time;
|
||||
private String remark;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package com.muyu.product.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TeamStrategyExemptionOrdinary {
|
||||
|
||||
|
||||
private Integer id;
|
||||
private Integer duration;
|
||||
private Integer team_number;
|
||||
private Integer max_buy;
|
||||
private Integer one_buy;
|
||||
private Integer virtual_number;
|
||||
private String status;
|
||||
private String create_by;
|
||||
private Date create_time;
|
||||
private String update_by;
|
||||
private Date update_time;
|
||||
private String remark;
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.muyu.product.domain.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@SuperBuilder
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ActivittyTeamInfoQueryReqModel extends QueryModel<ActivittyTeamInfoQueryReqModel>{
|
||||
|
||||
|
||||
|
||||
|
||||
private String keyWord;
|
||||
private String status;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package com.muyu.product.domain.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@SuperBuilder
|
||||
public class ActivityTeamInfoListModel {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private Integer id;
|
||||
private String name;
|
||||
private Long productId;
|
||||
private String productImage;
|
||||
|
||||
|
||||
private Date endTime;
|
||||
|
||||
private String status;
|
||||
|
||||
private String teamPrice;
|
||||
private String teamStock;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private String productPrice;
|
||||
|
||||
|
||||
private String attendNumber;
|
||||
|
||||
private String openTeamNumber;
|
||||
|
||||
private String addTeamNumber;
|
||||
|
||||
private String remainStock;
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package com.muyu.product.domain.model;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.muyu.common.core.web.page.PageDomain;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@SuperBuilder
|
||||
public class QueryModel<T> {
|
||||
/*
|
||||
当前记录起始索引
|
||||
*/
|
||||
private Integer pageNum;
|
||||
|
||||
/*
|
||||
每页显示记录数
|
||||
*/
|
||||
|
||||
private Integer pageSize;
|
||||
|
||||
|
||||
private String orderByColumn;
|
||||
|
||||
|
||||
private boolean isAsc = true;
|
||||
|
||||
|
||||
public T domainBuild(PageDomain pageDomain) {
|
||||
this.pageNum = pageDomain.getPageNum();
|
||||
this.pageSize = pageDomain.getPageSize();
|
||||
this.orderByColumn = pageDomain.getOrderBy();
|
||||
this.isAsc = "asc".equals(pageDomain.getIsAsc()) ? true : false;
|
||||
return (T)this;
|
||||
}
|
||||
|
||||
|
||||
public <I> Page<I> buildPage() {
|
||||
|
||||
Page<I> page = Page.of(this.pageNum, this.pageSize);
|
||||
page.setOrders(List.of(this.isAsc()
|
||||
? OrderItem.asc(this.orderByColumn):OrderItem.desc(this.orderByColumn)));
|
||||
return page;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.muyu.product.domain.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
|
||||
public class ActivityTeamInfoReq {
|
||||
|
||||
|
||||
private String keyWord;
|
||||
private String status;
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package com.muyu.product.domain.resp;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class ProjectInfoResp {
|
||||
|
||||
private Long id;
|
||||
private String name;
|
||||
private String introduction;
|
||||
private Long mianType;
|
||||
private Long parentType;
|
||||
private Long type;
|
||||
private String image;
|
||||
private String carouselImages;
|
||||
private String status;
|
||||
private Long ruleId;
|
||||
private Long brandId;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private String mianTypeName;
|
||||
|
||||
private String parentTypeName;
|
||||
|
||||
|
||||
|
||||
private String typeName;
|
||||
|
||||
|
||||
private String ruleName;
|
||||
|
||||
|
||||
private String brandName;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -55,11 +55,11 @@
|
|||
</dependency>
|
||||
|
||||
<!-- Swagger UI -->
|
||||
<dependency>
|
||||
<!-- <dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger-ui</artifactId>
|
||||
<version>${swagger.fox.version}</version>
|
||||
</dependency>
|
||||
</dependency>-->
|
||||
|
||||
<!-- Mysql Connector -->
|
||||
<dependency>
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
package com.muyu.product.controller;
|
||||
|
||||
import com.muyu.common.core.domain.Result;
|
||||
import com.muyu.product.domain.ActivityTeamInfo;
|
||||
import com.muyu.product.service.PintuanServicce;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@CrossOrigin
|
||||
@RestController
|
||||
@RequestMapping("/pintuan")
|
||||
public class PintuanController {
|
||||
|
||||
@Autowired
|
||||
private PintuanServicce pimneyuanServicce;
|
||||
|
||||
|
||||
@GetMapping("/list")
|
||||
public Result list(@RequestBody ActivityTeamInfo activityTeamInfo ) {
|
||||
List<ActivityTeamInfo> list = pimneyuanServicce.list(activityTeamInfo);
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||
|
||||
import com.muyu.product.cache.ProjectInfoCache;
|
||||
import com.muyu.product.domain.resp.ProjectDetailResp;
|
||||
import com.muyu.product.domain.resp.ProjectInfoResp;
|
||||
import io.swagger.annotations.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
@ -50,9 +51,9 @@ public class ProjectInfoController extends BaseController {
|
|||
@ApiOperation("获取商品信息列表")
|
||||
@RequiresPermissions("product:info:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<ProjectInfo>> list(ProjectInfoQueryReq projectInfoQueryReq) {
|
||||
public Result<TableDataInfo<ProjectInfoResp>> list(ProjectInfoQueryReq projectInfoQueryReq) {
|
||||
startPage();
|
||||
List<ProjectInfo> list = projectInfoService.list(ProjectInfo.queryBuild(projectInfoQueryReq));
|
||||
List<ProjectInfoResp> list = projectInfoService.pageinfo(ProjectInfo.queryBuild(projectInfoQueryReq));
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
|
@ -121,8 +122,10 @@ public class ProjectInfoController extends BaseController {
|
|||
@Log(title = "商品信息", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/{id}")
|
||||
@ApiOperation("修改商品信息")
|
||||
public Result<String> edit(@PathVariable Long id, @RequestBody ProjectInfoEditReq projectInfoEditReq) {
|
||||
return toAjax(projectInfoService.updateById(ProjectInfo.editBuild(id,projectInfoEditReq)));
|
||||
public Result edit(@PathVariable Long id, @RequestBody ProjectInfoEditReq projectInfoEditReq) {
|
||||
projectInfoService.updProjects(id,projectInfoEditReq);
|
||||
return Result.success();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package com.muyu.product.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.muyu.product.domain.ActivityTeamInfo;
|
||||
import com.muyu.product.domain.req.ActivityTeamInfoReq;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
* 拼团展示详情表
|
||||
*
|
||||
* @author DongZeLiang
|
||||
* @date 2024-02-27
|
||||
*/
|
||||
@Mapper
|
||||
public interface PintuanMapper extends BaseMapper<ActivityTeamInfo> {
|
||||
|
||||
|
||||
@Select("SELECT\n" +
|
||||
"\tactivity_team_info.id,\n" +
|
||||
"\tactivity_team_info.NAME,\n" +
|
||||
"\tactivity_team_info.product_image,\n" +
|
||||
"\tactivity_team_product_sku_info.team_price,\n" +
|
||||
"\tactivity_team_product_sku_info.team_stock,\n" +
|
||||
"\tactivity_team_info.end_time,\n" +
|
||||
"\tactivity_team_info.STATUS \n" +
|
||||
"FROM\n" +
|
||||
"\tactivity_team_info\n" +
|
||||
"\tLEFT JOIN activity_team_product_sku_info ON activity_team_product_sku_info.id = activity_team_info.id\n" +
|
||||
" ")
|
||||
List<ActivityTeamInfo> listActivity(ActivityTeamInfoReq activityTeamInfoReq);
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -3,6 +3,7 @@ package com.muyu.product.mapper;
|
|||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.muyu.product.domain.ProjectInfo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 商品信息Mapper接口
|
||||
|
@ -12,4 +13,12 @@ import com.muyu.product.domain.ProjectInfo;
|
|||
*/
|
||||
public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {
|
||||
|
||||
|
||||
|
||||
ProjectInfo getuname(@Param("name") String name);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package com.muyu.product.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.muyu.common.core.web.page.TableDataInfo;
|
||||
import com.muyu.product.domain.ActivityTeamInfo;
|
||||
import com.muyu.product.domain.model.ActivittyTeamInfoQueryReqModel;
|
||||
import com.muyu.product.domain.model.ActivityTeamInfoListModel;
|
||||
import com.muyu.product.domain.req.ActivityTeamInfoReq;
|
||||
|
||||
public interface PintuanServicce extends IService<ActivityTeamInfo> {
|
||||
|
||||
|
||||
TableDataInfo<ActivityTeamInfoListModel> query (ActivittyTeamInfoQueryReqModel activittyTeamInfoQueryReqModel);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -1,10 +1,14 @@
|
|||
package com.muyu.product.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.muyu.common.core.domain.Result;
|
||||
import com.muyu.product.domain.ProjectInfo;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.muyu.product.domain.req.ProjectInfoEditReq;
|
||||
import com.muyu.product.domain.req.ProjectInfoSaveReq;
|
||||
import com.muyu.product.domain.resp.ProjectDetailResp;
|
||||
import com.muyu.product.domain.resp.ProjectInfoResp;
|
||||
|
||||
/**
|
||||
* 商品信息Service接口
|
||||
|
@ -34,4 +38,8 @@ public interface ProjectInfoService extends IService<ProjectInfo> {
|
|||
* @return 商品详情
|
||||
*/
|
||||
ProjectDetailResp getDetailInfo (Long id);
|
||||
|
||||
List<ProjectInfoResp> pageinfo(ProjectInfo queryBuild);
|
||||
|
||||
Result updProjects(Long id, ProjectInfoEditReq projectInfoEditReq);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
package com.muyu.product.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.muyu.common.core.utils.StringUtils;
|
||||
import com.muyu.common.core.web.page.TableDataInfo;
|
||||
import com.muyu.product.domain.ActivityTeamInfo;
|
||||
import com.muyu.product.domain.model.ActivittyTeamInfoQueryReqModel;
|
||||
import com.muyu.product.domain.model.ActivityTeamInfoListModel;
|
||||
import com.muyu.product.domain.req.ActivityTeamInfoReq;
|
||||
import com.muyu.product.mapper.PintuanMapper;
|
||||
import com.muyu.product.service.PintuanServicce;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
|
||||
|
||||
@Service
|
||||
public class PintuanServiceimpl extends ServiceImpl<PintuanMapper,ActivityTeamInfo> implements PintuanServicce {
|
||||
|
||||
|
||||
@Override
|
||||
public TableDataInfo<ActivityTeamInfoListModel> query(ActivittyTeamInfoQueryReqModel activittyTeamInfoQueryReqModel) {
|
||||
LambdaQueryWrapper<ActivityTeamInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
queryWrapper.like(StringUtils.isNotEmpty(activittyTeamInfoQueryReqModel.getKeyWord()),ActivityTeamInfo::getName,activittyTeamInfoQueryReqModel.getKeyWord());
|
||||
queryWrapper.like(StringUtils.isNotEmpty(activittyTeamInfoQueryReqModel.getStatus()),ActivityTeamInfo::getStatus,activittyTeamInfoQueryReqModel.getStatus());
|
||||
|
||||
|
||||
Page<ActivityTeamInfo> activityTeamInfoPage = this.page(activittyTeamInfoQueryReqModel.buildPage(), queryWrapper);
|
||||
List<ActivityTeamInfo> activityTeamInfoList = activityTeamInfoPage.getRecords();
|
||||
List<ActivityTeamInfoListModel> activityTeamInfoQueryReqList = new ArrayList<>();
|
||||
|
||||
|
||||
for (ActivityTeamInfo activityTeamInfo : activityTeamInfoList) {
|
||||
ActivityTeamInfoListModel activityTeamInfoListModel = new ActivityTeamInfoListModel();
|
||||
|
||||
activityTeamInfoListModel.setId(activityTeamInfo.getId());
|
||||
activityTeamInfoListModel.setName(activityTeamInfo.getName());
|
||||
long totalParticipants = activityTeamInfoList.stream()
|
||||
.mapToLong(ActivityTeamInfo::getaddTeamNumberCount)
|
||||
.sum();
|
||||
activityTeamInfoListModel.setAddTeamNumber(String.valueOf(totalParticipants));
|
||||
activityTeamInfoListModel.setOpenTeamNumber();
|
||||
activityTeamInfoListModel.setAttendNumber();
|
||||
activityTeamInfoListModel.setEndTime(activityTeamInfo.getEndTime());
|
||||
activityTeamInfoListModel.setProductImage(activityTeamInfo.getProductImage());
|
||||
activityTeamInfoListModel.setTeamPrice();
|
||||
activityTeamInfoListModel.setProductPrice();
|
||||
activityTeamInfoListModel.setTeamStock();
|
||||
activityTeamInfoListModel.setRemainStock();
|
||||
activityTeamInfoListModel.setStatus(activityTeamInfo.getStatus());
|
||||
|
||||
|
||||
activityTeamInfoQueryReqList.add(activityTeamInfoListModel);
|
||||
|
||||
}
|
||||
|
||||
TableDataInfo<ActivityTeamInfoListModel> tableDataInfo = new TableDataInfo<>();
|
||||
tableDataInfo.setTotal(activityTeamInfoPage.getTotal());
|
||||
tableDataInfo.setRows(activityTeamInfoQueryReqList);
|
||||
return tableDataInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品拼团列表
|
||||
*
|
||||
* @param activityTeamInfoReq 拼团信息展示
|
||||
* @return 商品拼团信息
|
||||
*/
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -2,15 +2,20 @@ package com.muyu.product.service.impl;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import com.muyu.common.core.domain.Result;
|
||||
import com.muyu.common.core.utils.ObjUtils;
|
||||
import com.muyu.common.security.utils.SecurityUtils;
|
||||
import com.muyu.product.domain.*;
|
||||
import com.muyu.product.domain.model.*;
|
||||
import com.muyu.product.domain.req.ProjectInfoEditReq;
|
||||
import com.muyu.product.domain.req.ProjectInfoSaveReq;
|
||||
import com.muyu.product.domain.resp.CategoryCommonElementResp;
|
||||
import com.muyu.product.domain.resp.ProjectDetailResp;
|
||||
import com.muyu.product.domain.resp.ProjectInfoResp;
|
||||
import com.muyu.product.mapper.RuleInfoMapper;
|
||||
import com.muyu.product.service.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -48,6 +53,15 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
|||
@Autowired
|
||||
private AttributeInfoService attributeInfoService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private RuleInfoMapper reluInfoMapper;
|
||||
|
||||
@Autowired
|
||||
private ProjectInfoMapper projectInfoMapper; ;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询商品信息列表
|
||||
*
|
||||
|
@ -59,50 +73,47 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
|||
LambdaQueryWrapper<ProjectInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
|
||||
if (ObjUtils.notNull(projectInfo.getName())){
|
||||
if (ObjUtils.notNull(projectInfo.getName())) {
|
||||
queryWrapper.like(ProjectInfo::getName, projectInfo.getName());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(projectInfo.getIntroduction())){
|
||||
if (ObjUtils.notNull(projectInfo.getIntroduction())) {
|
||||
queryWrapper.eq(ProjectInfo::getIntroduction, projectInfo.getIntroduction());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(projectInfo.getMianType())){
|
||||
if (ObjUtils.notNull(projectInfo.getMianType())) {
|
||||
queryWrapper.eq(ProjectInfo::getMianType, projectInfo.getMianType());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(projectInfo.getParentType())){
|
||||
if (ObjUtils.notNull(projectInfo.getParentType())) {
|
||||
queryWrapper.eq(ProjectInfo::getParentType, projectInfo.getParentType());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(projectInfo.getType())){
|
||||
if (ObjUtils.notNull(projectInfo.getType())) {
|
||||
queryWrapper.eq(ProjectInfo::getType, projectInfo.getType());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(projectInfo.getImage())){
|
||||
if (ObjUtils.notNull(projectInfo.getImage())) {
|
||||
queryWrapper.eq(ProjectInfo::getImage, projectInfo.getImage());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(projectInfo.getCarouselImages())){
|
||||
if (ObjUtils.notNull(projectInfo.getCarouselImages())) {
|
||||
queryWrapper.eq(ProjectInfo::getCarouselImages, projectInfo.getCarouselImages());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(projectInfo.getStatus())){
|
||||
if (ObjUtils.notNull(projectInfo.getStatus())) {
|
||||
queryWrapper.eq(ProjectInfo::getStatus, projectInfo.getStatus());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(projectInfo.getRuleId())){
|
||||
if (ObjUtils.notNull(projectInfo.getRuleId())) {
|
||||
queryWrapper.eq(ProjectInfo::getRuleId, projectInfo.getRuleId());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(projectInfo.getBrandId())){
|
||||
if (ObjUtils.notNull(projectInfo.getBrandId())) {
|
||||
queryWrapper.eq(ProjectInfo::getBrandId, projectInfo.getBrandId());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return list(queryWrapper);
|
||||
}
|
||||
|
||||
|
@ -110,21 +121,28 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
|||
* 保存商品信息
|
||||
*
|
||||
* @param projectInfoSaveReq 请求对象
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean save (ProjectInfoSaveReq projectInfoSaveReq) {
|
||||
public boolean save(ProjectInfoSaveReq projectInfoSaveReq) {
|
||||
ProjectAddModel projectAddModel = projectInfoSaveReq.getProjectAddModel();
|
||||
|
||||
String name = projectAddModel.getName();
|
||||
ProjectInfo getuname = projectInfoMapper.getuname(name);
|
||||
if(getuname!=null){
|
||||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
ProjectInfo projectInfo = ProjectInfo.saveModelBuild(projectAddModel, SecurityUtils::getUsername);
|
||||
boolean save = this.save(projectInfo);
|
||||
if (save){
|
||||
if (save) {
|
||||
// 属性值
|
||||
List<AttrValueModel> attrValueList = projectInfoSaveReq.getAttrValueList();
|
||||
List<AsProductAttributeInfo> asProductAttributeInfoList = attrValueList.stream()
|
||||
.map(attrValueModel -> AsProductAttributeInfo.attrValueModelBuild(attrValueModel, projectInfo::getId))
|
||||
.toList();
|
||||
if (!asProductAttributeInfoList.isEmpty()){
|
||||
if (!asProductAttributeInfoList.isEmpty()) {
|
||||
asProductAttributeInfoService.saveBatch(asProductAttributeInfoList);
|
||||
}
|
||||
// sku ProductSkuModel -》 ProjectSkuInfo
|
||||
|
@ -132,7 +150,7 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
|||
List<ProjectSkuInfo> projectSkuInfoList = productSkuModelList.stream().map(
|
||||
productSkuModel -> ProjectSkuInfo.productSkuModelBuild(productSkuModel, projectInfo::getId)
|
||||
).toList();
|
||||
if (!projectSkuInfoList.isEmpty()){
|
||||
if (!projectSkuInfoList.isEmpty()) {
|
||||
projectSkuInfoService.saveBatch(projectSkuInfoList);
|
||||
}
|
||||
}
|
||||
|
@ -146,7 +164,7 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
|||
* @return 商品详情
|
||||
*/
|
||||
@Override
|
||||
public ProjectDetailResp getDetailInfo (Long id) {
|
||||
public ProjectDetailResp getDetailInfo(Long id) {
|
||||
// 商品信息获取
|
||||
ProjectInfo projectInfo = this.getById(id);
|
||||
// 品牌信息
|
||||
|
@ -175,7 +193,7 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
|||
|
||||
CategoryCommonElementResp templateAttribute = this.categoryInfoService.getTemplateAttributeByCateGoryId(projectInfo.getType());
|
||||
List<TemplateAttributeGroupModel> templateAttributeGroupList = templateAttribute.getTemplateAttributeGroupList();
|
||||
List<TemplateAttributeModel> templateAttributeList = new ArrayList<>(){{
|
||||
List<TemplateAttributeModel> templateAttributeList = new ArrayList<>() {{
|
||||
addAll(templateAttribute.getTemplateAttributeList());
|
||||
}};
|
||||
// 属性组和商品属性的ID
|
||||
|
@ -187,11 +205,11 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
|||
List<Long> attributeIdList = templateAttributeList.stream()
|
||||
.map(TemplateAttributeModel::getId)
|
||||
.toList();
|
||||
if (!attributeGroupIdList.isEmpty()){
|
||||
notInAttributeIdList.addAll( attributeGroupIdList );
|
||||
if (!attributeGroupIdList.isEmpty()) {
|
||||
notInAttributeIdList.addAll(attributeGroupIdList);
|
||||
}
|
||||
if (!attributeIdList.isEmpty()){
|
||||
notInAttributeIdList.addAll( attributeIdList );
|
||||
if (!attributeIdList.isEmpty()) {
|
||||
notInAttributeIdList.addAll(attributeIdList);
|
||||
}
|
||||
// 添加上,商品的自有属性
|
||||
List<AsProductAttributeInfo> productAttributeList = this.asProductAttributeInfoService.list(
|
||||
|
@ -202,20 +220,20 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
|||
);
|
||||
|
||||
List<TemplateAttributeModel> projectAttributeList = new ArrayList<>();
|
||||
if (!productAttributeList.isEmpty()){
|
||||
if (!productAttributeList.isEmpty()) {
|
||||
List<Long> attrIdList = productAttributeList.stream()
|
||||
.map(AsProductAttributeInfo::getAttributeId)
|
||||
.toList();
|
||||
projectAttributeList = attributeInfoService.list(
|
||||
new LambdaQueryWrapper<>() {{
|
||||
in(AttributeInfo::getId, attrIdList);
|
||||
}}
|
||||
).stream()
|
||||
.map(TemplateAttributeModel::attributeInfoBuild)
|
||||
.toList();
|
||||
new LambdaQueryWrapper<>() {{
|
||||
in(AttributeInfo::getId, attrIdList);
|
||||
}}
|
||||
).stream()
|
||||
.map(TemplateAttributeModel::attributeInfoBuild)
|
||||
.toList();
|
||||
}
|
||||
// 把自有属性添加到商品属性的集合当中,进行合并
|
||||
if (!projectAttributeList.isEmpty()){
|
||||
if (!projectAttributeList.isEmpty()) {
|
||||
templateAttributeList.addAll(projectAttributeList);
|
||||
}
|
||||
return ProjectDetailResp.builder()
|
||||
|
@ -229,4 +247,57 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
|||
.attributeGroupList(templateAttributeGroupList)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProjectInfoResp> pageinfo(ProjectInfo queryBuild) {
|
||||
|
||||
List<ProjectInfo> list = list(queryBuild);
|
||||
|
||||
LinkedList<ProjectInfoResp> projectInfoRespLinkedList = new LinkedList<>();
|
||||
|
||||
list.forEach(p -> {
|
||||
CategoryInfo mianTypeName = categoryInfoService.getById(p.getMianType());
|
||||
CategoryInfo parentTypeName = categoryInfoService.getById(p.getParentType());
|
||||
CategoryInfo typeName = p.getType() != null ? categoryInfoService.getById(p.getType()) : null;
|
||||
|
||||
// 获取规格信息
|
||||
RuleInfo ruleName = reluInfoMapper.selectById(p.getRuleId());
|
||||
|
||||
|
||||
BrandInfo brandName = brandInfoService.getById(p.getBrandId());
|
||||
|
||||
ProjectInfoResp resp = ProjectInfoResp.builder()
|
||||
.id(p.getId())
|
||||
.name(p.getName())
|
||||
.introduction(p.getIntroduction())
|
||||
.mianType(p.getMianType())
|
||||
.parentType(p.getParentType())
|
||||
.type(p.getType())
|
||||
.image(p.getImage())
|
||||
.carouselImages(p.getCarouselImages())
|
||||
.status(p.getStatus())
|
||||
.mianTypeName(mianTypeName != null ? mianTypeName.getName() : "")
|
||||
.parentTypeName(parentTypeName != null ? parentTypeName.getName() : "")
|
||||
.typeName(typeName != null ? typeName.getName() : "")
|
||||
.ruleName(ruleName != null ? ruleName.getName() : "")
|
||||
.brandName(brandName != null ? brandName.getNam() : "")
|
||||
.build();
|
||||
|
||||
projectInfoRespLinkedList.add(resp);
|
||||
|
||||
});
|
||||
return projectInfoRespLinkedList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result updProjects(Long id, ProjectInfoEditReq projectInfoEditReq) {
|
||||
String name = projectInfoEditReq.getName();
|
||||
ProjectInfo getuname = projectInfoMapper.getuname(name);
|
||||
if(getuname!=null){
|
||||
return Result.error("商品名称重复");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<?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="com.muyu.product.mapper.PintuanMapper">
|
||||
|
||||
<resultMap type="com.muyu.product.domain.ActivityTeamInfo" id="ActivityTeamInfoResult ">
|
||||
<result property="id" column="id" />
|
||||
<result property="name" column="name" />
|
||||
<result property="productImage" column="product_image" />
|
||||
<result property="teamPrice" column="team_price" />
|
||||
<result property="teamStock" column="team_stock" />
|
||||
<result property="endTime" column="end_time" />
|
||||
<result property="status" column="status" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectActivityTeamInfo">
|
||||
select id, name, product_image, team_price, team_stock, end_time, status from activity_team_info
|
||||
</sql>
|
||||
|
||||
</mapper>
|
|
@ -26,4 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<sql id="selectProjectInfoVo">
|
||||
select id, name, introduction, mian_type, parent_type, type, image, carousel_images, status, rule_id, brand_id, remark, create_by, create_time, update_by, update_time from project_info
|
||||
</sql>
|
||||
<select id="getuname" resultType="com.muyu.product.domain.ProjectInfo">
|
||||
select * from project_info where name=#{name}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
<module>muyu-product-remote</module>
|
||||
<module>muyu-product-server</module>
|
||||
<module>muyu-product-cache</module>
|
||||
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
|
|
Loading…
Reference in New Issue