Design and Implementation of an Online Course Purchase System(27)

SSO system engineering construction and service interface implementation

Posted by Chen Xingxu on June 3, 2020

易课寄在线购课系统开发笔记(二十七)–SSO系统工程搭建与服务接口实现

SSO 系统工程搭建

需要创建一个 SSO 服务工程,可以参考

易课寄在线购课系统开发笔记(七)–后台管理系统工程搭建分析

ecourses-bms 创建。

  • ecourses-parent:父工程,打包方式 pom,管理 jar 包的版本号。
    • ecourses-common:通用的工具类及通用的 pojo。打包方式 jar
    • ecourses-sso-web(war)
    • ecourses-sso(聚合工程pom)
      • ecourses-sso-interface(jar)
      • ecourses-sso-service(war)

服务接口实现

检查数据是否可用

功能分析

请求的 url:/user/check/{param}/{type}

参数:从 url 中取参数 String param(要校验的数据), Integer type(校验的数据类型)

响应的数据:JSON 数据。ECoursesResult,封装的数据校验的结果 true:成功,false:失败。

业务逻辑:

1、从 ecourses_user 表中查询数据

2、查询条件根据参数动态生成。

3、判断查询结果,如果查询到数据返回 false。

4、如果没有返回 true。

5、使用 ECoursesResult 包装并返回。

Dao层

从 ecourses_user 表查询。可以使用逆向工程。

Service

参数:

1、要校验的数据:String param

2、数据类型:int type(1、2、3分别代表 username、phone、email)

返回值:ECoursesResult

package cn.ecourses.service.impl;
@Service
public class UserServiceImpl implements UserService {

	@Autowired
	private EcoursesUserMapper userMapper;
	
	@Override
	public ECoursesResult checkData(String param, int type) {
		//根据不同的type生成不同的查询条件
		EcoursesUserExample example = new EcoursesUserExample();
		Criteria criteria = example.createCriteria();
		//1:用户名 2:手机号 3:邮箱
		if (type == 1) {
			criteria.andUsernameEqualTo(param);
		} else if (type == 2) {
			criteria.andPhoneEqualTo(param);
		} else if (type == 3) {
			criteria.andEmailEqualTo(param);
		} else {
			return ECoursesResult.build(400, "数据类型错误");
		}
		//执行查询
		List<EcoursesUser> list = userMapper.selectByExample(example);
		//判断结果中是否包含数据
		if (list != null && list.size()>0) {
			//如果有数据返回false
			return ECoursesResult.ok(false);
		}
		//如果没有数据返回true
		return ECoursesResult.ok(true);
	}
}

####

表现层

需要在 ecourses-sso-web 中实现。

####