拼团列表

masters
Carl 2024-11-21 02:05:20 +08:00
parent 793ac29194
commit 1ac7cdf7f8
26 changed files with 685 additions and 38 deletions

View File

@ -19,6 +19,7 @@
<module>muyu-common-datasource</module>
<module>muyu-common-system</module>
<module>muyu-common-cache</module>
</modules>
<artifactId>muyu-common</artifactId>

View File

@ -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>

View File

@ -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);

View File

@ -50,6 +50,7 @@ public class FileUploadUtils {
throw new IOException(fe.getDefaultMessage(), fe);
} catch (Exception e) {
throw new IOException(e.getMessage(), e);
}
}

View File

@ -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);
}
}

View File

@ -109,6 +109,8 @@ public class ProjectInfo extends BaseEntity {
.build();
}
/**
*
*/

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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>

View File

@ -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);
}
}

View File

@ -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();
}
/**

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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
*/
}

View File

@ -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; ;
/**
*
*
@ -100,9 +114,6 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
}
return list(queryWrapper);
}
@ -110,12 +121,19 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
*
*
* @param projectInfoSaveReq
*
* @return
*/
@Override
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) {
@ -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;
}
}

View File

@ -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>

View File

@ -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>

View File

@ -16,6 +16,7 @@
<module>muyu-product-remote</module>
<module>muyu-product-server</module>
<module>muyu-product-cache</module>
</modules>
<properties>