当前位置: 首页 > wzjs >正文

京东商城网站怎么做本地服务类网站成本

京东商城网站怎么做,本地服务类网站成本,跨境电商网站开发公司,typecho同步到wordpress一.后端环境搭建-前后端联调 首先进行编译,编译通过才能够正常运行,我们可以看到已成功编译通过。 SkyApplication启动成功 登录成功 二.登录操作 1.controller层 package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant; impo…

一.后端环境搭建-前后端联调

首先进行编译,编译通过才能够正常运行,我们可以看到已成功编译通过。

 SkyApplication启动成功

登录成功

二.登录操作 

1.controller层

package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant;
import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee;
import com.sky.properties.JwtProperties;
import com.sky.result.Result;
import com.sky.service.EmployeeService;
import com.sky.utils.JwtUtil;
import com.sky.vo.EmployeeLoginVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;/*** 员工管理*/
@RestController
@RequestMapping("/admin/employee")
@Slf4j
@Api(tags = "员工相关接口")
public class EmployeeController {@Autowiredprivate EmployeeService employeeService;@Autowiredprivate JwtProperties jwtProperties;/*** 登录** @param employeeLoginDTO* @return*/@PostMapping("/login")@ApiOperation(value = "员工登录")public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) {log.info("员工登录:{}", employeeLoginDTO);Employee employee = employeeService.login(employeeLoginDTO);//登录成功后,生成jwt令牌Map<String, Object> claims = new HashMap<>();claims.put(JwtClaimsConstant.EMP_ID, employee.getId());String token = JwtUtil.createJWT(jwtProperties.getAdminSecretKey(),jwtProperties.getAdminTtl(),claims);EmployeeLoginVO employeeLoginVO = EmployeeLoginVO.builder().id(employee.getId()).userName(employee.getUsername()).name(employee.getName()).token(token).build();return Result.success(employeeLoginVO);}/*** 退出** @return*/@PostMapping("/logout")@ApiOperation("员工登出")public Result<String> logout() {return Result.success();}}

 2.service层

接口 

package com.sky.service;import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee;public interface EmployeeService {/*** 员工登录* @param employeeLoginDTO* @return*/Employee login(EmployeeLoginDTO employeeLoginDTO);}

 实现类

package com.sky.service.impl;import com.sky.constant.MessageConstant;
import com.sky.constant.StatusConstant;
import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee;
import com.sky.exception.AccountLockedException;
import com.sky.exception.AccountNotFoundException;
import com.sky.exception.PasswordErrorException;
import com.sky.mapper.EmployeeMapper;
import com.sky.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;@Service
public class EmployeeServiceImpl implements EmployeeService {@Autowiredprivate EmployeeMapper employeeMapper;/*** 员工登录** @param employeeLoginDTO* @return*/public Employee login(EmployeeLoginDTO employeeLoginDTO) {String username = employeeLoginDTO.getUsername();String password = employeeLoginDTO.getPassword();//1、根据用户名查询数据库中的数据Employee employee = employeeMapper.getByUsername(username);//2、处理各种异常情况(用户名不存在、密码不对、账号被锁定)if (employee == null) {//账号不存在throw new AccountNotFoundException(MessageConstant.ACCOUNT_NOT_FOUND);}//密码比对// 对前端传过来的明文密码进行md5加密password = DigestUtils.md5DigestAsHex(password.getBytes());if (!password.equals(employee.getPassword())) {//密码错误throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);}if (employee.getStatus() == StatusConstant.DISABLE) {//账号被锁定throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);}//3、返回实体对象return employee;}}

3.mapper层

package com.sky.mapper;import com.sky.entity.Employee;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;@Mapper
public interface EmployeeMapper {/*** 根据用户名查询员工* @param username* @return*/@Select("select * from employee where username = #{username}")Employee getByUsername(String username);}

4.异常处理

AccountNotFoundException是我们自定义的一个异常类,代表账号不存在。在我们项目的sky-common项目当中存放了很多的异常类。在sky-server当中定义了全局异常处理器。

AccountNotFoundException继承了BaseException

package com.sky.exception;/*** 账号不存在异常*/
public class AccountNotFoundException extends BaseException {public AccountNotFoundException() {}public AccountNotFoundException(String msg) {super(msg);}}

BaseException继承了RuntimeException

package com.sky.exception;/*** 业务异常*/
public class BaseException extends RuntimeException {public BaseException() {}public BaseException(String msg) {super(msg);}}

全局异常处理器

package com.sky.handler;import com.sky.exception.BaseException;
import com.sky.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;/*** 全局异常处理器,处理项目中抛出的业务异常*/
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {/*** 捕获业务异常* @param ex* @return*/@ExceptionHandlerpublic Result exceptionHandler(BaseException ex){log.error("异常信息:{}", ex.getMessage());return Result.error(ex.getMessage());}}

查找到用户信息后,继续进行密码和状态比对。 

状态常量类 

package com.sky.constant;/*** 状态常量,启用或者禁用*/
public class StatusConstant {//启用public static final Integer ENABLE = 1;//禁用public static final Integer DISABLE = 0;
}

查询返回 

5.生成JWT令牌

登录成功后,生成JWT令牌

通过配置属性类将JwtProperties这个类的对象传入,然后调用其中的方法,来生成JWT令牌。@ConfigurationProperties(prefix = "sky.jwt")表明当前类是一个配置属性类,这个类的作用就是来封装配置文件当中的配置项,那么他封装的是哪个配置文件当中的配置项呢?显然是springboot配置文件。要找sky下面的jwt配置项。

package com.sky.properties;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "sky.jwt")
@Data
public class JwtProperties {/*** 管理端员工生成jwt令牌相关配置*/private String adminSecretKey;private long adminTtl;private String adminTokenName;/*** 用户端微信用户生成jwt令牌相关配置*/private String userSecretKey;private long userTtl;private String userTokenName;}

接着我们来看这两个springboot的配置文件,一个是application.yml,另一个是application-dev.yml,这两个其实都有效:在application.yml文件中

server:port: 8080spring:profiles:active: devmain:allow-circular-references: truedatasource:druid:driver-class-name: ${sky.datasource.driver-class-name}url: jdbc:mysql://${sky.datasource.host}:${sky.datasource.port}/${sky.datasource.database}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=trueusername: ${sky.datasource.username}password: ${sky.datasource.password}mybatis:#mapper配置文件mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.sky.entityconfiguration:#开启驼峰命名map-underscore-to-camel-case: truelogging:level:com:sky:mapper: debugservice: infocontroller: infosky:jwt:# 设置jwt签名加密时使用的秘钥admin-secret-key: itcast# 设置jwt过期时间admin-ttl: 7200000# 设置前端传递过来的令牌名称admin-token-name: token

spring.profiles.active:dev,表明dev配置文件也已开启。

6.封装数据响应给前端页面

package com.sky.vo;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "员工登录返回的数据格式")
public class EmployeeLoginVO implements Serializable {@ApiModelProperty("主键值")private Long id;@ApiModelProperty("用户名")private String userName;@ApiModelProperty("姓名")private String name;@ApiModelProperty("jwt令牌")private String token;}

使用builder()方法封装对象要加上@Builder注解。将构造好的EmployeeLoginVO对象统一响应给前端。 

http://www.dtcms.com/wzjs/565674.html

相关文章:

  • 淄博网站制作企业营销万网 做网站
  • 企业网站推广方案范文深圳住房与建设部网站
  • flash教程网站首页.net做网站用mvc
  • 如何让网站快速被收录企业年报申报入口官网
  • 免费创建自己的网站修机械师怎么做我小样网站角仰望
  • 绍兴免费网站建站模板外贸建站哪好
  • c2c网站管理系统创业网站建设规划书
  • h5手机网站制作广告联盟网站建设
  • 茂名企业网站开发wordpress返回上一页
  • 如何将aaa云主机做网站品牌视觉设计
  • dw网站建设云羽网络做网站怎么样
  • 汽配网站建设免费建设网站怎么样
  • 网站备案ip查询网站公司手机网站效果图
  • 国内设计师个人网站设计logo免费图片
  • 帮别人做网站赚钱新泰做网站
  • 官网站内推广内容做企业画册网站有
  • 济南网站制作定制公司云南网站开发培训机构
  • 国外可以做推广的网站有哪些wordpress评论通知
  • 个人域名备案做企业网站上海的室内设计公司
  • 建设通网站登录不进去企业固定ip做网站
  • 怎样做类似于优酷的视频网站建设企业网站官网企业网银
  • 做网站建设公司排名大庆医院网站建设方案
  • 网站不备案不能访问文化馆互联网站建设方案
  • 新站加快网站收录计算机网站建设实训总结
  • 网站空间和数据库wordpress免费响应式
  • 哪个网站找住宿的便宜wordpress评论发邮件
  • 湖北网站设计制作多少钱余姚本地网站排名
  • 做网站的组要具备哪些素质网站开发深圳
  • 柳州做网站的企业建设公司网站标题
  • 网站建设与开发定制html网页制作完整代码