品牌管理系统【登录】

需求:

1、不同的角色拥有不同的权限进入相对应的页面

2、对价格进行区间查询,以及分页

3、添加的时候状态为默认、删除提示

4、表格统计每个厂商的个数

首先Maven  项目的搭建,导入所需要的jar包

 建表建库:


create   table   phone (
  id  int primary key   auto_increment,
  name  varchar(20),
  fid   int ,
  price  int,
  create_time  date,
  state  int ,
  foreign key  (fid)  references frim (id)


)

  create   table  frim(
    id  int primary key   auto_increment,
    name  varchar(20)


  )

  create   table  admin (

  id  int primary key   auto_increment,
    username  varchar(20),
    password  varchar(20),
    role_id  int,

    foreign key  (role_id)  references role  (id)



  )

    create   table  role(
      id  int primary key   auto_increment,
      role_name varchar(20)

    );

登录界面:


public class UserService implements UserDetailsService {

    @Reference
    MyService  myService;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

        Admin user=myService.getusername(username);
      List<GrantedAuthority> list = new ArrayList<>();


      list.add(new SimpleGrantedAuthority(user.getRole().getRoleName()));

        return new   User(username,"{noop}"+user.getPassword(),list);






    }

MyService  接口

ublic interface MyService {


    Admin getusername(String username);

    PageResult findPage(Phone phone);


    List<Frim> bu();


    void del(Integer id);

    void add(Phone phone);

    List<KeVo> findcount1();

    List<KeVo> ji();

    List<KeVo> sds();



}

MyServiceImpl 的实现类

Service
public class MyServiceimpl  implements MyService {

    @Autowired
    AdminMapper adminMapper;
    @Autowired
    FrimMapper frimMapper;
    @Autowired
    PhoneMapper  phoneMapper;
    @Autowired
    RoleMapper  roleMapper;

    @Override
    public Admin getusername(String username) {

        Example example = new Example(Admin.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("username",username);

        Admin admin = adminMapper.selectOneByExample(example);
        Integer roleId = admin.getRoleId();

        Role role = roleMapper.selectByPrimaryKey(roleId);
        admin.setRole(role);
        return admin;
    }

    @Override
    public PageResult findPage(Phone phone) {
        Example example = new Example(Phone.class);
        Example.Criteria criteria = example.createCriteria();

        Integer sta = phone.getSta();
        Integer end = phone.getEnd();

        String fname = phone.getFname();
        if(sta!=null){
            criteria.andGreaterThanOrEqualTo("price",sta);
        }
        if(end!=null){
            criteria.andLessThanOrEqualTo("price",end);
        }



        List<Phone> list = phoneMapper.selectByExample(example);

        for (Phone phone1 : list) {
            Integer fid = phone1.getFid();
            Frim frim = frimMapper.selectByPrimaryKey(fid);

            phone1.setFrim(frim);
        }




        PageInfo<Phone> p = new PageInfo<>(list);


        return   new PageResult(p.getTotal(),p.getList());
    }

    @Override
    public List<Frim> bu() {
        return frimMapper.selectAll();
    }

    @Override
    public void del(Integer id) {
        phoneMapper.deleteByPrimaryKey(id);
    }

    @Override
    public void add(Phone phone) {

        phoneMapper.insert(phone);

    }

    @Override
    public List<KeVo> findcount1() {

        return  phoneMapper.count();
    }

    @Override
    public List<KeVo> ji() {
        return  phoneMapper.count();
    }

    @Override
    public List<KeVo> sds() {
        return phoneMapper.count();
    }
}

dao层

 

public interface PhoneMapper  extends Mapper<Phone> {

    @Select("select  f.name cname ,count(*)  num  from phone  p join frim f on p.fid = f.id  where   p.state=1   group by  f.name")
    List<KeVo> count();

}

pojo中Phone 类

package com.jiyun.pojo;


import javax.persistence.*;
import java.io.Serializable;
import java.io.Serializable;
import java.util.Date;

@Table(name = "phone")
public class Phone implements Serializable {

	private static final long serialVersionUID = 4539362065725308439L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id")
	private Integer id;

	@Column(name = "name")
	private String name;

	@Column(name = "fid")
	private Integer fid;

	@Column(name = "price")
	private Integer price;

	@Column(name = "create_time")
	private Date createTime;

	@Column(name = "state")
	private Integer state;

	@Transient
	private   Integer  pageSize;

	@Transient
	private   Integer  pageNum;

	@Transient
	private  String  fname;

	public String getFname() {
		return fname;
	}

	public void setFname(String fname) {
		this.fname = fname;
	}

	public Integer getPageSize() {
		return pageSize;
	}

	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}

	public Integer getPageNum() {
		return pageNum;
	}

	public void setPageNum(Integer pageNum) {
		this.pageNum = pageNum;
	}

	@Transient
private   Frim   frim;

@Transient
private   Integer   sta;
@Transient
private   Integer  end;

	public Integer getSta() {
		return sta;
	}

	public void setSta(Integer sta) {
		this.sta = sta;
	}

	public Integer getEnd() {
		return end;
	}

	public void setEnd(Integer end) {
		this.end = end;
	}

	public static long getSerialVersionUID() {
		return serialVersionUID;
	}

	public Frim getFrim() {
		return frim;
	}

	public void setFrim(Frim frim) {
		this.frim = frim;
	}

	public Phone() {
	}

	public Phone(Integer id, String name, Integer fid, Integer price, Date createTime, Integer state) {	
		this.id = id;
		this.name = name;
		this.fid = fid;
		this.price = price;
		this.createTime = createTime;
		this.state = state;
	}


	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getFid() {
		return fid;
	}

	public void setFid(Integer fid) {
		this.fid = fid;
	}

	public Integer getPrice() {
		return price;
	}

	public void setPrice(Integer price) {
		this.price = price;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public Integer getState() {
		return state;
	}

	public void setState(Integer state) {
		this.state = state;
	}


	@Override
	public String toString() {
		return "Phone{" +
				"id='" + id + '\'' +
				"name='" + name + '\'' +
				"fid='" + fid + '\'' +
				"price='" + price + '\'' +
				"createTime='" + createTime + '\'' +
				"state='" + state + '\'' +
				'}';
	}

}

前台代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 引入样式 -->
    <!-- 引入样式 -->
    <link rel="stylesheet" href="../js/node_modules/element-ui/lib/theme-chalk/index.css">
    <link rel="stylesheet" href="../plugins/font-awesome/css/font-awesome.min.css">
    <link rel="stylesheet" href="../css/style.css">

    <!-- 上传图片框样式,不使用上传组件可以删除此样式 -->
    <style>
        .avatar-uploader .el-upload {
            border: 1px dashed #d9d9d9;
            border-radius: 6px;
            cursor: pointer;
            position: relative;
            overflow: hidden;
        }

        .avatar-uploader .el-upload:hover {
            border-color: #409EFF;
        }

        .avatar-uploader-icon {
            font-size: 28px;
            color: #8c939d;
            width: 150px;
            height: 70px;
            line-height: 150px;
            text-align: center;
        }

        .avatar {
            width: 150px;
            height: 70px;
            display: block;
        }

    </style>
</head>
<body class="hold-transition">
<div id="app">

    <div class="content-header">
        <h1>管理
            <small>疫苗管理</small>
        </h1>
        <el-breadcrumb separator-class="el-icon-arrow-right" class="breadcrumb">
            <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
            <el-breadcrumb-item>管理</el-breadcrumb-item>
            <el-breadcrumb-item>疫苗管理</el-breadcrumb-item>
        </el-breadcrumb>
    </div>

    <div class="app-container">
        <div class="box">
            <div class="filter-container">
                <!--查询表单-->
                <el-form :inline="true">
                    <el-form-item label="价格个数">
                        <el-input v-model="page.sta" placeholder="起始" class="filter-item"></el-input>
                    </el-form-item>
                    <el-form-item label="">
                    <el-input v-model="page.end" placeholder="结束" class="filter-item"></el-input>
                    </el-form-item>
                    <!--<el-form-item label="厂商" >-->
                        <!--<el-select v-model="pojo.fid" placeholder="请选择厂商区域">-->
                            <!--<el-option v-for="a  in   dept" :label="a.name" :value="a.id"></el-option>-->

                        <!--</el-select>-->
                    <!--</el-form-item>-->

                    <!--<el-form-item label="厂商">-->
                        <!--<el-input v-model="page.fname" placeholder="起始" class="filter-item"></el-input>-->
                    <!--</el-form-item>-->

                    <el-button class="dalfBut" @click="fetchData()">查询</el-button>
                    <el-button type="primary" class="butT" @click="handleAdd">新增</el-button>
                    <!--<el-button type="primary" class="butT" @click="delAll">批量删除</el-button>-->


                </el-form>
            </div>

            <el-table ref="multipleTable" :data="tableData" border style="width: 100%"
                      @selection-change="handleSelectionChange">
                <el-table-column
                        type="selection"
                        width="55">
                </el-table-column>
                <el-table-column prop="id" label="编号"></el-table-column>
                <el-table-column prop="name" label="品牌"></el-table-column>

                <el-table-column label="厂商">
                    <template slot-scope="scope">
                        <span>{{ scope.row.frim.name}}</span>
                    </template>
                </el-table-column>


                <el-table-column prop="price" label="价格"></el-table-column>
                <!--<el-table-column label="性别">-->
                    <!--<template slot-scope="scope">-->
                        <!--<span>{{ scope.row.sex == 1 ? '男' : '女'}}</span>-->
                    <!--</template>-->
                <!--</el-table-column>-->

                <el-table-column prop="createTime" label="时间"></el-table-column>

                <el-table-column label="状态">
                <template slot-scope="scope">
                <span>{{ scope.row.state == 1 ? '已发售' : '未发售'}}</span>
                </template>
                </el-table-column>
                <el-table-column label="操作">
                    <template slot-scope="scope">
                        <!--<el-button @click="edit(scope.row.id)" size="mini" type="primary" size="small">修改</el-button>-->
                        <el-button @click="dele(scope.row.id)" size="mini" type="danger" size="small">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <el-pagination
                    @size-change="handleSizeChange"
                    @current-change="handleCurrentChange"
                    :current-page="page.pageNum"
                    :page-sizes="[2, 4, 6, 8]"
                    :page-size="page.pageSize"
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="page.total">
            </el-pagination>

            <div class="add-form">
                <!--弹出窗口-->
                <el-dialog title="添加" :visible.sync="formVisible">
                    <el-form label-width="80px">


                        <el-form-item label="品牌 ">
                            <el-input v-model="pojo.name" autocomplete="off"></el-input>
                        </el-form-item>

                        <el-form-item label="厂商" :label-width="formLabelWidth">
                            <el-select v-model="pojo.fid" placeholder="请选择场地区域">
                                <el-option v-for="a  in   dept" :label="a.name" :value="a.id"></el-option>

                            </el-select>
                        </el-form-item>


                        <el-form-item label="价格 ">
                            <el-input v-model="pojo.price" autocomplete="off"></el-input>
                        </el-form-item>

                        <el-form-item label="时间 ">
                            <el-date-picker
                                    v-model="pojo.createTime"
                                    type="date"
                                    placeholder="选择日期">
                            </el-date-picker>
                        </el-form-item>


                        <el-form-item label="状态" :label-width="formLabelWidth">
                            <el-select v-model="pojo.state" placeholder="请选择活动区域">
                                <el-option label="已发售" value=1></el-option>
                                <el-option label="未发售" value=2></el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item>
                            <el-button type="primary" @click="save()">保存</el-button>
                            <el-button @click="formVisible = false">关闭</el-button>
                        </el-form-item>
                    </el-form>
                </el-dialog>
            </div>

            <div class="add-form">
                <!--弹出窗口-->
                <el-dialog title="添加" :visible.sync="formVisible2">
                    <el-form label-width="80px">

                        <el-form-item label="类型" :label-width="formLabelWidth">
                            <el-select v-model="pojo.zid" placeholder="请选择场地区域">
                                <el-option v-for="a  in   dept" :label="a.name" :value="a.id"></el-option>

                            </el-select>
                        </el-form-item>

                        <el-form-item label="性别" :label-width="formLabelWidth">
                            <el-select v-model="pojo.sex" placeholder="请选择活动区域">
                                <el-option label="男" value=1></el-option>
                                <el-option label="女" value=0></el-option>
                            </el-select>
                        </el-form-item>


                        <el-form-item label="介绍 ">
                            <el-input v-model="pojo.couponDesc" autocomplete="off"></el-input>
                        </el-form-item>

                        <el-form-item label="开始时间 ">
                            <el-date-picker
                                    v-model="pojo.createTime"
                                    type="date"
                                    placeholder="选择日期">
                            </el-date-picker>
                        </el-form-item>

                        <el-form-item label="介绍 ">
                            <el-input v-model="pojo.kil" autocomplete="off"></el-input>
                        </el-form-item>


                        <el-form-item label="出货" :label-width="formLabelWidth">
                            <el-select v-model="pojo.state" placeholder="请选择活动区域">
                                <el-option label="已出货" value=1></el-option>
                                <el-option label="未出货" value=0></el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item>
                            <el-button type="primary" @click="update">保存</el-button>
                            <el-button @click="formVisible2 = false">关闭</el-button>
                        </el-form-item>
                    </el-form>
                </el-dialog>
            </div>



        </div>
    </div>


</div>
</body>
<script src="../js/node_modules/vue/dist/vue.js"></script>
<script src="../js/node_modules/axios/dist/axios.js"></script>
<script src="../js/node_modules/element-ui/lib/index.js"></script>
<script>
    new Vue({
        el: '#app',
        data() {
            return {
                contents: [],
                tableData: [],

                multipleSelection: [],
                page: {
                    pageNum: 1,
                    total: null,
                    pageSize:2,
                    name:"",
                    couponId:null,
                    sta:"",
                    end:"",
                    fname:"",

                    state:'2'
                },
                pojo: {},
                dept: {},
                formVisible: false,
                formVisible2: false,
                contentVisible: false,
                imageUrl: '',
                parentIds: [0]
            }
        },
        created() {
            this.fetchData();

            this.bu();
        },
        methods: {

            bu() {
                axios.get("/bu.do").then(res => {
                    // 用户的集合,有没有疫苗的id
                    this.dept = res.data;
                })
            },
            out(userId, vaccineId) {
                axios.get("/out.do?userId=" + userId + "&vaccineId=" + vaccineId).then(res => {

                    axios.get("/findContents.do?id=" + vaccineId).then(res => {
                        // 用户的集合,有没有疫苗的id
                        this.contents = res.data;
                        // 给每一个当前疫苗的详情用户,绑定疫苗id
                        for (let i = 0; i < this.contents.length; i++) {
                            this.contents[i].vaccineId = id;
                        }
                    })

                })
            },
            handleAdd() {
                this.pojo = {};
                // this.pojo = {
                //
                //     state:1
                // };

                this.pojo.state='2'

                this.formVisible = true;
                // 从保存parentId的数组中,得到最后一位数据
                this.pojo.parentId = this.parentIds[this.parentIds.length - 1];
            },
            fetchData() {
                axios.post("/findPage.do",this.page).then(response => {
                    this.tableData = response.data.rows;
                    this.page.total = response.data.total;
                });
            },
            save() {

                axios.post("/add.do", this.pojo).then(response => {
                    if (response.data.code == 0) {

                        this.$message({
                            message: '恭喜你,添加成功!',
                            type: 'success'
                        });
                        this.formVisible = false;//关闭窗口
                        this.fetchData(); //刷新列表
                    } else {
                        this.$message.error("没有权限添加")
                    }


                });
            },

            update() {

                axios.post("/update.do", this.pojo).then(response => {
                    if (response.data.code == 0) {
                        this.$message({
                            message: '恭喜你,修改成功!',
                            type: 'success'
                        });
                        this.formVisible2 = false;//关闭窗口
                        this.fetchData(); //刷新列表
                    } else {
                        this.$message.error("没有权限修改")
                    }


                });
            },


            content(id) {
                this.contentVisible = true;
                // 通过疫苗的id,查询中间表用户信息
                axios.get("/findContents.do?id=" + id).then(res => {
                    // 用户的集合,有没有疫苗的id
                    this.contents = res.data;
                    // // 给每一个当前疫苗的详情用户,绑定疫苗id
                    // for (let i = 0; i < this.contents.length; i++) {
                    //     this.contents[i].vaccineId = id;
                    // }
                })
            },
            edit(id) {
                this.formVisible2 = true // 打开窗口
                // 调用查询
                axios.get(`/byid.do?id=${id}`).then(response => {
                    this.pojo = response.data;
                    // this.imageUrl=this.pojo.image //显示图片  如页面有图片上传功能放开注释
                })

            },
            handleSelectionChange(val) {
                this.multipleSelection = val;
            },
            delAll() {
                this.$confirm('确定要多选删除此记录吗?', '提示', {}).then(() => {
                    axios.post("/delAll.do", this.multipleSelection).then(response => {
                        if (response.data.code == 0) {
                            this.fetchData(); //刷新列表
                            this.$message({
                                message: '恭喜你,删除数据成功!',
                                type: 'success'
                            });
                        } else {

                            this.$message.error("删除数据失败")
                        }
                    })
                })
            },
            dele(id) {
                this.$confirm('确定要删除此记录吗?').then(() => {
                    axios.get("/del.do?id=" + id).then(response => {
                        if (response.data.code == 0) {

                            this.$message({
                                message: '恭喜你,删除数据成功!',
                                type: 'success'
                            });
                            this.fetchData(); //刷新列表
                        } else {
                            this.$message({
                                message: "没有权限,不能删除",
                                type: 'success'
                            });
                        }
                    })
                })
            },

            handleSizeChange(val) {
       this.page.pageSize=val;
       this.fetchData();
            },
            handleCurrentChange(val) {
                this.page.pageNum=val;
                this.fetchData();
            }

        }
    })
</script>
</html>

MyController

package com.jiyun.controller.security;

import com.alibaba.dubbo.config.annotation.Reference;
import com.jiyun.entity.PageResult;
import com.jiyun.entity.Result;
import com.jiyun.pojo.Frim;
import com.jiyun.pojo.KeVo;
import com.jiyun.pojo.Phone;
import com.jiyun.service.MyService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class MyController {



    @Reference
    MyService  myService;
//展示所有
    @RequestMapping("findPage")
    public   PageResult   findPage(@RequestBody Phone phone  ){


        return   myService.findPage(phone);
    }
//添加
//    超级管理员
    @PreAuthorize("hasRole('ROLE_CHAO')")
    @RequestMapping("add")
    public  Result  add(@RequestBody Phone phone  ){

        myService.add(phone);
        return   new Result() ;
    }

    @PreAuthorize("hasRole('ROLE_CHAO')")
    @RequestMapping("del")
    public  Result  del(Integer  id  ){

        myService.del(id);
        return   new Result() ;
    }

    @PreAuthorize("hasRole('ROLE_CHAO')")
@RequestMapping("ji")
public   List<KeVo>  ji(){
        return   myService.ji();
}


    @RequestMapping("bu")
    public   List<Frim>   bu(  ){


        return   myService.bu();
    }



}

效果展示:

 

表格统计
 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 引入样式 -->
    <!-- 引入样式 -->
    <link rel="stylesheet" href="../js/node_modules/element-ui/lib/theme-chalk/index.css">
    <link rel="stylesheet" href="../plugins/font-awesome/css/font-awesome.min.css">
    <link rel="stylesheet" href="../css/style.css">

    <!-- 上传图片框样式,不使用上传组件可以删除此样式 -->
    <style>
        .avatar-uploader .el-upload {
            border: 1px dashed #d9d9d9;
            border-radius: 6px;
            cursor: pointer;
            position: relative;
            overflow: hidden;
        }

        .avatar-uploader .el-upload:hover {
            border-color: #409EFF;
        }

        .avatar-uploader-icon {
            font-size: 28px;
            color: #8c939d;
            width: 150px;
            height: 70px;
            line-height: 150px;
            text-align: center;
        }

        .avatar {
            width: 150px;
            height: 70px;
            display: block;
        }

    </style>
</head>
<body class="hold-transition">
<div id="app">

    <div class="content-header">
        <h1>管理
            <small>疫苗管理</small>
        </h1>
        <el-breadcrumb separator-class="el-icon-arrow-right" class="breadcrumb">
            <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
            <el-breadcrumb-item>管理</el-breadcrumb-item>
            <el-breadcrumb-item>疫苗管理</el-breadcrumb-item>
        </el-breadcrumb>
    </div>

    <div class="app-container">
        <div class="box">


            <el-table ref="multipleTable" :data="tableData" border style="width: 100%"
                      @selection-change="handleSelectionChange">
                <el-table-column
                        type="selection"
                        width="55">
                </el-table-column>
                <el-table-column prop="cname" label="名称"></el-table-column>
                <el-table-column prop="num" label="个数"></el-table-column>

            </el-table>
            <el-pagination
                    @size-change="handleSizeChange"
                    @current-change="handleCurrentChange"
                    :current-page="page.pageNum"
                    :page-sizes="[2, 4, 6, 8]"
                    :page-size="page.pageSize"
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="page.total">
            </el-pagination>





        </div>
    </div>


</div>
</body>
<script src="../js/node_modules/vue/dist/vue.js"></script>
<script src="../js/node_modules/axios/dist/axios.js"></script>
<script src="../js/node_modules/element-ui/lib/index.js"></script>
<script>
    new Vue({
        el: '#app',
        data() {
            return {
                contents: [],
                tableData: [],

                multipleSelection: [],
                page: {
                    pageNum: 1,
                    total: null,
                    pageSize:2,
                    name:"",
                    couponId:null,
                    sta:"",
                    end:"",

                    state:2
                },
                pojo: {},
                dept: {},
                formVisible: false,
                formVisible2: false,
                contentVisible: false,
                imageUrl: '',
                parentIds: [0]
            }
        },
        created() {
            this.fetchData();

            this.bu();
        },
        methods: {

            bu() {
                axios.get("/bu.do").then(res => {
                    // 用户的集合,有没有疫苗的id
                    this.dept = res.data;
                })
            },
            out(userId, vaccineId) {
                axios.get("/out.do?userId=" + userId + "&vaccineId=" + vaccineId).then(res => {

                    axios.get("/findContents.do?id=" + vaccineId).then(res => {
                        // 用户的集合,有没有疫苗的id
                        this.contents = res.data;
                        // 给每一个当前疫苗的详情用户,绑定疫苗id
                        for (let i = 0; i < this.contents.length; i++) {
                            this.contents[i].vaccineId = id;
                        }
                    })

                })
            },
            handleAdd() {
                this.pojo = {};
                this.formVisible = true;
                // 从保存parentId的数组中,得到最后一位数据
                this.pojo.parentId = this.parentIds[this.parentIds.length - 1];
            },
            fetchData() {
                axios.post("/ji.do",).then(response => {
                    this.tableData = response.data;
                });
            },
  

           


          

            handleSizeChange(val) {
       this.page.pageSize=val;
       this.fetchData();
            },
            handleCurrentChange(val) {
                this.page.pageNum=val;
                this.fetchData();
            }

        }
    })
</script>
</html>

效果展示

 添加:

 删除提示:

 

小付博客目录

如果我的博客对你有帮助,也是你所喜欢的内容,请“点赞”   “评论”  “收藏”   一键三连,就是对我最大的支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明天会更好fjy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值