基于javaweb+mysql的ssm+maven小米交易商城系统(java+jsp+ssm+maven+mysql)

基于javaweb+mysql的ssm+maven小米交易商城系统(java+jsp+ssm+maven+mysql)

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的SSM+Maven小米交易商城系统(java+jsp+ssm+maven+mysql)

一、项目简述 环境配置:

Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)

项目技术:

JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。

    @RequestMapping("class_add")
    public String goodsClass_add(HttpServletRequest request){
        String class_name=request.getParameter("class_name");
        int class_cId=Integer.parseInt(request.getParameter("class_cId"));
        goodsClassMapper.classInsert(class_name,class_cId);
        return "redirect:/xm_goods_class";
    }

    @RequestMapping("class_update")
    public String goodsClass_Update(GoodsClass goodsClass){
        goodsClassMapper.classUpdate(goodsClass);
        return "redirect:/xm_goods_class";
    }

    @RequestMapping("class_delete")
    public String goodsClassDel(int class_id){
        goodsClassMapper.classDelete(class_id);
        return "redirect:/xm_goods_class";
    }

    @RequestMapping("class_ById")
    public ModelAndView StringgoodsClassById(int class_id){
        ModelAndView mv=new ModelAndView("admin/xm_updateClass");
        mv.addObject("goodsClassById",goodsClassMapper.goodsclass_ById(class_id));
        return mv;
    }

}

@Data
@Controller

@Controller
public class Goods_Class {
    @Autowired
    private GoodsClassMapper goodsClassMapper;
    @RequestMapping("xm_goods_class")
    public ModelAndView goodsClassAll(){
        ModelAndView mv=new ModelAndView("admin/xm_adminClass");
        mv.addObject("xm_goodsClass",goodsClassMapper.queryClassAll());
        return mv;
    }
    @RequestMapping("xm_adminClasss")
    public ModelAndView goodsClassAlls(){
        ModelAndView mv=new ModelAndView("admin/xm_adminClass");
        mv.addObject("xm_goodsClass",goodsClassMapper.queryClassAll());
        return mv;
    }
    @RequestMapping("class_add")
    public String goodsClass_add(HttpServletRequest request){
        String class_name=request.getParameter("class_name");
        int class_cId=Integer.parseInt(request.getParameter("class_cId"));
        goodsClassMapper.classInsert(class_name,class_cId);
        return "redirect:/xm_goods_class";
    }

    @RequestMapping("class_update")
    public String goodsClass_Update(GoodsClass goodsClass){
        goodsClassMapper.classUpdate(goodsClass);
        return "redirect:/xm_goods_class";
    }

    @RequestMapping("class_delete")
    public String goodsClassDel(int class_id){
        goodsClassMapper.classDelete(class_id);
        return "redirect:/xm_goods_class";
    }

    @RequestMapping("class_ById")
    public ModelAndView StringgoodsClassById(int class_id){
        ModelAndView mv=new ModelAndView("admin/xm_updateClass");
        mv.addObject("goodsClassById",goodsClassMapper.goodsclass_ById(class_id));
        return mv;
    }

}
        Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
        Cookie[] cookies = request.getCookies();
        if(null!=cookies){
            for(Cookie cookie : cookies){
                cookieMap.put(cookie.getName(), cookie);
            }
        }
        return cookieMap;
    }
    /**
     * 根据名字获取cookie
     * @param request
     * @param name cookie名字
     * @return
     */
    public static Cookie getCookieByName(HttpServletRequest request,String name){
        Map<String,Cookie> cookieMap = ReadCookieMap(request);
        if(cookieMap.containsKey(name)){
            Cookie cookie = (Cookie)cookieMap.get(name);
            return cookie;
        }else{
            return null;
        }
    }

    /**
     * 相同替换
     * @param shoppingCar
     * @param goodsInfo
     * @return
     */
    public static ShoppingCar replaceDao(ShoppingCar shoppingCar, GoodsInfo goodsInfo){
        shoppingCar.setGoodsID(goodsInfo.getGoodsID());
        shoppingCar.setGoodsName(goodsInfo.getGoodsName());
        shoppingCar.setGoodsImg(goodsInfo.getGoodsImg());
        shoppingCar.setMarketPrice(goodsInfo.getMarketPrice());
        return shoppingCar;
    }
}

        Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
        Cookie[] cookies = request.getCookies();
        if(null!=cookies){
            for(Cookie cookie : cookies){
                cookieMap.put(cookie.getName(), cookie);
            }
        }
        return cookieMap;
    }
    /**
     * 根据名字获取cookie
     * @param request
     * @param name cookie名字
     * @return
     */
    public static Cookie getCookieByName(HttpServletRequest request,String name){
        Map<String,Cookie> cookieMap = ReadCookieMap(request);
        if(cookieMap.containsKey(name)){
            Cookie cookie = (Cookie)cookieMap.get(name);
            return cookie;
        }else{
            return null;
        }
    }

    /**
     * 相同替换
     * @param shoppingCar
     * @param goodsInfo
     * @return
     */
    public static ShoppingCar replaceDao(ShoppingCar shoppingCar, GoodsInfo goodsInfo){
        shoppingCar.setGoodsID(goodsInfo.getGoodsID());
        shoppingCar.setGoodsName(goodsInfo.getGoodsName());
        shoppingCar.setGoodsImg(goodsInfo.getGoodsImg());
        shoppingCar.setMarketPrice(goodsInfo.getMarketPrice());
        return shoppingCar;
    }
}

        String name = req.getParameter("username");
        String pass = req.getParameter("password");

        if(name.equalsIgnoreCase("admins") && pass.equalsIgnoreCase("password")){
            return "redirect:/admin/admin_index.jsp";
        }else{
            return "redirect:/admin/admin_login.jsp";
        }
    }
}

public class UpFile {
    public static String upFileImg(CommonsMultipartFile url, HttpServletRequest req) {
        String path = "img/goodsInfo/";
        String p = req.getServletContext().getRealPath(path);
        File ff = new File(p);
        if(!ff.exists()){
            ff.mkdirs();
        }
        String name = url.getOriginalFilename();
        String ext = name.substring(name.lastIndexOf(".")).toLowerCase();
        String nn = new SimpleDateFormat("yyyyMMddHHmmssS").format(new Date());
        try {
        if(ext.equalsIgnoreCase(".jpg") || ext.equalsIgnoreCase(".png")){
            url.transferTo(new File(p,nn+ext));
        }
        } catch (IOException e) {
            e.printStackTrace();
            return "";
        }
        return nn+ext;
    }
}


@Controller
public class Commes {
    @Autowired
    private CommunityMapper communityMapper;
    @Autowired
    private CommsMapper commsMapper;
    @RequestMapping("/community")
    public ModelAndView test(@RequestParam(required=true,defaultValue="1") Integer page,
                             @RequestParam(required=false,defaultValue="5") Integer pageSize) {
        ModelAndView ma = new ModelAndView("community");
        PageHelper.startPage(page,pageSize);
        List<Community> list = communityMapper.queryalls();
        PageInfo<Community> p = new PageInfo<Community>(list);
        ma.addObject("commall",list);
        ma.addObject("page",p);
        ma.setViewName("community");
        return ma;
    }
    @RequestMapping("/comms1")
    public ModelAndView testes(int c_id){
        ModelAndView ma = new ModelAndView("comms1");
        ma.addObject("comm_show",communityMapper.queryById(c_id));
        ma.addObject("comm_shows",commsMapper.queall());
        /*ma.addObject("yu",commsMapper.queall());*/

       /* List<Comms> ls = commsMapper.queall();
        mv.addObject("cao",ls);*/
        return ma;
    }
    @RequestMapping("/xm_save")
    public String save(Community community){
        System.out.println(community.toString());
        communityMapper.intsert(community);
    return "redirect:/community";
    }
        @RequestMapping("/dels")
        public String dels(int c_id){
            communityMapper.delById(c_id);
            return "redirect:/community";
        }
    @RequestMapping("/saves")
            }
        }
        return cookieMap;
    }
    /**
     * 根据名字获取cookie
     * @param request
     * @param name cookie名字
     * @return
     */
    public static Cookie getCookieByName(HttpServletRequest request,String name){
        Map<String,Cookie> cookieMap = ReadCookieMap(request);
        if(cookieMap.containsKey(name)){
            Cookie cookie = (Cookie)cookieMap.get(name);
            return cookie;
        }else{
            return null;
        }
    }

    /**
     * 相同替换
     * @param shoppingCar
     * @param goodsInfo
     * @return
     */
    public static ShoppingCar replaceDao(ShoppingCar shoppingCar, GoodsInfo goodsInfo){
        shoppingCar.setGoodsID(goodsInfo.getGoodsID());
        shoppingCar.setGoodsName(goodsInfo.getGoodsName());
        shoppingCar.setGoodsImg(goodsInfo.getGoodsImg());
        shoppingCar.setMarketPrice(goodsInfo.getMarketPrice());
        return shoppingCar;
    }
}


@Controller
public class AutoCompleteServlet {
    @Autowired
    private AutoCompleteMapper autoCompleteMapper;
    @RequestMapping("/auto")
    public void auto(HttpServletRequest req, HttpServletResponse res){
        res.setContentType("text/html;charset=utf-8");
        try {
            List<GoodsInfo> users = autoCompleteMapper.getNames(req.getParameter("userName"));
                Gson gson = new Gson();
                String str = gson.toJson(users);
                res.getWriter().print(str);
            } catch(Exception e){
                e.printStackTrace();
            }
        }

}

@Controller

@Controller
public class Goods_Class {
    @Autowired
    private GoodsClassMapper goodsClassMapper;
    @RequestMapping("xm_goods_class")
    public ModelAndView goodsClassAll(){
        ModelAndView mv=new ModelAndView("admin/xm_adminClass");
        mv.addObject("xm_goodsClass",goodsClassMapper.queryClassAll());
        return mv;
    }
    @RequestMapping("xm_adminClasss")
    public ModelAndView goodsClassAlls(){
        ModelAndView mv=new ModelAndView("admin/xm_adminClass");
        mv.addObject("xm_goodsClass",goodsClassMapper.queryClassAll());
        return mv;
    }
    @RequestMapping("class_add")
    public String goodsClass_add(HttpServletRequest request){
        String class_name=request.getParameter("class_name");
        int class_cId=Integer.parseInt(request.getParameter("class_cId"));
        goodsClassMapper.classInsert(class_name,class_cId);
        return "redirect:/xm_goods_class";
    }

    @RequestMapping("class_update")
    public String goodsClass_Update(GoodsClass goodsClass){
        goodsClassMapper.classUpdate(goodsClass);
        return "redirect:/xm_goods_class";
    }

    @RequestMapping("class_delete")
    public String goodsClassDel(int class_id){
        goodsClassMapper.classDelete(class_id);
        return "redirect:/xm_goods_class";
    }

    @RequestMapping("class_ById")
    public ModelAndView StringgoodsClassById(int class_id){
        ModelAndView mv=new ModelAndView("admin/xm_updateClass");
        mv.addObject("goodsClassById",goodsClassMapper.goodsclass_ById(class_id));
        return mv;
    }

}


@Controller
public class Commes {
    @Autowired
    private CommunityMapper communityMapper;
    @Autowired
    private CommsMapper commsMapper;
    @RequestMapping("/community")
    public ModelAndView test(@RequestParam(required=true,defaultValue="1") Integer page,
                             @RequestParam(required=false,defaultValue="5") Integer pageSize) {
        ModelAndView ma = new ModelAndView("community");
        PageHelper.startPage(page,pageSize);
        List<Community> list = communityMapper.queryalls();
        PageInfo<Community> p = new PageInfo<Community>(list);
        ma.addObject("commall",list);
        ma.addObject("page",p);
        ma.setViewName("community");
        return ma;
    }
    @RequestMapping("/comms1")
    public ModelAndView testes(int c_id){
        ModelAndView ma = new ModelAndView("comms1");
        ma.addObject("comm_show",communityMapper.queryById(c_id));
        ma.addObject("comm_shows",commsMapper.queall());
        /*ma.addObject("yu",commsMapper.queall());*/

       /* List<Comms> ls = commsMapper.queall();
        mv.addObject("cao",ls);*/
        return ma;
    }
    @RequestMapping("/xm_save")
    public String save(Community community){
        System.out.println(community.toString());
        communityMapper.intsert(community);
    return "redirect:/community";
    }
        @RequestMapping("/dels")
        public String dels(int c_id){
            communityMapper.delById(c_id);

@Controller
public class Goods_Class {
    @Autowired
    private GoodsClassMapper goodsClassMapper;
    @RequestMapping("xm_goods_class")
    public ModelAndView goodsClassAll(){
        ModelAndView mv=new ModelAndView("admin/xm_adminClass");
        mv.addObject("xm_goodsClass",goodsClassMapper.queryClassAll());
        return mv;
    }
    @RequestMapping("xm_adminClasss")
    public ModelAndView goodsClassAlls(){
        ModelAndView mv=new ModelAndView("admin/xm_adminClass");
        mv.addObject("xm_goodsClass",goodsClassMapper.queryClassAll());
        return mv;
    }
    @RequestMapping("class_add")
    public String goodsClass_add(HttpServletRequest request){
        String class_name=request.getParameter("class_name");
        int class_cId=Integer.parseInt(request.getParameter("class_cId"));
        goodsClassMapper.classInsert(class_name,class_cId);
        return "redirect:/xm_goods_class";
    }

    @RequestMapping("class_update")
    public String goodsClass_Update(GoodsClass goodsClass){
        goodsClassMapper.classUpdate(goodsClass);
        return "redirect:/xm_goods_class";
    }

                        shoppingCar.setUserID(session.getAttribute("member").toString());
                        //添加到数据库
                        shoppingCarMapper.addShoppingCar(shoppingCar);
                    }
                }
            //删除Cookies
            Cookie[] cookies = req.getCookies();
            if (cookies != null) {
                for (Cookie cookie : cookies) {
                    try {
                        if(cookie.getName().length()==36) {
                            System.out.println(cookie.getName());
                            cookie.setMaxAge(0);
                            cookie.setPath("/");
                            res.addCookie(cookie);
                        }
                    } catch (Exception e) {
                        continue;
                    }
                }
            }

            return "redirect:/index";
        }else{
            return "redirect:/login.jsp";
        }
    }
}

@Controller
public class Commes {
    @Autowired
    private CommunityMapper communityMapper;
    @Autowired
    private CommsMapper commsMapper;
    @RequestMapping("/community")
            String email = request.getParameter("u_email");
            String phone = request.getParameter("u_phone");
            String tname = request.getParameter("u_tname");
            String sex = request.getParameter("u_sex");
            String address = request.getParameter("u_address");
            String face = request.getParameter("u_face");
            userDao.setU_name(name);
            userDao.setU_pass(mdpass);
            userDao.setU_email(email);
            userDao.setU_phone(phone);
            userDao.setU_tname(tname);
            userDao.setU_sex(sex);
            userDao.setU_address(address);
            userDao.setU_face(face);
            userDaoMapper.u_insert(userDao);
            return "redirect:/index";

    }

}

@Controller
public class AdminInfo {
    @Autowired
    private AdminMapper adminMapper;

    @RequestMapping("/admin_query_id")
    public ModelAndView admin_query_Id(){
        ModelAndView mv=new ModelAndView("admin/update_pass");
        HttpSession session=request.getSession();
        String num="0";
        if(session.getAttribute("member")!=null){
            List<ShoppingCar> li=shoppingCarMapper.queryAllShoppingCar(session.getAttribute("member").toString());
            num=li.size()+"";
        }else{
            List<Integer> ll=CookieUtils.queryAllCookie(request);
            num=ll.size()+"";
        }
        return num;
    }

    @RequestMapping("/carIndexShow") @ResponseBody
    public List<GoodsInfo> carIndexShow(HttpServletRequest request, HttpServletResponse response){
        HttpSession session=request.getSession();
        List<GoodsInfo> li=new ArrayList<GoodsInfo>();
        if(session.getAttribute("member")!=null){
            List<ShoppingCar> ls=shoppingCarMapper.queryAllShoppingCar(session.getAttribute("member").toString());
            for(ShoppingCar sc:ls){
                li.add(goodsInfoMapper.queryGoods(sc.getGoodsID()));
            }
        }else{
            List<Integer> ll=CookieUtils.queryAllCookie(request);
            for(int goodsID:ll){
                li.add(goodsInfoMapper.queryGoods(goodsID));
            }
        }
        return li;
    }
}

            //判断该用户的购物车是否存在
            if (shoppingCarMapper.queryUserCar(goodsID, session.getAttribute("member").toString()) == null) {
                CookieUtils.replaceDao(shoppingCar, goodsInfo);
                //用户
                shoppingCar.setUserID(session.getAttribute("member").toString());
                //添加到数据库
                shoppingCarMapper.addShoppingCar(shoppingCar);
            }
        }
        mv.addObject("goods", goodsInfo);
        return mv;
    }

    //查看购物车
    @RequestMapping("/shoppingCar")
    public ModelAndView ShoppingCar() {
        List<GoodsInfo> li = new ArrayList<GoodsInfo>();
        ModelAndView mv = new ModelAndView("shoppingCar");
        mv.addObject("goodsAll",goodsInfoMapper.queryAllGoods());
        //判断是否登录,否则查看Cookie
        if (session.getAttribute("member") == null) {
            //获取Cookie
            List<Integer> lis = CookieUtils.queryAllCookie(request);
            for (int i : lis) {
                li.add(shoppingCarMapper.queryGoodsInfoID(i));
            }
            mv.addObject("goods", li);
        } else {
            mv.addObject("goods", shoppingCarMapper.queryAllShoppingCar(session.getAttribute("member").toString()));
        }
        return mv;
    }

    //登录后把Cookie的内容放在数据库 方法,
    /*@RequestMapping("/cookieSave")
    @ResponseBody
    public void sa() {
        if (session.getAttribute("user") == null) {
            //获取Cookie
            List<Integer> lis = CookieUtils.queryAllCookie(request);
            for (int i : lis) {
                if (shoppingCarMapper.queryUserCar(i, 1) == null) {
                    GoodsInfo goodsInfo = shoppingCarMapper.queryGoodsInfoID(i);
                    CookieUtils.replaceDao(shoppingCar, goodsInfo);
                                 @RequestParam(required=false,defaultValue="5") Integer pageSize){
       // ModelAndView mv = new ModelAndView("/admin/xm_admin");
        PageHelper.startPage(page,pageSize);
        List<GoodsInfo> list = goodsInfoMapper.query();
        PageInfo<GoodsInfo> p = new PageInfo<GoodsInfo>(list);
        mv.addObject("commall",list);
        mv.addObject("page",p);
        mv.setViewName("/admin/xm_admin");
        mv.addObject("showall",list);
        return mv;
    }

    @RequestMapping("/save")
    public String insert(@RequestParam("goodsImg") CommonsMultipartFile f,HttpServletRequest req) throws IOException {
        String path = "img/goodsInfo/";
        String p = req.getServletContext().getRealPath(path);
        File ff = new File(p);
        if(!ff.exists()){
            ff.mkdirs();
        }
        //上传文件到指定目录中
        //long size = f.getSize();
        String name = f.getOriginalFilename();
        String ext = name.substring(name.lastIndexOf(".")).toLowerCase();
        String nn = new SimpleDateFormat("yyyyMMddHHmmssS").format(new Date());
        if(ext.equalsIgnoreCase(".jpg") || ext.equalsIgnoreCase(".png")){
            f.transferTo(new File(p,nn+ext));
        }
        int c_ID=Integer.parseInt(req.getParameter("c_ID"));
        String goodsName=req.getParameter("goodsName");
        String goodsIntroduce=req.getParameter("goodsIntroduce");
        String service=req.getParameter("service");
        String goodsImg=nn+ext;
        String goodsUrl=req.getParameter("goodsUrl");
        double marketPrice=Double.parseDouble(req.getParameter("marketPrice"));
        int isNew=Integer.parseInt(req.getParameter("isNew"));
        int discount=Integer.parseInt(req.getParameter("discount"));
        String flag=req.getParameter("flag");
        int class_cId=Integer.parseInt(req.getParameter("class_cId"));
        goodsInfoMapper.goodsInfo_insert(c_ID,goodsName,goodsIntroduce,service,goodsImg,goodsUrl,marketPrice,isNew,discount,flag,class_cId);
        return "redirect:/admin";
    }
    @RequestMapping("/del")
    public String del(int goodsID){

@Controller
public class Con_Carousel {
    @Autowired
    private CarouselMapper carouselMapper;

    @RequestMapping("/carouselAdmin")
    public ModelAndView xm_admin() {
        ModelAndView mv = new ModelAndView("/admin/carousel_admin");
        mv.addObject("carouselshow", carouselMapper.carousel_show());
        return mv;
    }
    @RequestMapping("/carousel_save")
    public String insert(@RequestParam("img") CommonsMultipartFile f, HttpServletResponse resp, HttpServletRequest req) throws IOException {
        String path = "img/carousel/";
        String p = req.getServletContext().getRealPath(path);
        File ff = new File(p);
        if(!ff.exists()){
            ff.mkdirs();
        }
        //上传文件到指定目录中
        long size = f.getSize();
        String name = f.getOriginalFilename();
        String ext = name.substring(name.lastIndexOf(".")).toLowerCase();
        String nn = new SimpleDateFormat("yyyyMMddHHmmssS").format(new Date());
        if(ext.equalsIgnoreCase(".jpg") || ext.equalsIgnoreCase(".png")){
            f.transferTo(new File(p,nn+ext));
        }
        String title=req.getParameter("title");
        String img=nn+ext;
        String url=req.getParameter("url");
        String flag=req.getParameter("flag");
        carouselMapper.carousel_insert(title,img,url,flag);
            return "redirect:/carouselAdmin";
    }

    @RequestMapping("/carousel_del")
    public String del(int id) {
       // System.out.println();
        carouselMapper.carousel_del(id);
        return "redirect:/carouselAdmin";
    }
    @RequestMapping("/carousel_update")
    public String update(Carousel carousel) {
                //添加到数据库
                shoppingCarMapper.addShoppingCar(shoppingCar);
            }
        }
        mv.addObject("goods", goodsInfo);
        return mv;
    }

    //查看购物车
    @RequestMapping("/shoppingCar")
    public ModelAndView ShoppingCar() {
        List<GoodsInfo> li = new ArrayList<GoodsInfo>();
        ModelAndView mv = new ModelAndView("shoppingCar");
        mv.addObject("goodsAll",goodsInfoMapper.queryAllGoods());
        //判断是否登录,否则查看Cookie
        if (session.getAttribute("member") == null) {
            //获取Cookie
            List<Integer> lis = CookieUtils.queryAllCookie(request);
            for (int i : lis) {
                li.add(shoppingCarMapper.queryGoodsInfoID(i));
            }
            mv.addObject("goods", li);
        } else {
            mv.addObject("goods", shoppingCarMapper.queryAllShoppingCar(session.getAttribute("member").toString()));
        }
        return mv;
    }

    //登录后把Cookie的内容放在数据库 方法,
    /*@RequestMapping("/cookieSave")
    @ResponseBody
    public void sa() {
        if (session.getAttribute("user") == null) {
            //获取Cookie
            List<Integer> lis = CookieUtils.queryAllCookie(request);
            for (int i : lis) {
                if (shoppingCarMapper.queryUserCar(i, 1) == null) {
                    GoodsInfo goodsInfo = shoppingCarMapper.queryGoodsInfoID(i);
                    CookieUtils.replaceDao(shoppingCar, goodsInfo);
                    //用户
                    shoppingCar.setUserID(1);
                    //添加到数据库
                    shoppingCarMapper.addShoppingCar(shoppingCar);
                }
            }
        }
    }*/
    @RequestMapping("/carNum")
    @ResponseBody
    public Integer Num(){
        if (session.getAttribute("member") == null) {
            Cookie[] cookies = request.getCookies();
            return cookies.length-1;

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值