B069-项目实战-店铺入驻-FastDfs-邮件

目录

      • 店铺入驻
        • 课堂笔记
        • data
        • 表结构
        • 自定义业务异常
        • impl
      • 图片上传-fastdfs
        • 应用背景
        • 概念理论
        • 入门案例
        • 项目使用
          • 1.导包
          • 2.添加配置文件
          • 3.导入工具类
          • 4.写接口将工具类暴露给前端使用
          • 5.前端部分
      • 审核邮件通知
        • 1.导入jar包
        • 2.配置
        • 3.发送邮件
        • 邮件激活登录账号

店铺入驻

到平台来注册店铺信息

课堂笔记

1.为什么要店铺入驻?
   节约平台成本
   合作共赢、避免了无畏的竞争
   
2.入驻的方式---到我平台上注册账号
  自己来申请
  平台拓展市场(平台员工帮它申请)
  
3.入驻的详细流程
  A 在入驻页面填写信息
       店铺信息
	   店铺管理员的账号信息
	   (支付相关的信息)
  B 点击入驻(后端生成店铺信息和管理员信息)
  C 有了管理员信息,店铺管理员就可以登录到我后端平台,查看自己待提交的店铺入驻信息
  D 店铺管理员提交审核-->平台小妹来审核店铺入驻信息
  E 审核通过、或者驳回  发送邮件或者短信通知店铺人员
   
  
4.写shop的后端
  表&domain  -》query  -》 mapper (xml) ->service->测试--》controller
  
5.店铺入驻实现细节
  1.在登录页面准备一个店铺入驻按钮,跳转到入驻页面
  2.准备入驻页面  拷贝课件(html、css、js);配置路由
  3.写后台逻辑-对应入驻页面的入驻按钮
    controller
	  需要接收前端数据
	  还要封装返回service的报错信息(自定义异常)
	service
	  a 检查注册用户是否已经存在。如果存在,抛出业务异常,提示已经注册,直接登录
	  b 先保存部门管理员(employee),需要返回主键
	  c 保存店铺(需要设置店铺管理员),需要返回主键
	  d 修改员工信息-->设置shopId
	mapper.xml

data

				shop: {
					name: '',
					tel: '',
					address: '',
					logo:'',
                        
					username:'',
					tel:'',
					phone:'',
					email:'',
					password:'',
					comfirmPassword:''
				},

表结构

B069-项目实战-店铺入驻-FastDfs-邮件_第1张图片

自定义业务异常

//自定义业务异常
public class BusinessException extends RuntimeException {

    public BusinessException(String message) {
        super(message);
    }

    public BusinessException() {
        super();
    }
}

impl

	@Override
    public void settledIn(Shop shop) {

        Employee admin = shop.getAdmin();

        //1.先校验有没有被注册过  通过username phone email
        Employee employee = employeeMapper.loadByUser(admin.getUsername());
        //如果有,提示:你已经入驻过了,请直接登录,{如果忘记密码,请找回密码}
        if(employee != null){
            throw new BusinessException("你已经入驻过了,请直接登录,{如果忘记密码,请找回密码}");
        }
        //2.先保存员工数据 保存之后返回自增id
        employeeMapper.save(admin);

        //3.保存门店数据--》管理员--->返回店铺自增id
        shop.setAdmin(admin);//设置店铺管理员
        shopMapper.save(shop);

        //4.修改管理员门店id
        admin.setShop_id(shop.getId());
        employeeMapper.update(admin);
    }

图片上传-fastdfs

应用背景

B069-项目实战-店铺入驻-FastDfs-邮件_第2张图片

概念理论

见文档

入门案例

见文档

项目使用

1.导包
<dependency>
    <groupId>cn.bestwugroupId>
    <artifactId>fastdfs-client-javaartifactId>
    <version>1.27version>
dependency>
2.添加配置文件

fdfs_client.conf

tracker_server=115.159.217.249:22122
3.导入工具类

FastDfsUtil,见文档

4.写接口将工具类暴露给前端使用

FastDfsController(上传和删除)

package cn.ming.basic.collection;

import cn.ming.basic.util.AjaxResult;
import cn.ming.basic.util.FastDfsUtil;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * 上传文件统一接口
 *  上传接口
 *  删除接口
 *  修改 = 删除 +上传
 */
@RestController
@RequestMapping("/fastDfs")
public class FastDfsController {

    /**
     * 上传接口
     * @param file  使用@RequestPart 申明,可以直接完成空校验
     */
    @PostMapping
    public AjaxResult upload(@RequestPart(value = "file", required = true)
                                     MultipartFile file){
        try {
            //获取扩展名
            String filename = file.getOriginalFilename();
            String extName = filename.substring(filename.lastIndexOf(".")+1);
            System.out.println(extName);

            String path = FastDfsUtil.upload(file.getBytes(), extName);
            return AjaxResult.me().setResultObj(path);
        } catch (IOException e) {
            e.printStackTrace();
            return AjaxResult.me().setMessage("上传失败!"+e.getMessage());
        }
    }

    /**
     * 删除接口
     * @param path  使用@RequestPart 申明,可以直接完成空校验
     */
    @DeleteMapping
    public AjaxResult del(@RequestParam(required = true,value = "path") String path){
        try {
            String pathTmp = path.substring(1); // goup1/xxxxx/yyyy
            String groupName =  pathTmp.substring(0, pathTmp.indexOf("/")); //goup1
            String remotePath = pathTmp.substring(pathTmp.indexOf("/")+1);// /xxxxx/yyyy
            System.out.println(groupName);
            System.out.println(remotePath);


            FastDfsUtil.delete(groupName, remotePath);
            return AjaxResult.me();
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.me().setMessage("删除失败!"+e.getMessage());
        }
    }
}
5.前端部分

element copy上传标签,两个方法,一个回调函数

<el-form-item prop="logo" label="店铺Logo">
	<el-upload
			class="upload-demo"
			action="http://localhost:8080/fastDfs"
			:on-preview="handlePreview"
			:on-remove="handleRemove"
			:on-success="handleSuccess"
			:file-list="fileList"
			list-type="picture">
		<el-button size="small" type="primary">点击上传el-button>
		<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kbdiv>
	el-upload>
el-form-item>

审核邮件通知

B069-项目实战-店铺入驻-FastDfs-邮件_第3张图片
B069-项目实战-店铺入驻-FastDfs-邮件_第4张图片

1.导入jar包

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-mailartifactId>
        dependency>

2.配置

直接yml里添加配置或者application.Properties配置都可以

# 设置邮箱主机(服务商)
spring.mail.host=smtp.qq.com
# 设置用户名
[email protected]
# 设置密码,该处的密码是QQ邮箱开启SMTP的授权码而非QQ密码
spring.mail.password=qzbxiwjfrweecacf
# 必须进行授权认证,它的目的就是阻止他人任意乱发邮件
spring.mail.properties.mail.smtp.auth=true
#SMTP加密方式:连接到一个TLS保护连接
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
# mail在spring层级之下
mail:
  host: smtp.qq.com
  username: [email protected]
  password: pbnfuokppoxxbijd   # 授权码

3.发送邮件

发送简单邮件(不带附件)和复杂邮件(带图片或压缩文件等附件)

@RunWith(SpringRunner.class)
@SpringBootTest(classes = PetApp.class)
public class JavaMailTest {

    @Autowired
    private JavaMailSender javaMailSender;

    @Test
    public void testSimple(){
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        //设置发送人
        mailMessage.setFrom("[email protected]");
        //邮件主题
        mailMessage.setSubject("新型冠状病毒防护指南");
        //邮件内容
        mailMessage.setText("好好在家待着.....");
        //收件人
        mailMessage.setTo("[email protected]");

        javaMailSender.send(mailMessage);
    }

    @Test
    public void test2() throws Exception{
        //创建复杂邮件对象
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //发送复杂邮件的工具类
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true,"utf-8");
        helper.setFrom("[email protected]");
        helper.setSubject("新型冠状病毒防护指南");
        http://img30.360buyimg.com/popWaterMark/jfs/t1/67988/7/14094/232759/5db64acfE6ab2b09e/38b5cb3dc38b4b1f.jpg"
        helper.setText("

新型冠状病毒防护守则

"
+ "",true); //添加附件 helper.addAttachment("100002.jpg",new File("D:\\文件存储\\5.图片\\头像\\100002.jpg")); // helper.addAttachment("压缩文件", new File("C:\\Users\\hm\\Desktop\\20191010\\2020-02-05-智能商贸-DAY4\\resources\\resources.zip")); //收件人 helper.setTo("[email protected]"); javaMailSender.send(mimeMessage); } }

邮件激活登录账号

B069-项目实战-店铺入驻-FastDfs-邮件_第5张图片

你可能感兴趣的:(笔记总结,后端,前端,java)