Java-springboot基于分布式存储的仿小米卡包优惠券后台系统(二)商户投放系统开发

【全开源】多商户消费券系统源码(ThinkPHP+FastAdmin+微信公众号) 多商户消费券系统源码作为一种创新的促销手段,将在未来发挥越来越重要的作用。随着技术的不断进步和市场的不断变化,我们将不断完善和优化系统源码,为企业提供更加高效、智能的促销解决方案。让我们携手共进,共创智能促销新纪元! 阅读详情

(一)实体对象定义

创建包entity,创建商户对象模型,这里使用了大量的注解方法来去构建实体对象来去映射到数据库中的数据表

这里可能会报错:错误是关于通过Idea连接数据库,按照提示在IDEA连接数据库就行,也就是上面所提到的方法,当然我测试了一下,我将程序跑起来也没有出现运行时的错误

package com.hyb.passbook.merchants.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;

/**
 * 商户对象模型
 */
@Data //实现get和set方法
@NoArgsConstructor //实现无参的构造函数
@AllArgsConstructor //实现全参的构造函数
@Entity //表明是一个实体对象
@Table(name = "merchants") //表明是数据表实体对象的定义,定义了表的名字
public class Merchants {
    /** 商户 id, 主键 */
    @Id
    @GeneratedValue //自动生成
    @Column(name = "id", nullable = false)
    private Integer id;

    /** 商户名称, 需要是全局唯一的 */
    @Basic
    @Column(name = "name", unique = true, nullable = false)
    private String name;

    /** 商户 logo */
    @Basic
    @Column(name = "logo_url", nullable = false)
    private String logoUrl;

    /** 商户营业执照 */
    @Basic
    @Column(name = "business_license_url", nullable = false)
    private String businessLicenseUrl;

    /** 商户的联系电话 */
    @Basic
    @Column(name = "phone", nullable = false)
    private String phone;

    /** 商户地址 */
    @Basic
    @Column(name = "address", nullable = false)
    private String address;

    /** 商户是否通过审核 */
    @Basic
    @Column(name = "is_audit", nullable = false)
    private Boolean isAudit = false;
}

(二)定义dao层,创建相关接口

package com.hyb.passbook.merchants.dao;

import com.hyb.passbook.merchants.entity.Merchants;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 * 描述 : dao接口
 * Merchants:映射表的实体类
 * Interger:主键的类型
 */
public interface MerchantsDao extends JpaRepository<Merchants,Integer> {
    //根据id,获取商户对象
    Merchants findById(Integer id);

    //根据商户名称,获取商户对象
    Merchants findByName(String name);
}

(三)定义service层和service的实现

创建VO包和VO类:作用是在service之间做业务传递的存在

package com.hyb.passbook.merchants.vo;

import com.hyb.passbook.merchants.constant.ErrorCode;
import com.hyb.passbook.merchants.dao.MerchantsDao;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 描述:投放的优惠券对象定义
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PassTemplate {
    //所属商户id
    private Integer id;

    //优惠券标题
    private String title;

    //优惠券的摘要
    private String summary;

    //优惠券的详细信息
    private String desc;

    //最大个数限制
    private Long limit;

    //优惠券是否有token,token 存储于Redis 中,每次领取从Redis中获取
    private Boolean hasToken;

    //优惠券背景色
    private Integer background;

    //优惠券开始时间
    private Date start;

    //优惠券结束时间
    private Date end;

    //校验优惠券对象的有效性:校验优惠券的ID在不在商户表中保存
    public ErrorCode validate(MerchantsDao merchantsDao){
        if (null == merchantsDao.findById(id)){
            return ErrorCode.MERCHANTS_NOT_EXIST;
        }
        return ErrorCode.SUCCESS;
    }
}
package com.hyb.passbook.merchants.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 描述:通用的响应对象给客户端
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Response {
    //错误码:正确返回0
    private Integer errorCode;

    //错误信息,正确返回空字符串
    private String errorMsg;

    //返回对象
    private Object data;

    //正确响应的构造函数
    public Response(Object data) {
        this.data = data;
    }
}

创建商户的请求和响应对象

我在这里遇到一个坑,我在entity中加入@Data后并在调用类的时候,并没有get和set的方法,是因为没有安装Lombok插件的原因,等插件安装完后,就能解决这个问题

package com.hyb.passbook.merchants.vo;

import com.hyb.passbook.merchants.constant.ErrorCode;
import com.hyb.passbook.merchants.dao.MerchantsDao;
import com.hyb.passbook.merchants.entity.Merchants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 描述:创建商户请求对象
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CreateMerchantsRequest {
    //商户名称
    private String name;

    //商户logo的URL
    private String logoUrl;

    //商户营业执照
    private String businessLicenseUrl;

    //商户联系电话
    private String phone;

    //商户地址
    private String address;

    //商户验证请求的有效性
    public ErrorCode vaildate(MerchantsDao merchantsDao){
        if (merchantsDao.findByName(this.name) !=null) {
            return ErrorCode.DUPLICATE_NAME;
        }
        if (null == this.logoUrl) {
            return ErrorCode.EMPTY_LOGO;
        }
        if (null == this.businessLicenseUrl) {
            return ErrorCode.EMPTY_BUSINESS_LICENSE;
        }
        if (null == this.address){
            return ErrorCode.EMPTY_ADDRESS;
        }
        if (null == this.phone) {
            return ErrorCode.ERROR_PHONE;
        }
        return ErrorCode.SUCCESS;
    }
    //将请求对象转化为Merchants数据库对象
    public Merchants toMerchants(){
        Merchants merchants = new Merchants();
        merchants.setName(name);
        merchants.setLogoUrl(logoUrl);
        merchants.setBusinessLicenseUrl(businessLicenseUrl);
        merchants.setAddress(address);
        merchants.setPhone(phone);
        return merchants;
    }
}

package com.hyb.passbook.merchants.vo;

import com.hyb.passbook.merchants.constant.ErrorCode;
import com.hyb.passbook.merchants.dao.MerchantsDao;
import com.hyb.passbook.merchants.entity.Merchants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 描述:创建商户响应对象
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CreateMerchantsResponse {
    //商户id 创建失败为-1
    private Integer id;
}

创建商户服务接口与实现

package com.hyb.passbook.merchants.service;

import com.hyb.passbook.merchants.vo.CreateMerchantsRequest;
import com.hyb.passbook.merchants.vo.PassTemplate;
import com.hyb.passbook.merchants.vo.Response;

/**
 * 商户服务接口定义
 */
public interface IMerchantsService {
    //创建商户服务
    Response createMerchants(CreateMerchantsRequest request);

    //根据ID构造商户信息
    Response bulidMerchantsInfoById(Integer id);

    //投放优惠券
    Response dropPassTemplate(PassTemplate template);
}
package com.hyb.passbook.merchants.service.impl;

import com.hyb.passbook.merchants.constant.ErrorCode;
import com.hyb.passbook.merchants.dao.MerchantsDao;
import com.hyb.passbook.merchants.service.IMerchantsService;
import com.hyb.passbook.merchants.vo.CreateMerchantsRequest;
import com.hyb.passbook.merchants.vo.CreateMerchantsResponse;
import com.hyb.passbook.merchants.vo.PassTemplate;
import com.hyb.passbook.merchants.vo.Response;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * 描述:商户服务接口实现
 */
@Slf4j
@Service
public class IMerchantsServiceImpl implements IMerchantsService {
    @Autowired
    private  MerchantsDao merchantsDao;

//kafka 这里会报错,是因为IDEA不能识别kafka,不会有运行时的错误
    @Autowired
    private KafkaTemplate<String,String> kafkaTemplate;
    
    @Override
    @Transactional
    public Response createMerchants(CreateMerchantsRequest request) {
        Response response = new Response();
        CreateMerchantsResponse merchantsResponse = new CreateMerchantsResponse();
        //先对用户的请求进行校验
        ErrorCode errorCode = request.vaildate(merchantsDao);
        if (errorCode != ErrorCode.SUCCESS) {
            merchantsResponse.setId(-1);
            response.setErrorCode(errorCode.getCode());
            response.setErrorMsg(errorCode.getDesc());
        }else {
            merchantsResponse.setId(merchantsDao.save(request.toMerchants()).getId());
        }
        response.setData(merchantsResponse);
        return response;
    }

    @Override
    public Response bulidMerchantsInfoById(Integer id) {
        //创建响应对象
        Response response = new Response();
        //根据商户ID查询优惠券信息
        Merchants merchants = merchantsDao.findById(id);
        //查询为空,则报错
        if (merchants == null) {
            response.setErrorCode(ErrorCode.MERCHANTS_NOT_EXIST.getCode());
            response.setErrorMsg(ErrorCode.MERCHANTS_NOT_EXIST.getDesc());
        }
        //查询不为空,则将查询结果返回
        response.setData(merchants);
        return response;
    }

    @Override
    public Response dropPassTemplate(PassTemplate template) {
        Response response = new Response();
        //进行优惠券在不在商户的校验
        ErrorCode errorCode = template.validate(merchantsDao);
        if (errorCode != ErrorCode.SUCCESS) {
            response.setErrorCode(errorCode.getCode());
            response.setErrorMsg(errorCode.getDesc());
        }else {
            String passTemplate = JSON.toJSONString(template);
            kafkaTemplate.send(
                    Constant.TEMPLATE_TOPIC,
                    Constant.TEMPLATE_TOPIC,
                    passTemplate
            );
            log.info("Drop PassTemplates : {}",passTemplate);
        }
    return response;
    }
}

商户商户服务测试,将3个接口测试的代码和结果同一打印出来

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class IMerchantsServiceImplTest extends TestCase {
    @Autowired
    private IMerchantsService merchantsService;
    @Test
    @Transactional
    public void testCreateMerchants() {
        CreateMerchantsRequest request = new CreateMerchantsRequest();
        request.setName("hyb");
        request.setLogoUrl("http:xxx.com");
        request.setBussinessLicenseUrl("hyb.logo");
        request.setPhone("123456");
        request.setAddress("china");
        System.out.println(JSON.toJSONString(merchantsService.createMerchants(request)));
    }
        @Test
    public void testBulidMerchantsInfoById() {
        System.out.println(JSON.toJSONString(merchantsService.bulidMerchantsInfoById(1)));
    }
        @Test
    public void testDropPassTemplate() {
        PassTemplate passTemplate = new PassTemplate();
        passTemplate.setId(1);
        passTemplate.setTitle("hyb");
        passTemplate.setSummary("good");
        passTemplate.setDesc("hello");
        passTemplate.setLimit(1000L);
        passTemplate.setHasToken(false);
        passTemplate.setBackground(2);
        passTemplate.setStart(new Date());
        passTemplate.setEnd(new Date());
        System.out.println(JSON.toJSONString(merchantsService.dropPassTemplate(passTemplate)));
    }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

微信小程序优惠券卡卷系统开发实战项目源码与界面展示 优惠券中心 阅读详情

相关推荐

从零开始搭建的Python优惠券系统源码.zip

从零开始搭建的Python优惠券系统源码.zip

基于Springboot框架+微信小程序实现商场电子优惠券系统设计演示【附项目源码+论文说明】

商城小程序+优惠券管理系统所要实现的功能分析,对于现在网络方便,商城小程序+优惠券管理系统要实现管理员、用户可以直接在平台上进行查看自己所需数据信息,这样既能节省管理的时间,不用再像传统的方式,如果用户想要进行交流信息,必须双方见面进行沟通交流所需的信息,由于很多用户时间的原因,没有办法进行见面沟通交流,真的很难满足用户的各种需求。对商城小程序+优惠券管理系统的数据库、功能进行了详细设计,分析了主要界面设计和相关组件设计,商城小程序+优惠券管理系统的具体实现进行了介绍。:商城小程序+优惠券管理系统;

螺旋翻转大大雄 1157

微信小程序源码-优惠券卡卷.rar

微信小程序源码-优惠券卡卷.rar

Java生鲜电商平台-优惠券系统的架构设计与源码解析

电商后台:实例解读促销系统 电商后台系统包括商品管理系统、采购系统、仓储系统、订单系统、促销系统、维权系统、财务系统、会员系统、权限系统等,各系统之间相互关联、相互依托,为前端的正常业务流转建立结实稳固的基础。 促销系统的主要目的是便于运营设置各种促销方式,以提高商品的销量、用户的客单价等。 在后台各系统中,促销系统和商品管理系统、订单系统关联最大,商品管理系统为促销系统提供活动商品,用户下单后,促销优惠信息会展示在订单系统中。 促销系统介绍 促销系统主要包括促销活动管理和促销类型管理。 .

竹林幽深 3182

优惠券小程序源码程序demo

优惠券小程序示例 1.注册和登录 2.优惠券领取 3.优惠券查询和使用 4.优惠券分享和传播 5.优惠券管理 6.根据实际需求可以进行进一步的开发和设计。

FPGA时钟架构解密:从SRCC/MRCC到全局时钟树的实战指南

本文深入解析Xilinx 7系列FPGA时钟架构,从SRCC/MRCC引脚特性到全局时钟树设计,详细介绍了BUFG、BUFMR等关键组件的应用场景和优化策略。通过对比SRCC与MRCC的驱动范围及适用场景,提供低抖动时钟布线技巧和时钟域交叉(CDC)设计方法,帮助工程师构建高性能FPGA时钟系统。

weixin_29191081的博客 1484

【Spring Boot+Kafka+Mysql+HBase】实现分布式优惠券后台应用系统(附源码)

【Spring Boot+Kafka+Mysql+HBase】实现分布式优惠券后台应用系统(附源码)

showswoller的博客 1843

从一个过气考渣的角度看LLM智能化测试用例生成

根据业务需求生成测试用例,会涉及到相关上下文的召回、用例生成等场景。除了用例生成之外,也可以考虑应用LLM进行用例评审。因此,本文将涉及以下内容。

software_test010的博客 827

基于SpringBoot集群数据同步功能设计实现

1、概述基于Web集群数据同步功能设计方案,主题功能主要包括三部分同步配置、同步集群、同步记录,通过进行同步配置集群地址、请求超时时间、同步表的配置、同步频率信息管控同步任务。其次通过添加集群实现多集群数据同步,最后通过同步记录实时查看同步的结果。摘要数据同步;集群;Web;2、功能架构图如图为同步服务功能的架构图,服务器A、B、C之间是完全独立,用户通过集群配置添加服务器地址信息实现多主机之间的数据同步功能。集群信息。............

拼命小李博客 1984

Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?

当检测到TCP/UDP混合攻击时,应触发预设的熔断策略:优先保障游戏大厅服务的UDP 27015端口,临时限制匹配系统的TCP连接数。针对Steam游戏服务器特有的UDP 4380端口,需配置协议合规性检查规则:限制数据包长度不超过128字节,强制校验请求来源IP的真实性。Steam游戏服务器的防护需要平衡安全性与玩家体验,通过协议深度解析、智能流量调度和服务端加固的三维防御体系,可构建游戏行业专属的抗DDoS护城河。答:采用弹性防护方案,基础防护带宽保持50Gbps,遭遇攻击时自动扩展至T级清洗能力。

2501_91486804的博客 1453

解决turmex安装kali报错问题

在手机上安装好turmex后,都喜欢安装一个Linux系统,我当时安装的时kali,但是安装过程中,报错不断。 2019.8.24更新 1,出现问题首先看下载kali源文件是否完整 安装步骤中,会显示[解压中.....] ,可以看到解压的大小。 如图所示,完整源文件不小于81M。 如果源文件过小,则说明下载错误,而且在remove kali这个命令下,是不会删除源文件的,下一次安装只...

WeiLuckyStrike的博客 1万+

Java-springboot基于分布式存储的仿小米卡包优惠券后台系统(一)商户投放系统开发

Java-springboot基于分布式存储的仿小米卡包优惠券后台系统(一)商户投放系统系统工程环境搭建创建工程修改依赖和添加依赖修改springboot版本依赖为1.5.3在启动springboot时候会报错是因为加入JDBC依赖后却没有指定相关的数据库连接,所以得在application.properties中配置数据库的连接信息,但我会改成application.yml在IDEA中使用DateBase就能代替Navicat for MySQL连接服务器,具体的登录操作和Navicat的大相径庭在res

bingbign0607的博客 770

《模型轻量化-剪枝蒸馏量化系列》YOLOv5无损剪枝(附源码)

无损剪枝模型到几百kb~

cv君的博客 3万+

Java-springboot基于分布式存储的仿小米卡包优惠券后台系统(三)商户投放系统开发

商户服务controller的开发 package com.hyb.passbook.merchants.controller; import com.alibaba.fastjson.JSON; import com.hyb.passbook.merchants.service.IMerchantsService; import com.hyb.passbook.merchants.vo.CreateMerchantsRequest; import com.hyb.passbook.merchants.

bingbign0607的博客 472

Odoo17商城微信支付模块,快速一个实现可在线支付的商城

通过集成微信支付APIv3,Odoo 系统实现了高效、安全的支付流程。Native扫码支付和Jsapi微信浏览器内直接拉起支付为用户提供了更加便捷的支付方式。同时,通过发送下单及支付消息给管理员,商家可以实时了解订单状态并进行相应处理。通过集成微信支付 结合 Odoo 系统内置的商城模块,可以为商家快速实现功能完善、高效的电商解决方案。

AaronZZH 的博客 2268

从原理到落地:Java+TensorRT打造YOLO模型GPU极致推理方案

Java+TensorRT的YOLO模型GPU加速方案,核心是通过JNI桥接实现Java与TensorRT的高效交互,结合TensorRT的底层优化能力,最大化GPU算力。该方案既保留了Java后端的工程化优势(如易维护、生态完善),又解决了AI模型推理的性能瓶颈,可落地于实时视频分析、智能监控、工业质检等场景。基于TensorRT Dynamic Shape实现多尺寸输入的自适应优化;结合Java的协程(Virtual Thread)提升异步推理的并发效率;

2601_94871597的博客 766

Java-springboot基于分布式存储的仿小米卡包优惠券后台系统(零)前言

仿小米卡包优惠券后台系统服务端应用的开发步骤服务端应用的开发技术测试用例完整的应用上线技术分析:框架层存储层消息队列基础工具卡包应用需要的子系统优惠券使用方法卡包应用扩展商户投放子系统 服务端应用的开发步骤 需求规划 技术选型 工程设计 工程实施 工程测试 应用上线 服务端应用的开发技术 kafka消息队列实现优惠券从商户到用户的传递 MySQL存储商户信息 Hbase存储用户信息、优惠卷信息等 springboot搭建整个项目 Redis优惠券的缓存 测试用例 TK测试 完整的应用上线 sh

bingbign0607的博客 523

Kafka 性能优化与常见问题排查

Kafka 的高性能依赖于合理的集群设计、参数优化与高效的监控体系。生产环境中,应重点关注I/O 瓶颈、分区规划、Producer/Consumer 参数调优,并通过监控与排查手段快速定位问题,从而保障 Kafka 在实时场景下的稳定运行。

X2829352498的博客 235

十分钟利用springboot写电商支持多种优惠券规则,使用策略模式替代大量的if-else

在开发电商折扣模块的时候经常会碰到各种优惠规则,那么就会碰到很多条件判断,冗余各种if-else的代码使得维护困难,此时就可以用策略模式来解决,替代大量的冗余判断条件代码,精简代码结构。策略模式是一种行为模式,也是替代大量ifelse的利器。它所能帮你解决的是场景,一般是具有同类可替代的行为逻辑算法场景。比如;不同类型的交易方式(信用卡、支付宝、微信)、生成唯一ID策略(UUID、DB自增、DB+Redis、雪花算法、Leaf算法)等,都可以使用策略模式进行行为包装,供给外部使用。/**

qq_41737694的博客 1153

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

基于Java springboot购物商城系统优惠券(源码+文档+运行视频+讲解视频)

摘要:本文设计了一个基于Java SpringBoot的购物商城系统,旨在解决传统优惠券管理中存在的规则复杂、发放流程繁琐、营销效果难统计等问题。系统采用SpringBoot+Vue+MyBatisPlus技术栈,实现优惠券管理、发放、核销和统计一体化功能。通过MySQL存储数据,Redis缓存热点信息,提升系统并发性能。测试显示系统显著提高了优惠券核销效率(90%)、用户领券转化率(75%)和营销活动ROI(60%)。文章详细介绍了系统架构、核心模块、技术实现方案,并提供了功能测试用例和代码示例,为开发类

weixin_mrw479640的博客 1138

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

PHP多商户跨店统一消费券系统程序源码

多商户跨店统一消费券系统,是现代消费模式的创新之举。它不仅让优惠变得更加简单、便捷和智能,还为消费者带来了前所未有的省钱体验。🎉 快来加入我们吧,一起开启省钱新篇章,享受更加丰富多彩的购物生活!🛍️💰。

2401_84413903的博客 721

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Springboot集成Easy Rules引擎,实现一个商品优惠券系统

Easy Rules是一个轻量级的Java规则引擎,它允许开发者将业务规则从代码中解耦出来,使规则的管理和执行更加灵活。现在让我们一起利用Spring Boot结合Easy Rules和MyBatis技术栈,可以实现一个高效且易于维护的优惠券系统例子。1. 添加依赖项在pom.xml文件中确保包含以下依赖项:<dependencies> <!-- Spring Boo...

qq_18244417的博客 1968

视频教程-SpringBoot2.X版本优惠券实战整合Dubbo+Rocketmq+Redis-其他

SpringBoot2.X版本优惠券实战整合Dubbo+Rocketmq+Redis ...

weixin_33502151的博客 828

SpringBoot整合Redis实现优惠券秒杀服务

Springboot整合Redis实现优惠券秒杀服务

qq_45949914的博客 1865

h5电子优惠券系统源码_Niushop | 单商户V4商城系统更新啦

Niushop单商户商城系统0元购活动 最初刚刚推出的时候 相信大部分人是难以置信的 也总是会有这样的疑虑: 0元购的商城系统 能有什么保障? 活动结束后 Niushop单商户V4商城系统 是不是就无人问津了呢? 吶,Niushop单商户V4商城系统更新播报来啦! 新增功能 ▶ 新增 微信小程序分享到朋友圈功能 小程序一键分享朋友圈,即可以分享让更多好友看到,又免去了单独或群发的繁琐,最关键的是不...

weixin_42298809的博客 485

h5电子优惠券系统源码_绝对实用的开源电子商务系统,你真的不来看一下吗?...

受疫情影响,越来越多的知名品牌入驻微信小程序,人们使用软件的习惯也逐渐偏向小程序这种能够快速打开,无需下载的h5交互平台。在小程序的热潮中,一些线下商家也意识到竞争的激烈,想要通过小程序拓展业务,但是,高昂的开发技术费、繁琐复杂的操作后台、不懂行情容易被骗、开发风险等问题成了中小型商家难以接受的问题。针对这些痛点,微态尔开发电子商务系统,想要从根本上为这些问题提供解决方案。高亮:没有任何营销套路,...

weixin_34080081的博客 1776
上一篇: Java-springboot基于分布式存储的仿小米卡包优惠券后台系统(一)商户投放系统开发
下一篇: Java-springboot基于分布式存储的仿小米卡包优惠券后台系统(三)商户投放系统开发
bingbing0607
博客等级 码龄9年 74粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值