From 1a3cb3d15f1c159d12f7569c9058e6fbc114969a Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 19 Dec 2022 11:01:22 +0800 Subject: [PATCH] 20221219 1、生成物流单号 2、支付后订单状态自动成为待收货状态 3、新增编辑商品后,会自动计算补贴金额和商品星级,并显示在后台商品列表中 --- src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java | 24 ++++ src/main/java/cc/mrbird/febs/mall/vo/AdminMallGoodsVo.java | 4 src/main/java/cc/mrbird/febs/common/utils/MallUtils.java | 9 + src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java | 4 src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html | 2 src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 5 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 139 ++++++++++++++------------- src/main/resources/application-dev.yml | 21 ++-- src/main/resources/templates/febs/views/modules/goods/goodsList.html | 8 + src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java | 51 ++++++++++ 10 files changed, 186 insertions(+), 81 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java index 2c105ef..995697d 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java @@ -6,6 +6,11 @@ @Getter public enum DataDictionaryEnum { + //会员每日可用订单数 + BUY_TIMES("ORDER_BUY", "BUY_TIMES"), + //商品补贴比例 + SUBSIDY_PERCENT("GOODS_SUBSIDY", "SUBSIDY_PERCENT"), + //积分池设置{"everydayRatio":10,"dividEquallyRatio":1}每日订单的百分之几,增加到积分池;每日平分百分比 SCORE_POOR_RADIO("SCORE_POOR", "SCORE_POOR_RADIO"), diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java new file mode 100644 index 0000000..20c120e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java @@ -0,0 +1,51 @@ +package cc.mrbird.febs.common.enumerates; + +import lombok.Getter; + +import java.math.BigDecimal; +@Getter +public enum StarRatingEnum { + /** + * 定级规则 + * 大于最小值,小于等于最大值 + */ + NORMAL("普通",0,30), + ONE_STAR("一星",30,50), + TWO_STAR("二星",50,100), + THREE_STAR("三星",100,200); + + private String name; + + private Integer minValue; + + private Integer maxValue; + + StarRatingEnum(String name,Integer minValue, Integer maxValue) { + this.name = name; + this.minValue = minValue; + this.maxValue = maxValue; + } + + /** + * 根据商品原价获取对应的商品星级 + * @param price + * @return + */ + public String belongStarRating(String price){ + String name = StarRatingEnum.NORMAL.name; + BigDecimal priceBig = new BigDecimal(price).setScale(BigDecimal.ROUND_DOWN,2); + for (StarRatingEnum starRatingEnum : StarRatingEnum.values()) { + BigDecimal minValue = new BigDecimal(starRatingEnum.minValue).setScale(BigDecimal.ROUND_DOWN, 2); + BigDecimal maxValue = new BigDecimal(starRatingEnum.maxValue).setScale(BigDecimal.ROUND_DOWN, 2); + if(priceBig.compareTo(minValue) > 0 && priceBig.compareTo(maxValue) <= 0){ + name = starRatingEnum.name; + } + } + return name; + } + + public static void main(String[] args) { + String s = StarRatingEnum.NORMAL.belongStarRating(String.valueOf(100)); + System.out.println(s); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/MallUtils.java b/src/main/java/cc/mrbird/febs/common/utils/MallUtils.java index 2f28b00..a93bbac 100644 --- a/src/main/java/cc/mrbird/febs/common/utils/MallUtils.java +++ b/src/main/java/cc/mrbird/febs/common/utils/MallUtils.java @@ -33,6 +33,15 @@ return dd+getRandomNum(5); } + public static String getLogisticsNum(String prefix) { + SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); + String dd=df.format(new Date()); + if (StrUtil.isNotBlank(prefix)) { + return prefix+getRandomNum(2); + } + return dd+getRandomNum(2); + } + public static String getOrderNum() { return getOrderNum(null); } diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java index 371035b..8f19a19 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java @@ -114,5 +114,9 @@ private Integer hasCarriage; private BigDecimal carriage; + //补贴金额 + private BigDecimal subsidyAmount; + //星级等级 + private String starRating; } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java index 14dcdcf..4465519 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java @@ -2,6 +2,8 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; +import cc.mrbird.febs.common.enumerates.StarRatingEnum; import cc.mrbird.febs.mall.conversion.MallGoodsConversion; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; @@ -38,6 +40,7 @@ private final MallGoodsStyleMapper mallGoodsStyleMapper; private final MallGoodsImagesMapper mallGoodsImagesMapper; private final MallShoppingCartMapper mallShoppingCartMapper; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; @Override public IPage<AdminMallGoodsVo> getCategoryListInPage(MallGoods mallGoods, QueryRequest request) { @@ -109,7 +112,16 @@ //新增商品 MallGoods mallGoods = MallGoodsConversion.INSTANCE.dtoToEntity(addMallGoodsDto); mallGoods.setIsSale(MallGoods.ISSALE_STATUS_DISABLED); - + //根据商品原价获取商品星级 + String originalPrice = mallGoods.getOriginalPrice(); + String starRating = StarRatingEnum.NORMAL.belongStarRating(originalPrice); + mallGoods.setStarRating(starRating); + //根据商品原价获取商品补贴金额 + DataDictionaryCustom subsidyPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SUBSIDY_PERCENT.getType() + , DataDictionaryEnum.SUBSIDY_PERCENT.getCode()); + BigDecimal subsidyPercent = new BigDecimal(subsidyPercentDic.getValue()).multiply(new BigDecimal(0.01)).setScale(BigDecimal.ROUND_DOWN,2); + BigDecimal subsidyAmount = subsidyPercent.multiply(new BigDecimal(originalPrice)).setScale(BigDecimal.ROUND_DOWN, 2); + mallGoods.setSubsidyAmount(subsidyAmount); if (mallGoods.getHasCarriage() == 2) { mallGoods.setCarriage(BigDecimal.ZERO); } @@ -344,6 +356,16 @@ if (mallGoods.getHasCarriage() == 2) { mallGoods.setCarriage(BigDecimal.ZERO); } + //根据商品原价获取商品星级 + String originalPrice = mallGoods.getOriginalPrice(); + String starRating = StarRatingEnum.NORMAL.belongStarRating(originalPrice); + mallGoods.setStarRating(starRating); + //根据商品原价获取商品补贴金额 + DataDictionaryCustom subsidyPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SUBSIDY_PERCENT.getType() + , DataDictionaryEnum.SUBSIDY_PERCENT.getCode()); + BigDecimal subsidyPercent = new BigDecimal(subsidyPercentDic.getValue()).multiply(new BigDecimal(0.01)).setScale(BigDecimal.ROUND_DOWN,2); + BigDecimal subsidyAmount = subsidyPercent.multiply(new BigDecimal(originalPrice)).setScale(BigDecimal.ROUND_DOWN, 2); + mallGoods.setSubsidyAmount(subsidyAmount); mallGoodsMapper.updateById(mallGoods); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 9e6f74b..c05d958 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -83,10 +83,10 @@ public Long createOrder(AddOrderDto addOrderDto) { MallMember member = LoginUserUtil.getLoginUser(); - MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); - if (address == null) { - throw new FebsException("地址不存在"); - } +// MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); +// if (address == null) { +// throw new FebsException("地址不存在"); +// } String orderNo = MallUtils.getOrderNum(); MallOrderInfo orderInfo = new MallOrderInfo(); @@ -94,11 +94,11 @@ orderInfo.setOrderTime(new Date()); orderInfo.setMemberId(member.getId()); orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue()); - orderInfo.setName(address.getName()); - orderInfo.setAddress(address.getArea() + address.getAddress()); - orderInfo.setPhone(address.getPhone()); - orderInfo.setLatitude(address.getLatitude()); - orderInfo.setLongitude(address.getLongitude()); +// orderInfo.setName(address.getName()); +// orderInfo.setAddress(address.getArea() + address.getAddress()); +// orderInfo.setPhone(address.getPhone()); +// orderInfo.setLatitude(address.getLatitude()); +// orderInfo.setLongitude(address.getLongitude()); orderInfo.setRemark(addOrderDto.getRemark()); orderInfo.setOrderType(addOrderDto.getOrderType()); @@ -106,21 +106,21 @@ throw new FebsException("参数错误"); } - int deliverType = ObjectUtil.isEmpty(addOrderDto.getDeliverType()) ? 1 : addOrderDto.getDeliverType(); - if(2 == deliverType){ - if(ObjectUtil.isEmpty(addOrderDto.getShopId())){ - throw new FebsException("请选择门店"); - } - Long shopId = addOrderDto.getShopId(); - MallShopApply mallShopApply = mallShopApplyMapper.selectById(shopId); - if(ObjectUtil.isEmpty(mallShopApply)){ - throw new FebsException("请选择门店"); - } - if(MallShopApply.APPLY_AGREE != mallShopApply.getStatus()){ - throw new FebsException("请选择门店"); - } - orderInfo.setShopId(shopId); - } +// int deliverType = ObjectUtil.isEmpty(addOrderDto.getDeliverType()) ? 1 : addOrderDto.getDeliverType(); +// if(2 == deliverType){ +// if(ObjectUtil.isEmpty(addOrderDto.getShopId())){ +// throw new FebsException("请选择门店"); +// } +// Long shopId = addOrderDto.getShopId(); +// MallShopApply mallShopApply = mallShopApplyMapper.selectById(shopId); +// if(ObjectUtil.isEmpty(mallShopApply)){ +// throw new FebsException("请选择门店"); +// } +// if(MallShopApply.APPLY_AGREE != mallShopApply.getStatus()){ +// throw new FebsException("请选择门店"); +// } +// orderInfo.setShopId(shopId); +// } this.baseMapper.insert(orderInfo); BigDecimal total = BigDecimal.ZERO; @@ -204,13 +204,13 @@ } orderInfo.setAmount(total); - if(2 == deliverType){ - orderInfo.setDeliverType(2); - orderInfo.setCarriage(BigDecimal.ZERO); - }else{ - orderInfo.setDeliverType(1); - orderInfo.setCarriage(carriage); - } +// if(2 == deliverType){ +// orderInfo.setDeliverType(2); +// orderInfo.setCarriage(BigDecimal.ZERO); +// }else{ +// orderInfo.setDeliverType(1); +// orderInfo.setCarriage(carriage); +// } this.baseMapper.updateById(orderInfo); agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L); @@ -322,50 +322,55 @@ orderInfo.setPayOrderNo(orderInfo.getOrderNo()); orderInfo.setPayMethod("余额支付"); - orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); +// orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); + //订单支付成功后,订单直接变成待收货 + orderInfo.setStatus(OrderStatusEnum.WAIT_FINISH.getValue()); + //生成物流编号 + String logisticsNo = MallUtils.getLogisticsNum(StrUtil.subSuf(payResultStr, payResultStr.length() - 2)); + orderInfo.setPayTradeNo(logisticsNo); orderInfo.setPayTime(new Date()); orderInfo.setPayResult("1"); - boolean hasTc = false; +// boolean hasTc = false; // 静态倍数 - List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId()); - if (CollUtil.isNotEmpty(orderItems)) { - for (MallOrderItem orderItem : orderItems) { - MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); - BigDecimal score = BigDecimal.ZERO; - MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); - if (mallGoods.getIsNormal() == 2) { - hasTc = true; - score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti()).multiply(new BigDecimal(orderItem.getCnt())); -// BigDecimal staticMulti = mallGoods.getStaticMulti() == null ? BigDecimal.ZERO : mallGoods.getStaticMulti(); -// score = sku.getPresentPrice().multiply(staticMulti); - // 普通商品也及时结算,不再10天结算 - } else { - score = sku.getPresentPrice(); - } - - if (score.compareTo(BigDecimal.ZERO) > 0) { - memberWalletService.add(score, member.getId(), "score"); - mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); - - // 添加业绩 - mallAchieveService.add(orderItem.getId()); - } - } - } +// List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId()); +// if (CollUtil.isNotEmpty(orderItems)) { +// for (MallOrderItem orderItem : orderItems) { +// MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); +// BigDecimal score = BigDecimal.ZERO; +// MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); +// if (mallGoods.getIsNormal() == 2) { +// hasTc = true; +// score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti()).multiply(new BigDecimal(orderItem.getCnt())); +//// BigDecimal staticMulti = mallGoods.getStaticMulti() == null ? BigDecimal.ZERO : mallGoods.getStaticMulti(); +//// score = sku.getPresentPrice().multiply(staticMulti); +// // 普通商品也及时结算,不再10天结算 +// } else { +// score = sku.getPresentPrice(); +// } +// +// if (score.compareTo(BigDecimal.ZERO) > 0) { +// memberWalletService.add(score, member.getId(), "score"); +// mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); +// +// // 添加业绩 +// mallAchieveService.add(orderItem.getId()); +// } +// } +// } // 购买套餐后,升级为普通会员 - if (hasTc) { - MallMember mallMember = memberMapper.selectById(member.getId()); - if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) { - mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); - memberMapper.updateById(mallMember); - } - } +// if (hasTc) { +// MallMember mallMember = memberMapper.selectById(member.getId()); +// if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) { +// mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); +// memberMapper.updateById(mallMember); +// } +// } mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); - agentProducer.sendAutoLevelUpMsg(member.getId()); - agentProducer.sendOrderReturn(orderInfo.getId()); +// agentProducer.sendAutoLevelUpMsg(member.getId()); +// agentProducer.sendOrderReturn(orderInfo.getId()); break; case "4": if (orderInfo.getOrderType() != 2) { diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallGoodsVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallGoodsVo.java index 3f7e649..a9659da 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallGoodsVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallGoodsVo.java @@ -44,4 +44,8 @@ private BigDecimal score; private int isNormal; + //补贴金额 + private BigDecimal subsidyAmount; + //星级等级 + private String starRating; } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 13e6fca..832744d 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -19,20 +19,21 @@ password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://120.27.238.55:3306/db_amz?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 -# username: db_mall -# password: mall!@#123 -# driver-class-name: com.mysql.cj.jdbc.Driver -# url: jdbc:mysql://47.111.90.145:3306/db_mall?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 + + # username: db_mall_coin + # password: db_mall_coin123!@# + # driver-class-name: com.mysql.cj.jdbc.Driver + # url: jdbc:mysql://154.91.195.148:3306/db_mall_coin?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 redis: # Redis数据库索引(默认为 0) - database: 3 + database: 10 # Redis服务器地址 - host: 120.27.238.55 + host: 127.0.0.1 # Redis服务器连接端口 port: 6379 # Redis 密码 - password: xcong123 + password: dapp!@#123 lettuce: pool: # 连接池中的最小空闲连接 @@ -46,10 +47,10 @@ # 连接超时时间(毫秒) timeout: 5000 rabbitmq: - host: 120.27.238.55 + host: 127.0.0.1 port: 5672 - username: ct_rabbit - password: 123456 + username: xc_rabbit + password: xuncong123 publisher-confirm-type: correlated pay: diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html index 5208f25..ae9cf03 100644 --- a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html +++ b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html @@ -14,6 +14,8 @@ <div class="layui-tab-content"> <div class="layui-tab-item layui-show"> <blockquote class="layui-elem-quote blue-border">基本信息设置</blockquote> + <div class="layui-form-mid layui-word-aux">商品新增后,会自动计算补贴金额,按商品原价的5%计算</div> + <div class="layui-form-mid layui-word-aux">商品新增后,会自动计算星级等级,按商品原价设置</div> <div class="layui-row layui-col-space10 layui-form-item"> <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">商品名称:</label> diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsList.html b/src/main/resources/templates/febs/views/modules/goods/goodsList.html index a058469..ca9da0d 100644 --- a/src/main/resources/templates/febs/views/modules/goods/goodsList.html +++ b/src/main/resources/templates/febs/views/modules/goods/goodsList.html @@ -231,10 +231,12 @@ {field: 'categaryName', title: '分类', minWidth: 140,align:'left'}, {field: 'isSale', title: '是否上架', templet: '#upOrDownSwitch', minWidth: 100,align:'center'}, {field: 'isHot', title: '是否主推', templet: '#isHotSwitch', minWidth: 100,align:'center'}, - {templet:"#goodsTypeFormat", title: '商品类型', minWidth: 140,align:'left'}, - {templet:"#isSkuFormat", title: '是否多规格', minWidth: 100,align:'left'}, - {field: 'presentPrice', title: '现价', minWidth: 100,align:'left'}, + // {templet:"#goodsTypeFormat", title: '商品类型', minWidth: 140,align:'left'}, + // {templet:"#isSkuFormat", title: '是否多规格', minWidth: 100,align:'left'}, + // {field: 'presentPrice', title: '现价', minWidth: 100,align:'left'}, {field: 'originalPrice', title: '原价', minWidth: 100,align:'left'}, + {field: 'subsidyAmount', title: '补贴金额', minWidth: 100,align:'left'}, + {field: 'starRating', title: '星级', minWidth: 100,align:'left'}, {field: 'stock', title: '商品库存', minWidth: 100,align:'left'}, {field: 'skuVolume', title: '商品销量', minWidth: 100,align:'left'}, {title: '操作', -- Gitblit v1.9.1