Springboot+jedis简单项目

一、主页登录页面

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript" src="/js/jquery-2.1.0.js"></script>

    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

    <!-- 可选的 Bootstrap 主题文件(一般不用引入)-->
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"
          integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

    <!--最新的 Bootstrap 核心 JavaScript 文件 -->
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"
            integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
            crossorigin="anonymous"></script>

    <!--js框架-->
    <!--<script type="text/javascript" src="/js/angularjs.js"></script>-->
    <script>
        $(function () {
            $("#submit").click(function () {
                var username = $("input:eq(0)");
                var password = $("input:eq(1)");
                var msg = ""
                if ($.trim(username.val()) == "") {
                    msg = "用户名不能为空!";
                    username.focus();
                } else if (!/^\w{5,20}$/.test($.trim(username.val()))) {
                    msg = "用户名格式不正确!";
                    username.focus();
                } else if ($.trim(password.val()) == "") {
                    msg = "密码不能为空!";
                    password.focus();
                } else if (!/^\w{6,20}$/.test($.trim(password.val()))) {
                    msg = "密码格式不正确!";
                    password.focus();
                }
                if (msg != "") {
                    alert(msg);
                } else {
                    // 获取表单中的参数
                    var params = $("#form").serialize();

                    // 发送登录的异步请求
                    $.ajax({
                        url: "login",
                        data: params,
                        success: function (data) {
                            if (data == "ok") {
                                window.location.href = "/sto/stock"
                            } else {
                                alert("账号或密码错误");
                            }
                        }

                    })


                }

            });
            // 为document绑定onkeydown事件监听是否按了回车键
            $(document).keydown(function (event) {
                if (event.keyCode === 13) { // 按了回车键
                    $("#submit").trigger("click");
                }
            });
        });
    </script>
</head>
二、添加货源页面

<!doctype html>
<html>

   <head>
      <meta charset="utf-8">
      <title></title>
      <script type="text/javascript" src="/js/jquery-2.1.0.js"></script>

      <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
      <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

      <!-- 可选的 Bootstrap 主题文件(一般不用引入)-->
      <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

      <!--最新的 Bootstrap 核心 JavaScript 文件 -->
      <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

      <!--js框架-->
      <!--<script type="text/javascript" src="/js/angularjs.js"></script>-->

        <!--三级联动插件-->

        <script type="text/javascript" src="/shengshiliandong/area.js"></script>

      <script>

      </script>
   </head>

   <body>
      <div class="container">
         <div class="col-md-offset-2 col-md-6">
            <form class="form-horizontal" id="form" enctype="multipart/form-data" method="post" action="/sto/addStock">
               <div class="form-group">
                  <label for="name" class="col-sm-2 control-label">货物名称</label>
                  <div class="col-sm-6">
                     <input type="text" class="form-control" id="name" name="name">
                  </div>
                  <div class="col-sm-4 c"></div>
               </div>
               <div class="form-group">
                  <label for="num" class="col-sm-2 control-label">货物数量</label>
                  <div class="col-sm-6">
                     <input  class="form-control" id="num" name="num">
                  </div>
                  <div class="col-sm-4 c"></div>
               </div>

                    <div class="form-group">
                        <label for="s_province" class="col-sm-2 control-label">货物来源</label>
                        <div class="info">
                            <div class="col-sm-3">
                                <select id="s_province" class="form-control" name="from"></select>
                            </div>
                            <div class="col-sm-3">
                                <select id="s_city" class="form-control"    name="from"></select>
                            </div>
                            <div class="col-sm-3">
                                <select id="s_county" class="form-control" name="from"></select>
                                <script type="text/javascript">
                                    _init_area();
                                </script>
                            </div>
                            <div id="show"></div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="multipartFile" class="col-sm-2 control-label">货物图片</label>
                        <div class="col-sm-3">
                            <input name="multipartFile" id="multipartFile" class="file-loading" type="file" />
                        </div>
               </div>
               <div class="form-group">
                  <div class="col-sm-offset-2 col-sm-6">
                     <button type="submit" id="submit" class="btn btn-default">保存</button>
                  </div>
               </div>
            </form>
         </div>
   </body>
   <script>
    var Gid = document.getElementById;

    var showArea = function() {

    Gid('show').innerHTML = "<h3>省" + Gid('s_province').value + " - 市" +

        Gid('s_city').value + " - 县/区" +

        Gid('s_county').value + "</h3>"
    }
    Gid('s_county').setAttribute('onchange', 'showArea()');
    </script>


</html>
三、配置出库页面

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript" src="/js/jquery-2.1.0.js"></script>

    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

    <!-- 可选的 Bootstrap 主题文件(一般不用引入)-->
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"
          integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

    <!--最新的 Bootstrap 核心 JavaScript 文件 -->
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"
            integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
            crossorigin="anonymous"></script>

    <!--js框架-->
    <!--<script type="text/javascript" src="/js/angularjs.js"></script>-->


    <script>

    </script>
</head>

<body>
<div class="container">
    <div class="col-md-12">
        <nav class="navbar navbar-default">
            <div class="container-fluid">
                <!-- Brand and toggle get grouped for better mobile display -->
                <div class="navbar-header">

                </div>

                <!-- Collect the nav links, forms, and other content for toggling -->
                <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">

                    <form class="navbar-form navbar-left" action="/sto/selectLike">
                        <div class="form-group">
                            <input type="text" class="form-control" placeholder="Search" name="name">
                        </div>
                        <button type="submit" class="btn btn-default">Submit</button>
                    </form>

                </div>
            </div>
        </nav>
    </div>
    <div class="row ">

    <#list list as l>

        <div class="col-md-4">
            <div class="row">
                <div class="col-md-5"><img src="${l.photo}" width="150" height="190"></div>

                <div class="col-md-7">
                    <table style="height: 160px; margin-top: 20px">
                        <tr>
                            <td>名称:</td>
                            <td>${l.name}</td>
                        </tr>
                        <tr>
                            <td>数量:</td>
                            <td>${l.num}</td>
                        </tr>
                        <tr>
                            <td>产地:</td>
                            <td>${l.from}</td>
                        </tr>
                        <tr>
                            <td>日期:</td>
                            <td>${l.createDate?string("yyyy-MM-dd")}</td>
                        </tr>
                        <tr>
                            <td>选择:</td>
                            <td><input type="checkbox" value="${l.id}" name="ids"></td>
                        </tr>
                    </table>
                </div>
            </div>
        </div>
    </#list>

    </div>
    <div class="col-md-offset-11"><input class="btn btn-default" type="button" οnclick="show()" value="出库"></div>

    <#--<div style="margin-left: 500px">-->
        <#--<nav aria-label="Page navigation" >-->
        <#--<ul class="pagination">-->
        <#--<#if list.isFirstPage==true>-->
            <#--<li class="disabled"><a href="selectLike?pageNo=${list.firstPage}&pageSize=${list.pageSize}"-->
                                    <#--aria-label="Previous">-->
                <#--<span aria-hidden="true">&laquo;</span>&lt;#&ndash;class="active"&ndash;&gt;</a>-->
            <#--</li>-->
        <#--<#else >-->
            <#--<li><a href="selectLike?pageNo=${list.prePage}&pageSize=${list.pageSize}"-->
                   <#--aria-label="Previous">-->
                <#--<span aria-hidden="true">&laquo;</span>&lt;#&ndash;class="active"&ndash;&gt;</a></li>-->
        <#--</#if>-->

        <#--<#list 1..list.pages as s>-->
            <#--<li><a href="selectLike?pageNo=${s}&pageSize=${list.pageSize}">${s}</a></li>-->
        <#--</#list>-->

        <#--<#if list.isLastPage==true>-->
            <#--<li class="disabled"><a href="selectLike?pageNo=${list.lastPage}&pageSize=${list.pageSize}"-->
                                    <#--aria-label="Next">-->
                <#--<span aria-hidden="true">&raquo;</span>-->
            <#--</a></li>-->
        <#--<#else >-->
            <#--<li><a href="selectLike?pageNo=${list.nextPage}&pageSize=${list.pageSize}" aria-label="Next">-->
                <#--<span aria-hidden="true">&raquo;</span>-->
            <#--</a></li>-->
        <#--</#if>-->
        <#--</ul>-->
        <#--</nav>-->
    <#--</div>-->

    <#--<nav aria-label="...">-->
        <#--<ul class="pager">-->
        <#--<#if list.isFirstPage==true>-->
            <#--<li class="disabled"><a href="selectLike?pageNo=${list.firstPage}&pageSize=${list.pageSize}"-->
                                    <#--aria-label="Previous">-->
                <#--<span aria-hidden="true">Previous</span>&lt;#&ndash;class="active"&ndash;&gt;</a>-->
            <#--</li>-->
        <#--<#else >-->
            <#--<li><a href="selectLike?pageNo=${list.firstPage}&pageSize=${list.pageSize}"-->
                   <#--aria-label="Previous">-->
                <#--<span aria-hidden="true">Previous</span>&lt;#&ndash;class="active"&ndash;&gt;</a></li>-->
        <#--</#if>-->
        <#--<#if list.isLastPage==true>-->
            <#--<li class="disabled"><a href="selectLike?pageNo=${list.lastPage}&pageSize=${list.pageSize}"-->
                                    <#--aria-label="Next">-->
                <#--<span aria-hidden="true">Next</span>-->
            <#--</a></li>-->
        <#--<#else >-->
            <#--<li><a href="selectLike?pageNo=${list.lastPage}&pageSize=${list.pageSize}" aria-label="Next">-->
                <#--<span aria-hidden="true">Next</span>-->
            <#--</a></li>-->
        <#--</#if>-->
        <#--</ul>-->
    <#--</nav>-->

<#--</div>-->
</div>
</body>
<script>

    function show() {
        var data = $(":checked");
        var ids = [];
        $.each(data, function () {
            ids.push($(this).val());
        });

        /*  $.ajax({
              url: "sto/addDate",
              data: {"ids": ids.join(",")},
              success: function (data) {
                  alert("出库成功");
                  location.reload();
              }
          });*/
        $.post("/sto/addDate", {"ids": ids.join(",")}, function (data) {
            alert("出库成功");
            location.reload();
        });
    }


</script>
</html>
四、用户控制类

package com.bw.controller;

import com.bw.pojo.User;
import com.bw.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

@Controller
@RequestMapping("user")
public class UserController {

    @Resource
    private UserService userService;

    @RequestMapping("/")
    public String index(){
        return "index";
    }
    @RequestMapping("login")
    @ResponseBody
    public String login(User user){
        User selectUser = userService.selectUser(user);
        System.out.print(selectUser);
      if(selectUser==null){
            return "errer";
        }else {
            return "ok";
        }

    }
}
五、货源控制类

package com.bw.controller;

import com.alibaba.fastjson.JSON;
import com.bw.pojo.IdsDate;
import com.bw.pojo.Stock;
import com.bw.service.StockService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.boot.SpringApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import redis.clients.jedis.Jedis;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import java.util.UUID;

@Controller
@RequestMapping("sto")
public class StockController {

    @Resource
    private StockService stockService;

    @RequestMapping("stock")
    public String stock() {
        return "stock";
    }

    @RequestMapping("addStock")
    public String stock(Stock stock, MultipartFile multipartFile, HttpServletRequest request) throws IOException {
        String newName = multipartFile.getOriginalFilename();
        String suffixName = newName.substring(newName.lastIndexOf("."));
        newName = UUID.randomUUID() + suffixName;
        //获取文件流
        InputStream inputStream1 = multipartFile.getInputStream();

        //获取物理路径
        String wlPath = "E:\\Java\\projects\\JavaWorkspace\\myrepository\\src\\main\\resources\\static\\images/" + newName;

        //逻辑路径
        String ljPath = "../images/" + newName;

        //临时路径
        String pathRoot = request.getSession().getServletContext().getRealPath("/");//自动寻找target根目录
        String lsPath = pathRoot + "\\images\\" + newName;


        //判断是否需要创建文件夹
        //物理路径文件夹
        File wlFile = new File("E:\\Java\\projects\\JavaWorkspace\\myrepository\\src\\main\\resources\\static\\images");
        //临时路径文件夹
        File lsFile = new File(pathRoot + "\\images\\");

        if (!wlFile.exists()) {
            wlFile.mkdir();
        }
        if (!lsFile.exists()) {
            lsFile.mkdir();
        }

        //执行读写操作
        if (!multipartFile.isEmpty()) {
            //将文件放入物理路径
            FileOutputStream wlFileOutputStream = new FileOutputStream(wlPath);
            //将文件放入临时路径
            FileOutputStream lsFileOutputStream1 = new FileOutputStream(lsPath);

            int line = 0;

            while ((line = inputStream1.read()) != -1) {
                //写入物理路径
                wlFileOutputStream.write(line);
                //写入临时路径
                lsFileOutputStream1.write(line);
            }

            wlFileOutputStream.flush();
            lsFileOutputStream1.flush();
            lsFileOutputStream1.close();
            wlFileOutputStream.close();
            inputStream1.close();
        }
        stock.setPhoto(ljPath);
        stock.setCreateDate(new Date());
        stockService.addStock(stock);
        return "redirect:/sto/selectStock";
    }

    @RequestMapping("selectStock")
    public ModelAndView selectStock(ModelAndView modelAndView ,String pageNo,String pageSize){
        Jedis jedis = new Jedis("192.168.134.10",6379);
        jedis.select(1);

        String string = jedis.get("list");
        List<Stock> list  = null;
        if(string==null){
            list = stockService.selectStock();
            jedis.set("list", JSON.toJSONString(list));
        }else {
            list = (List<Stock>) JSON.parse(string);
        }
        System.out.print( list);
        modelAndView.addObject("list",list);
        modelAndView.setViewName("stocks");

        return modelAndView;
    }
    @RequestMapping("addDate")
    @ResponseBody
    public String  addDate(IdsDate idsDate){
        idsDate.setDate(new Date());
        stockService.updateStock(idsDate);
        return "ok";
    }

    @RequestMapping("selectLike")
    public ModelAndView selectLike(ModelAndView modelAndView ,String name,String pageNo,String pageSize){
        int num = 1;
        int size= 3;
        if (pageNo!=null &&  !"".equals(pageNo)){
            num = Integer.parseInt(pageNo);
        }
        if (pageSize!=null &&  !"".equals(pageSize)){
            size = Integer.parseInt(pageSize);
        }
        //开始分页
        PageHelper.startPage(num,size);
        List<Stock> stocks = stockService.selectLike(name);
        PageInfo<Stock> list = new PageInfo<>(stocks);
        modelAndView.addObject("list",list);
        modelAndView.setViewName("stocks");
        return modelAndView;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 好的,以下是一个简单的Spring Boot与Redis集成的项目。 1. 首先,我们需要在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 这将添加Spring Data Redis的依赖。 2. 接下来,我们需要在application.properties文件中添加Redis的配置信息: ``` spring.redis.host=localhost spring.redis.port=6379 ``` 这里我们使用本地的Redis服务,端口为6379。 3. 然后,我们创建一个RedisConfig类,用于配置Redis连接池和RedisTemplate: ``` @Configuration public class RedisConfig { @Bean JedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory(); } @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(jedisConnectionFactory()); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; } } ``` 这里我们使用Jedis作为Redis客户端,配置了连接工厂和RedisTemplate,将key和value都序列化为字符串。 4. 接下来,我们创建一个Controller类,用于添加和获取数据: ``` @RestController public class RedisController { @Autowired private RedisTemplate<String, Object> redisTemplate; @PostMapping("/add") public void add(@RequestParam String key, @RequestParam String value) { redisTemplate.opsForValue().set(key, value); } @GetMapping("/get") public Object get(@RequestParam String key) { return redisTemplate.opsForValue().get(key); } } ``` 这里我们使用了@Autowired注解将RedisTemplate注入到Controller中,实现了添加和获取数据的接口。 5. 最后,我们启动Spring Boot应用,并访问http://localhost:8080/add?key=test&value=hello,添加数据。然后访问http://localhost:8080/get?key=test,获取数据,成功获取到刚才添加的内容。 这就是一个简单的Spring Boot与Redis集成的项目。 ### 回答2: Spring Boot是一个用于简化Spring应用程序开发的框架,它提供了快速搭建基于Spring的应用程序的能力。而Redis是一个开源的内存数据存储,它广泛用于缓存、消息队列、实时分析等场景。 在一个简单的Spring Boot Redis项目中,我们首先需要引入Spring Boot和Redis的依赖。可以在项目的pom.xml文件中添加相应的依赖项。然后,我们需要配置Redis连接,在application.properties(或application.yml)文件中配置Redis的连接信息,如Redis的主机、端口、密码等。 接下来,我们可以创建一个简单的控制器,用于处理业务逻辑。在该控制器中,我们可以通过注入RedisTemplate对象来操作Redis。通过RedisTemplate,我们可以执行常见的Redis操作,如设置值、获取值、删除值等等。 例如,我们可以创建一个UserController类,用于处理用户的注册和登录逻辑。在这个控制器中,我们可以使用Redis来存储用户的相关信息,比如用户名、密码等。在用户注册时,我们将用户信息存储到Redis中,并设置一个过期时间,以实现自动清除用户信息的功能。而在用户登录时,我们可以通过从Redis中获取用户信息来验证用户的身份。 除了基本的CRUD操作,Spring Boot还提供了一些高级功能,如分布式缓存、分布式锁等。这些功能可以帮助我们更好地利用Redis来提升系统的性能和可靠性。例如,我们可以使用Redis作为缓存来提高数据的访问速度,同时利用Redis的分布式锁来保证数据的一致性。 总之,Spring Boot Redis简单项目可以帮助我们快速上手使用Redis,并且在开发过程中提供了很多便利的特性。通过使用Spring Boot和Redis,我们可以轻松地构建出高效、可靠的应用程序。 ### 回答3: Spring Boot Redis是一个用于搭建分布式缓存系统的框架,能够帮助开发者快速搭建基于Redis的应用程序。下面是一个简单的Spring Boot Redis项目介绍。 首先,我们需要在pom.xml文件中添加Spring Boot和Redis的依赖。 ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> </dependencies> ``` 接下来,我们需要在application.properties或application.yml文件中配置Redis的连接信息。 ```properties spring.redis.host=127.0.0.1 spring.redis.port=6379 ``` 然后,我们可以创建一个简单的实体类,并在类上添加注解来定义实体在Redis中的存储方式。 ```java @RedisHash("user") public class User { @Id private Long id; private String name; private int age; //省略getter和setter方法 } ``` 接着,我们可以创建一个Repository接口来操作Redis中的数据。 ```java public interface UserRepository extends CrudRepository<User, Long> { User findByName(String name); List<User> findByAgeGreaterThan(int age); } ``` 最后,我们可以在Controller中使用Repository来操作Redis中的数据。 ```java @RestController public class UserController { @Autowired private UserRepository userRepository; @GetMapping("/users/{name}") public User getUserByName(@PathVariable String name) { return userRepository.findByName(name); } @GetMapping("/users/age/{age}") public List<User> getUsersByAge(@PathVariable int age) { return userRepository.findByAgeGreaterThan(age); } } ``` 通过以上步骤,我们就可以创建一个简单的Spring Boot Redis项目。在该项目中,我们可以使用Repository接口来对Redis中的数据进行操作,比如查询用户信息、根据条件筛选用户等。这个项目可以作为学习和了解Spring Boot Redis的入门案例,建议初学者可以动手试一试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值