SaaS企业增长网_SaaS行业微信群

您现在的位置是:首页 > SaaS公司 > 海外SaaS > 正文

海外SaaS

SaaS公司DocuSign概况、产品功能、融资历史及主要竞品介绍

SaaSHunter2023-03-24海外SaaS754

#### Docusign简介

DocuSign是一家SaaS公司,主要提供在线文档签署服务。公司总部位于美国加州旧金山,于2003年由Tom Gonser、Trent Twombly和 Keith Krach创立。

SaaS公司DocuSign概况、产品功能、融资历史及主要竞品介绍

DocuSign产品功能

DocuSign的主要产品是一个在线文档签署平台,允许用户通过电子邮件和移动应用程序在线签署文档。该平台还提供在线文档管理、在线合同管理和在线协作功能。

DocuSign融资历史

截至2018年6月,DocuSign已经完成了11轮融资,总融资额达到了17亿美元。其中,最近一轮融资是在2017年12月,当时公司获得了4.4亿美元的投资,主要来自于沃尔玛。

DocuSign主要竞品

DocuSign的主要竞品包括Adobe Sign、RightSignature和HelloSign。

相关的业务逻辑。

```java @Service public class BlogService { private final BlogRepository blogRepository;

public BlogService(BlogRepository blogRepository) {
    this.blogRepository = blogRepository;
}

public List<Blog> findAll() {
    List<Blog> blogList = blogRepository.findAll();
    return blogList;
}

public Blog save(Blog blog) {
    return blogRepository.save(blog);
}

public Blog findOne(long id) {
    return blogRepository.findOne(id);
}

public void delete(long id) {
    blogRepository.delete(id);
}

public List<Blog> findTop10ByOrderByUpdateTimeDesc(){
    return blogRepository.findTop10ByOrderByUpdateTimeDesc();
}

} ```

2.3 控制层

新建 BlogController 控制层,编写相关的接口。

```java @RestController public class BlogController { private final BlogService blogService;

public BlogController(BlogService blogService) {
    this.blogService = blogService;
}

@GetMapping("/blogs")
public ModelAndView list(@RequestParam(value = "async", required = false) boolean async,
                         @RequestParam(value = "pageIndex", required = false, defauLTValue = "0") int pageIndex,
                         @RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize,
                         @RequestParam(value = "name", required = false, defaultValue = "") String name,
                         Model model) {
    Pageable pageable = new PageRequest(pageIndex, pageSize);
    Page<Blog> page = blogService.listBlogsByNameLike(name, pageable);
    List<Blog> list = page.getContent();

    model.addAttribute("orderModel", 0);
    model.addAttribute("page", page);
    model.addAttribute("blogList", list);
    return new ModelAndView(async == true ? "users/list :: #mAInContainerRepleace" : "users/list", "blogModel", model);
}

@GetMapping("/blogs/{id}")
public ModelAndView view(@PathVariable("id") Long id, Model model) {
    Blog blog = blogService.getBlogById(id);
    model.addAttribute("blog", blog);
    return new ModelAndView("users/view", "blogModel", model);
}

@GetMapping("/blogs/edit/{id}")
public ModelAndView edit(@PathVariable("id") Long id, Model model) {
    Blog blog = blogService.getBlogById(id);
    model.addAttribute("blog", blog);
    return new ModelAndView("users/edit", "blogModel", model);
}

@PostMapping("/blogs/edit")
public ResponseEntity<Response> editBlog(@Valid @ModelAttribute("blog") Blog blog, BIndingResult result,
                                          RedirectAttributes attributes) {
    if (result.hasErrors()) {
        return ResponseEntity.ok().body(new Response(false, "操作失败"));
    }
    blogService.saveBlog(blog);
    return ResponseEntity.ok().body(new Response(true, "操作成功"));
}

@GetMapping("/blogs/new")
public ModelAndView createForm(Model model) {
    model.addAttribute("blog", new Blog());
    return new ModelAndView("users/new", "blogModel", model);
}

@PostMapping("/blogs/new")
public ResponseEntity<Response> create(@Valid Blog blog, BindingResult result) {
    if (result.hasErrors()) {
        return ResponseEntity.ok().body(new Response(false, "操作失败"));
    }
    blogService.saveBlog(blog);
    return ResponseEntity.ok().body(new Response(true, "操作成</p>

×

分享:

支付宝

微信