From e497a05ce312d26864b0c23cad97da9eb32c2cc1 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 10 Nov 2021 16:01:34 +0800 Subject: [PATCH] Merge branch 'score-shop' of http://120.27.238.55:7000/r/xzx into score-shop --- gc-shop/src/test/java/com/xzx/gc/CodeTest.java | 101 ++++++++++++++++++++ gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsDto.java | 3 gc-user/src/test/java/CodeTest.java | 75 ++++++++++---- gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsListVo.java | 15 +++ gc-shop/src/main/resources/sql | 11 ++ gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreOrderMapper.java | 4 gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java | 28 +++++ gc-shop/src/main/resources/mapper/shop/ScoreOrderMapper.xml | 15 +++ gc-shop/src/main/java/com/xzx/gc/shop/dto/AddGoodsDto.java | 3 gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java | 15 +++ gc-shop/src/main/java/com/xzx/gc/shop/vo/ViewGoodsVo.java | 3 gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailVo.java | 6 + 12 files changed, 254 insertions(+), 25 deletions(-) diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/AddGoodsDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/AddGoodsDto.java index b3e294c..3af606d 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/dto/AddGoodsDto.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/AddGoodsDto.java @@ -67,6 +67,9 @@ @ApiModelProperty(value="碳排放量",required=true) private Integer carbonEmissions; + @ApiModelProperty(value="限购次数") + private Integer quotaTime; + @ApiModelProperty(value="主图") private List<String> goodsImages; diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsDto.java index 2b182f4..7ee3354 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsDto.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsDto.java @@ -64,6 +64,9 @@ @ApiModelProperty(value="碳排放量",required=true) private Integer carbonEmissions; + @ApiModelProperty(value="限购次数") + private Integer quotaTime; + @ApiModelProperty(value="积分商品轮播图") private List<String> goodsImages; diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreOrderMapper.java b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreOrderMapper.java index a374f8f..8de12ef 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreOrderMapper.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreOrderMapper.java @@ -33,4 +33,8 @@ Integer selectScoreOrderCnt(@Param("userId") String userId); + Integer selectGoodsQuotaTime(@Param("userId")String userId, + @Param("goodsId")Long id, + @Param("qgStartTime")Date qgStartTime, + @Param("qgEndTime")Date qgEndTime); } diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java b/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java index 69b6199..75a4f6a 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java @@ -46,6 +46,8 @@ ScoreGoodsStyleMapper scoreGoodsStyleMapper; @Resource ScoreGoodsSearchMapper scoreGoodsSearchMapper; + @Resource + ScoreOrderMapper scoreOrderMapper; @Autowired private MqUtil mqUtil; @@ -327,6 +329,19 @@ PageHelper.startPage(xcxGoodsListDto.getPageNo(), xcxGoodsListDto.getPageSize()); List<XcxGoodsListVo> data = scoreGoodsMapper.selectXcxGoodsList(xcxGoodsListDto); + if(StrUtil.isNotEmpty(xcxGoodsListDto.getUserId())){ + if(CollUtil.isNotEmpty(data)){ + for(XcxGoodsListVo xcxGoodsListVo : data){ + if(ScoreGoods.ISQG_YES == xcxGoodsListVo.getIsQg()){ + //抢购时间内,用户购买该商品的数量 + Integer sumCnt = scoreOrderMapper.selectGoodsQuotaTime(xcxGoodsListDto.getUserId(),xcxGoodsListVo.getId(),xcxGoodsListVo.getQgStartTime(),xcxGoodsListVo.getQgEndTime()); + xcxGoodsListVo.setAvaQuotaTime( + ((xcxGoodsListVo.getQuotaTime() == null?0:xcxGoodsListVo.getQuotaTime()) - sumCnt) > 0?((xcxGoodsListVo.getQuotaTime() == null?0:xcxGoodsListVo.getQuotaTime()) - sumCnt):0 + ); + } + } + } + } if(StrUtil.isNotEmpty(xcxGoodsListDto.getName())){ Example exampleSearch = new Example(ScoreGoodsSearch.class); Example.Criteria criteriaSearch = exampleSearch.createCriteria(); diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java b/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java index 1173d7d..20729e4 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java @@ -229,7 +229,33 @@ throw new RestException(-3, "积分不足"); } - BigDecimal totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt())); + BigDecimal totalPrice = BigDecimal.ZERO; + if (ScoreGoods.ISQG_YES.equals(goods.getIsQg())) { + //限购数量 + Integer quotaTime = goods.getQuotaTime() == null ? 0:goods.getQuotaTime(); + //抢购时间内,用户购买该商品的数量 + Integer sumCnt = scoreOrderMapper.selectGoodsQuotaTime(addGoodsOrderDto.getUserId(),goods.getId(),goods.getQgStartTime(),goods.getQgEndTime()); + //剩余限购数量 + quotaTime = quotaTime-sumCnt; + if(goods.getQgStartTime().before(new Date()) && goods.getQgEndTime().after(new Date())){ + if(addGoodsOrderDto.getCnt() <= quotaTime){ + totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(quotaTime)); + }else{ + if(quotaTime > 0){ + totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(quotaTime)).add( + sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()-quotaTime))); + }else{ + totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt())); + } + } + }else{ + //开启抢购,不再时间内,直接原价* 数量 + totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt())); + } + }else{ + //没有开启抢购,直接现价* 数量 + totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt())); + } BigDecimal score = new BigDecimal(accountInfo.getCollectScore()); if (score.compareTo(totalPrice) < 0) { throw new RestException(-3, "积分不足"); diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/ViewGoodsVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/ViewGoodsVo.java index 8614317..69f7688 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/vo/ViewGoodsVo.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/ViewGoodsVo.java @@ -68,6 +68,9 @@ @ApiModelProperty(value="碳排放量",required=true) private Integer carbonEmissions; + @ApiModelProperty(value="限购次数") + private Integer quotaTime; + @ApiModelProperty(value="积分商品轮播图") private List<String> goodsImages; diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailVo.java index 934c2e6..a0268ef 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailVo.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailVo.java @@ -57,6 +57,12 @@ @ApiModelProperty(value = "剩余时间") private Long remainTime; + @ApiModelProperty(value = "限购数量") + private Integer quotaTime; + + @ApiModelProperty(value = "剩余限购数量") + private Integer avaQuotaTime; + @ApiModelProperty(value = "样式") private List<XcxGoodsDetailStyleVo> styles; diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsListVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsListVo.java index ea8fce1..77f48c9 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsListVo.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsListVo.java @@ -1,8 +1,11 @@ package com.xzx.gc.shop.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import java.util.Date; @Data @ApiModel(value = "XcxGoodsListVo", description = "小程序商品列表返回参数类") @@ -29,6 +32,18 @@ @ApiModelProperty(value = "库存") private Integer stock; + @ApiModelProperty(value = "限购数量") + private Integer quotaTime; + + @ApiModelProperty(value = "剩余限购数量") + private Integer avaQuotaTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date qgStartTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date qgEndTime; + @ApiModelProperty(value = "是否抢购 1-是 2-否") private Integer isQg; } diff --git a/gc-shop/src/main/resources/mapper/shop/ScoreOrderMapper.xml b/gc-shop/src/main/resources/mapper/shop/ScoreOrderMapper.xml index e76a47d..06723f7 100644 --- a/gc-shop/src/main/resources/mapper/shop/ScoreOrderMapper.xml +++ b/gc-shop/src/main/resources/mapper/shop/ScoreOrderMapper.xml @@ -127,4 +127,19 @@ and user_id=#{userId} </if> </select> + + + <select id="selectGoodsQuotaTime" resultType="java.lang.Integer"> + SELECT + IFNULL(SUM(a.cnt), 0) + FROM + xzx_score_order a + LEFT JOIN xzx_score_order_details b ON b.order_id = a.id + WHERE + a. STATUS IN (1, 2, 3, 4, 5) + and a.user_id = #{userId} + AND b.goods_id = #{goodsId} + and a.CREATED_TIME >= qgStartTime + and a.CREATED_TIME <= qgEndTime + </select> </mapper> diff --git a/gc-shop/src/main/resources/sql b/gc-shop/src/main/resources/sql index 0ae06e8..5827971 100644 --- a/gc-shop/src/main/resources/sql +++ b/gc-shop/src/main/resources/sql @@ -95,6 +95,17 @@ PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='首页弹窗表'; +ALTER TABLE `xzx_score_goods` +ADD COLUMN `quota_time` int(11) NULL COMMENT '限购次数' AFTER `present_price`; + +ALTER TABLE `xzx_jhy_order` +ADD COLUMN `unit_name` varchar(32) NULL COMMENT '单元栋' AFTER `username`; + +ALTER TABLE `xzx_jhy_order` +ADD COLUMN `house_number` varchar(32) NULL COMMENT '门牌号' AFTER `unit_name`; + + + diff --git a/gc-shop/src/test/java/com/xzx/gc/CodeTest.java b/gc-shop/src/test/java/com/xzx/gc/CodeTest.java new file mode 100644 index 0000000..bcb5906 --- /dev/null +++ b/gc-shop/src/test/java/com/xzx/gc/CodeTest.java @@ -0,0 +1,101 @@ +package com.xzx.gc; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageHelper; +import com.xzx.gc.common.constant.Constants; +import com.xzx.gc.entity.AddressInfo; +import com.xzx.gc.shop.dto.QueryGoodsListDto; +import com.xzx.gc.shop.dto.QueryJhyOrderListDto; +import com.xzx.gc.shop.mapper.JhyOrderItemsMapper; +import com.xzx.gc.shop.mapper.JhyOrderMapper; +import com.xzx.gc.shop.mapper.ScoreGoodsMapper; +import com.xzx.gc.shop.vo.JhyOrderItemsVo; +import com.xzx.gc.shop.vo.QueryGoodsListVo; +import com.xzx.gc.shop.vo.QueryJhyOrderListVo; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@RunWith(SpringRunner.class) +@SpringBootTest(classes = {GcShopApplication.class}) +@ActiveProfiles("dev") +public class CodeTest { + + @Autowired + private ScoreGoodsMapper scoreGoodsMapper; + @Autowired + private JhyOrderMapper jhyOrderMapper; + @Autowired + private JhyOrderItemsMapper jhyOrderItemsMapper; + + @Test + public void goodsList(){ + QueryGoodsListDto model = new QueryGoodsListDto(); + String name = model.getName() == null ? "":model.getName(); + int delFlag = model.getDelFlag() == null ? 2:model.getDelFlag(); + int namePx = model.getNamePx() == null ? 7:model.getNamePx(); + int typePx = model.getTypePx() == null ? 2:model.getTypePx(); + PageHelper.startPage(model.getPage(), model.getLimit()); + + List<QueryGoodsListVo> maps = scoreGoodsMapper.queryGoodsList(name,delFlag,1,1,namePx,typePx); + System.out.println(maps.toString()); + + } + @Test + public void jhyOrderList(){ + QueryJhyOrderListDto model = new QueryJhyOrderListDto(); + List<Integer> status = new ArrayList<>(); + if(CollUtil.isEmpty(model.getStatus())){ + status.add(1); + status.add(2); + status.add(3); + status.add(4); + status.add(5); + status.add(6); + model.setStatus(status); + } + + List<QueryJhyOrderListVo> maps = jhyOrderMapper.queryOrderList(model); + if(CollUtil.isNotEmpty(maps)){ + for(QueryJhyOrderListVo queryJhyOrderListVo : maps){ + Long id = queryJhyOrderListVo.getId(); + List<JhyOrderItemsVo> jhyOrderItemsVos = jhyOrderItemsMapper.selectByOrderId(id); + queryJhyOrderListVo.setJhyOrderItemsVos(jhyOrderItemsVos); + + String orderAddr = queryJhyOrderListVo.getAddress(); + Long userId = queryJhyOrderListVo.getUserId(); + List<AddressInfo> addressInfos = jhyOrderMapper.selectAddRessInfoByUserId(userId); + if(CollUtil.isNotEmpty(addressInfos)){ + for(AddressInfo addressInfo : addressInfos){ + StringBuffer address = new StringBuffer(); + address.append(addressInfo.getDetailAddress()); + if (StrUtil.isNotBlank(addressInfo.getTagName())) { + address.append(StrUtil.isNotBlank(addressInfo.getHouseName()) ? addressInfo.getHouseName() : ""); + if (Constants.ADDRESS_TYPE_HOME.equals(addressInfo.getTagName())) { + address.append(StrUtil.isNotBlank(addressInfo.getHouseNumber()) ? addressInfo.getHouseNumber() : ""); + address.append(StrUtil.isNotBlank(addressInfo.getUnitName()) ? addressInfo.getUnitName() : ""); + } + } + if (orderAddr.equals(addressInfo.getAddressArea() + address)) { + queryJhyOrderListVo.setUnitName(addressInfo.getUnitName()); + System.out.println(orderAddr); + queryJhyOrderListVo.setHouseNumber(addressInfo.getHouseNumber()); + } + } + } + } + } + + } + +} diff --git a/gc-user/src/test/java/CodeTest.java b/gc-user/src/test/java/CodeTest.java index 64d932f..49e54e8 100644 --- a/gc-user/src/test/java/CodeTest.java +++ b/gc-user/src/test/java/CodeTest.java @@ -26,6 +26,8 @@ import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; import com.aliyuncs.exceptions.ClientException; +import com.github.pagehelper.PageHelper; +import com.xzx.gc.GcUserApplication; import com.xzx.gc.common.Result; import com.xzx.gc.common.constant.Constants; import com.xzx.gc.common.constant.OrderEnum; @@ -38,20 +40,26 @@ import com.xzx.gc.common.utils.gdmap.GdTraceUtil; import com.xzx.gc.common.utils.image.QrCodeBaseUtils; import com.xzx.gc.common.utils.image.QrCodeGraphicsUtils; -import com.xzx.gc.entity.AddressInfo; -import com.xzx.gc.entity.HomeServiceInfo; -import com.xzx.gc.entity.PartnerFence; -import com.xzx.gc.entity.UserInfo; +import com.xzx.gc.entity.*; +import com.xzx.gc.user.dto.JhyInfoListDto; +import com.xzx.gc.user.service.JhyInfoService; +import com.xzx.gc.user.vo.JhyInfoListVo; import com.xzx.gc.util.BeanUtils; import lombok.Data; import lombok.extern.slf4j.Slf4j; import net.coobird.thumbnailator.Thumbnails; import org.apache.commons.lang3.RandomStringUtils; import org.junit.Test; +import org.junit.runner.RunWith; import org.locationtech.spatial4j.context.SpatialContext; import org.locationtech.spatial4j.distance.DistanceUtils; import org.locationtech.spatial4j.shape.Rectangle; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; import sun.misc.Regexp; +import tk.mybatis.mapper.entity.Example; import javax.imageio.ImageIO; import java.awt.*; @@ -71,8 +79,25 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; + @Slf4j +@RunWith(SpringRunner.class) +@SpringBootTest(classes = {GcUserApplication.class}) +@ActiveProfiles("dev") public class CodeTest { + + @Autowired + private JhyInfoService jhyInfoService; + + @Test + public void jhyList(){ + JhyInfoListDto jhyInfoListDto = new JhyInfoListDto(); + jhyInfoListDto.setPage(1); + jhyInfoListDto.setLimit(10); + jhyInfoListDto.setIsJhy(1); + Map<String, Object> stringObjectMap = jhyInfoService.queryList(jhyInfoListDto); + System.out.println(stringObjectMap.get("date")); + } @Test @@ -137,30 +162,32 @@ @Test public void ex(){ - Map<String, Object> row1 = new LinkedHashMap<>(); - row1.put("姓名", "张三"); - row1.put("年龄", 23); - row1.put("成绩", 88.32); - row1.put("是否合格", true); - row1.put("考试日期", DateUtil.date()); - - Map<String, Object> row2 = new LinkedHashMap<>(); - row2.put("姓名", "李四"); - row2.put("年龄", 33); - row2.put("成绩", 59.50); - row2.put("是否合格", false); - row2.put("考试日期", DateUtil.date()); - - ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row1, row2); - - System.out.println(rows); + ArrayList<Map<String, Object>> rows = new ArrayList<>(); + String str = null; + for(int i = 0;i < 100000;i++){ + Map<String, Object> row1 = new LinkedHashMap<>(); +// str = "M0"+RandomUtil.randomString(8).toUpperCase(); +// str = "M1"+RandomUtil.randomString(8).toUpperCase(); +// str = "M2"+RandomUtil.randomString(8).toUpperCase(); +// str = "M3"+RandomUtil.randomString(8).toUpperCase(); +// str = "M4"+RandomUtil.randomString(8).toUpperCase(); +// str = "M5"+RandomUtil.randomString(8).toUpperCase(); +// str = "M6"+RandomUtil.randomString(8).toUpperCase(); +// str = "M7"+RandomUtil.randomString(8).toUpperCase(); +// str = "M8"+RandomUtil.randomString(8).toUpperCase(); + str = "M9"+RandomUtil.randomString(8).toUpperCase(); + row1.put("编码", str); + rows.add(row1); + } + Set<Map<String, Object>> maps = RandomUtil.randomEleSet(rows, 10000); + System.out.println(maps); // 通过工具类创建writer - ExcelWriter writer = ExcelUtil.getWriter("d:/writeMapTest.xlsx"); + ExcelWriter writer = ExcelUtil.getWriter("d:/编码M9.xlsx"); // 合并单元格后的标题行,使用默认标题样式 - writer.merge(row1.size() - 1, "一班成绩单"); +// writer.merge(maps.size() - 1, "编码"); // 一次性写出内容,使用默认样式,强制输出标题 - writer.write(rows, true); + writer.write(maps, true); // 关闭writer,释放内存 writer.close(); -- Gitblit v1.9.1