From 1d93bc217c072504f341b0bc9ad65466aea31151 Mon Sep 17 00:00:00 2001 From: liuyingfang <1357764963@qq.com> Date: Sat, 30 Mar 2024 11:56:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=8D=B7=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/TbProductController.java | 6 + .../cashier/dto/shop/TbMerchantCouponDto.java | 5 +- .../ysk/cashier/dto/shop/TbShopInfoDto.java | 2 + .../cashier/pojo/shop/TbMerchantCoupon.java | 291 +++++++++++++++++- .../cn/ysk/cashier/pojo/shop/TbShopInfo.java | 4 + .../product/TbProductRepository.java | 8 + .../productimpl/TbProductServiceImpl.java | 7 + .../shopimpl/TbMerchantCouponServiceImpl.java | 60 +++- .../impl/shopimpl/TbShopInfoServiceImpl.java | 1 + .../service/product/TbProductService.java | 2 + .../service/shop/TbMerchantCouponService.java | 2 +- .../main/java/cn/ysk/cashier/vo/CouponVO.java | 29 ++ .../src/main/resources/config/application.yml | 4 +- 13 files changed, 398 insertions(+), 23 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/vo/CouponVO.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductController.java index fe39d203..4f1d300b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductController.java @@ -51,6 +51,12 @@ public class TbProductController { return new ResponseEntity<>(tbProductService.queryAll(criteria),HttpStatus.OK); } + @GetMapping("/isHot") + public ResponseEntity updateIsHot(@RequestParam String shopId, @RequestParam Integer id){ + tbProductService.updateIsHot(id,shopId); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + @GetMapping("/{product}") @Log("查询/product") @ApiOperation("查询/product") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbMerchantCouponDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbMerchantCouponDto.java index aa46cf70..9060c0c7 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbMerchantCouponDto.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbMerchantCouponDto.java @@ -18,6 +18,7 @@ package cn.ysk.cashier.dto.shop; import lombok.Data; import java.math.BigDecimal; import java.io.Serializable; +import java.sql.Timestamp; /** * @website https://eladmin.vip @@ -44,10 +45,10 @@ public class TbMerchantCouponDto implements Serializable { private String shopSnap; /** 开始时间 */ - private Long fromTime; + private Timestamp fromTime; /** 到期时间 */ - private Long toTime; + private Timestamp toTime; /** 限领数量 */ private Integer limitNumber; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopInfoDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopInfoDto.java index c5b55a09..4c406bce 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopInfoDto.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopInfoDto.java @@ -169,4 +169,6 @@ public class TbShopInfoDto implements Serializable { private String password; private String profiles; + + private String isOpenYhq; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbMerchantCoupon.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbMerchantCoupon.java index e0887b0e..79675f92 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbMerchantCoupon.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbMerchantCoupon.java @@ -23,6 +23,7 @@ import javax.persistence.*; import javax.validation.constraints.*; import java.math.BigDecimal; import java.io.Serializable; +import java.sql.Timestamp; /** * @website https://eladmin.vip @@ -31,7 +32,6 @@ import java.io.Serializable; * @date 2024-03-20 **/ @Entity -@Data @Table(name="tb_merchant_coupon") public class TbMerchantCoupon implements Serializable { @@ -52,7 +52,7 @@ public class TbMerchantCoupon implements Serializable { @Column(name = "`template_id`",nullable = false) @NotBlank @ApiModelProperty(value = "templateId") - private String templateId; + private String templateId = "0"; @Column(name = "`shop_id`") @ApiModelProperty(value = "shopId") @@ -62,15 +62,13 @@ public class TbMerchantCoupon implements Serializable { @ApiModelProperty(value = "shopSnap") private String shopSnap; - @Column(name = "`from_time`",nullable = false) - @NotNull + @Column(name = "`from_time`") @ApiModelProperty(value = "开始时间") - private Long fromTime; + private Timestamp fromTime; - @Column(name = "`to_time`",nullable = false) - @NotNull + @Column(name = "`to_time`") @ApiModelProperty(value = "到期时间") - private Long toTime; + private Timestamp toTime; @Column(name = "`limit_number`") @ApiModelProperty(value = "限领数量") @@ -81,7 +79,6 @@ public class TbMerchantCoupon implements Serializable { private Integer number; @Column(name = "`left_number`",nullable = false) - @NotNull @ApiModelProperty(value = "剩余数量") private Integer leftNumber; @@ -118,11 +115,13 @@ public class TbMerchantCoupon implements Serializable { private String track; @Column(name = "`class_type`") - @ApiModelProperty(value = "品类product 商品券 ---cateogry 品类券common -通 用券") + @ApiModelProperty(value = "品类product 商品券 ---cateogry 品类券common -通用券") + @NotNull private String classType; @Column(name = "`effect_type`") @ApiModelProperty(value = "有效期类型:0-toTime有效 1-effectDays有效") + @NotNull private Integer effectType; @Column(name = "`effect_days`") @@ -182,4 +181,276 @@ public class TbMerchantCoupon implements Serializable { public void copy(TbMerchantCoupon source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getTemplateId() { + return templateId; + } + + public void setTemplateId(String templateId) { + this.templateId = templateId; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getShopSnap() { + return shopSnap; + } + + public void setShopSnap(String shopSnap) { + this.shopSnap = shopSnap; + } + + public Timestamp getFromTime() { + return fromTime; + } + + public void setFromTime(Timestamp fromTime) { + this.fromTime = fromTime; + } + + public Timestamp getToTime() { + return toTime; + } + + public void setToTime(Timestamp toTime) { + this.toTime = toTime; + } + + public Integer getLimitNumber() { + return limitNumber; + } + + public void setLimitNumber(Integer limitNumber) { + this.limitNumber = limitNumber; + } + + public Integer getNumber() { + return number; + } + + public void setNumber(Integer number) { + this.number = number; + } + + public Integer getLeftNumber() { + return leftNumber; + } + + public void setLeftNumber(Integer leftNumber) { + this.leftNumber = leftNumber; + } + + public BigDecimal getAmount() { + return amount; + } + + public void setAmount(BigDecimal amount) { + this.amount = amount; + } + + public BigDecimal getLimitAmount() { + return limitAmount; + } + + public void setLimitAmount(BigDecimal limitAmount) { + this.limitAmount = limitAmount; + } + + public Integer getIsShow() { + return isShow; + } + + public void setIsShow(Integer isShow) { + this.isShow = isShow; + } + + public String getPic() { + return pic; + } + + public void setPic(String pic) { + this.pic = pic; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Float getRatio() { + return ratio; + } + + public void setRatio(Float ratio) { + this.ratio = ratio; + } + + public BigDecimal getMaxRatioAmount() { + return maxRatioAmount; + } + + public void setMaxRatioAmount(BigDecimal maxRatioAmount) { + this.maxRatioAmount = maxRatioAmount; + } + + public String getTrack() { + return track; + } + + public void setTrack(String track) { + this.track = track; + } + + public String getClassType() { + return classType; + } + + public void setClassType(String classType) { + this.classType = classType; + } + + public Integer getEffectType() { + return effectType; + } + + public void setEffectType(Integer effectType) { + this.effectType = effectType; + } + + public Integer getEffectDays() { + return effectDays; + } + + public void setEffectDays(Integer effectDays) { + this.effectDays = effectDays; + } + + public String getRelationIds() { + return relationIds; + } + + public void setRelationIds(String relationIds) { + this.relationIds = relationIds; + } + + public String getRelationList() { + return relationList; + } + + public void setRelationList(String relationList) { + this.relationList = relationList; + } + + public String getEditor() { + return editor; + } + + public void setEditor(String editor) { + this.editor = editor; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } + + public Long getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Long createdAt) { + this.createdAt = createdAt; + } + + public Long getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Long updatedAt) { + this.updatedAt = updatedAt; + } + + public Integer getFurnishMeal() { + return furnishMeal; + } + + public void setFurnishMeal(Integer furnishMeal) { + this.furnishMeal = furnishMeal; + } + + public Integer getFurnishExpress() { + return furnishExpress; + } + + public void setFurnishExpress(Integer furnishExpress) { + this.furnishExpress = furnishExpress; + } + + public Integer getFurnishDraw() { + return furnishDraw; + } + + public void setFurnishDraw(Integer furnishDraw) { + this.furnishDraw = furnishDraw; + } + + public Integer getFurnishVir() { + return furnishVir; + } + + public void setFurnishVir(Integer furnishVir) { + this.furnishVir = furnishVir; + } + + public Integer getDisableDistribute() { + return disableDistribute; + } + + public void setDisableDistribute(Integer disableDistribute) { + this.disableDistribute = disableDistribute; + } + + public String getMerchantId() { + return merchantId; + } + + public void setMerchantId(String merchantId) { + this.merchantId = merchantId; + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopInfo.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopInfo.java index be88f982..5e0f4a6b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopInfo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopInfo.java @@ -217,6 +217,10 @@ public class TbShopInfo implements Serializable { @Column(name = "profiles") @ApiModelProperty(value = "未激活 no 试用probation 正式release") private String profiles=""; +// @Column(name = "is_open_yhq") +// @ApiModelProperty(value = "是否参与优惠券活动 0否 1是") + @Transient + private String isOpenYhq; public void copy(TbShopInfo source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(false)); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java index 530a53be..74886ee4 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java @@ -16,6 +16,7 @@ package cn.ysk.cashier.repository.product; import cn.ysk.cashier.pojo.product.TbProduct; +import org.apache.ibatis.annotations.Param; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Modifying; @@ -37,4 +38,11 @@ public interface TbProductRepository extends JpaRepository, @Query(value = "update tb_product set status = -1 where id in :productIds",nativeQuery = true) @Modifying void updateByStatus(List productIds); + @Query(value = "update tb_product set is_hot=1 where id = :id",nativeQuery = true) + @Modifying + void updateIsHot(@Param("id") Integer id); + + @Query(value = "update tb_product set is_hot=0 where shop_id = :shopId and is_hot = 1",nativeQuery = true) + @Modifying + void updateNullHot(@Param("shopId")String shopId); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java index af2dae28..70feb788 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java @@ -386,6 +386,13 @@ public class TbProductServiceImpl implements TbProductService { } } + @Transactional(rollbackFor = Exception.class) + @Override + public void updateIsHot(Integer id, String shopId) { + tbProductRepository.updateNullHot(shopId); + tbProductRepository.updateIsHot(id); + } + @Override @Transactional public void deleteAll(Integer[] ids) { diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbMerchantCouponServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbMerchantCouponServiceImpl.java index 1f370d36..889d8ca9 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbMerchantCouponServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbMerchantCouponServiceImpl.java @@ -15,27 +15,33 @@ */ package cn.ysk.cashier.service.impl.shopimpl; +import cn.hutool.core.bean.BeanUtil; +import cn.ysk.cashier.exception.BadRequestException; +import cn.ysk.cashier.pojo.product.TbProduct; import cn.ysk.cashier.pojo.shop.TbMerchantCoupon; +import cn.ysk.cashier.repository.product.TbProductRepository; import cn.ysk.cashier.utils.ValidationUtil; import cn.ysk.cashier.utils.FileUtil; +import cn.ysk.cashier.vo.CouponVO; import lombok.RequiredArgsConstructor; import cn.ysk.cashier.repository.shop.TbMerchantCouponRepository; import cn.ysk.cashier.service.shop.TbMerchantCouponService; import cn.ysk.cashier.dto.shop.TbMerchantCouponDto; import cn.ysk.cashier.dto.shop.TbMerchantCouponQueryCriteria; import cn.ysk.cashier.mapper.shop.TbMerchantCouponMapper; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import cn.ysk.cashier.utils.PageUtil; import cn.ysk.cashier.utils.QueryHelp; -import java.util.List; -import java.util.Map; + +import java.sql.Timestamp; +import java.time.Instant; +import java.util.*; import java.io.IOException; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.LinkedHashMap; /** * @website https://eladmin.vip @@ -49,13 +55,30 @@ public class TbMerchantCouponServiceImpl implements TbMerchantCouponService { private final TbMerchantCouponRepository tbMerchantCouponRepository; private final TbMerchantCouponMapper tbMerchantCouponMapper; + private final TbProductRepository tbProductRepository; @Override public Map queryAll(TbMerchantCouponQueryCriteria criteria, Pageable pageable){ Page page = tbMerchantCouponRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); - return PageUtil.toPage(page.map(tbMerchantCouponMapper::toDto)); + List objects = new ArrayList<>(); + for (TbMerchantCoupon o :page.getContent()) { + CouponVO couponVO = new CouponVO(); + BeanUtils.copyProperties(o,couponVO); + if (!o.getRelationIds().isEmpty()) { + List integers = new ArrayList<>(); + integers.add(Integer.valueOf(o.getRelationIds())); + List byIds = tbProductRepository.findByIds(integers); + couponVO.setName(byIds.get(0).getName()); + couponVO.setCoverImg(byIds.get(0).getCoverImg()); + } + objects.add(couponVO); + } + HashMap couponvoMap = new HashMap<>(); + couponvoMap.put("content", objects); + couponvoMap.put("totalElements", page.getTotalElements()); + return couponvoMap; +// return PageUtil.toPage(page.map(tbMerchantCouponMapper::toDto)); } - @Override public List queryAll(TbMerchantCouponQueryCriteria criteria){ return tbMerchantCouponMapper.toDto(tbMerchantCouponRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); @@ -71,8 +94,29 @@ public class TbMerchantCouponServiceImpl implements TbMerchantCouponService { @Override @Transactional(rollbackFor = Exception.class) - public TbMerchantCouponDto create(TbMerchantCoupon resources) { - return tbMerchantCouponMapper.toDto(tbMerchantCouponRepository.save(resources)); + public TbMerchantCoupon create(TbMerchantCoupon resources) { + resources.setCreatedAt(Instant.now().toEpochMilli()); + resources.setUpdatedAt(Instant.now().toEpochMilli()); + if (resources.getEffectType() == 1){ + if (resources.getToTime() == null && resources.getFromTime() == null){ + throw new BadRequestException("开始时间结束时间为空"); + } + }else { + resources.setToTime(null); + resources.setFromTime(null); + } + + if ("product".equals(resources.getClassType())){ + if (resources.getRelationIds() == null){ + throw new BadRequestException("商品不能为空"); + } + } + if (resources.getNumber() == 0){ + resources.setLeftNumber(0); + }else { + resources.setLeftNumber(resources.getNumber()); + } + return tbMerchantCouponRepository.save(resources); } @Override diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java index 2ff11400..24f7e390 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java @@ -142,6 +142,7 @@ public class TbShopInfoServiceImpl implements TbShopInfoService { tbShopInfo.setCreatedAt(Instant.now().toEpochMilli()); tbShopInfo.setUpdatedAt(Instant.now().toEpochMilli()); tbShopInfo.setOnSale(1); + tbShopInfo.setIsOpenYhq(resources.getIsOpenYhq()); //激活码 TbMerchantRegister tbMerchantRegister = new TbMerchantRegister(); if (resources.getRegisterCode() != null){ diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java index 906c7bbd..2026bc9b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java @@ -85,4 +85,6 @@ public interface TbProductService { * @throws IOException / */ void download(List all, HttpServletResponse response) throws IOException; + + void updateIsHot(Integer id, String shopId); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbMerchantCouponService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbMerchantCouponService.java index be56a095..8450783d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbMerchantCouponService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbMerchantCouponService.java @@ -59,7 +59,7 @@ public interface TbMerchantCouponService { * @param resources / * @return TbMerchantCouponDto */ - TbMerchantCouponDto create(TbMerchantCoupon resources); + TbMerchantCoupon create(TbMerchantCoupon resources); /** * 编辑 diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/CouponVO.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/CouponVO.java new file mode 100644 index 00000000..21d5473b --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/CouponVO.java @@ -0,0 +1,29 @@ +package cn.ysk.cashier.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +/** + * @author lyf + */ +@Data +public class CouponVO { + private BigDecimal amount; + private String classType; + private Integer effectDays; + private Integer leftNumber; + private BigDecimal limitAmount; + private Integer limitNumber; + private Integer number; + private Float ratio; + private Integer status; + private String name; + private String coverImg; + private String title; + private Integer type; + private Integer effectType; + private Timestamp fromTime; + private Timestamp toTime; +} diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml index c02955b0..0b683b9b 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -1,5 +1,5 @@ -#server: -# port: 8000 +server: + port: 8000 spring: freemarker: