实体类:
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import org.springframework.format.annotation.DateTimeFormat;
import lombok.Data;
@Data
@Entity
@Table
@EntityListeners(AuditingEntityListener.class)
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; // 用户编号UUID
@NotNull
@Column(unique = true,name = "loginname",nullable = false)
private String loginName; // 登录名
@Column(unique = true, name = "password",length = 8)
private String password; // 密码
@Column(name = "islockout",columnDefinition = "tinyint default 0")
private int isLockOut; // 是否锁定(0表示未锁定,1表示锁定)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@CreatedDate
@Column(name = "createtime")
private Date createTime; // 账号创立时间
@Column(name = "lastlogintime")
private Date lastLoginTime; // 最后一次登录时间
@Column(name = "locktime")
private Date lockTime; // 被锁定时间
@Column(name = "psdwrongtime",columnDefinition = "tinyint default 0")
private Integer psdWrongTime; // 密码错误次数
@Column(name = "protectemail")
private String protectEmail; // 密保邮箱
@Column(unique = true,length = 11,name="protectmtel")
private String protectMTel; // 密保手机号
}
service接口类:
package com.sxd.crm.service;
import java.util.Map;
import com.sxd.crm.dto.UsersDto;
import com.sxd.crm.model.Users;
public interface IUsersService {
//根据条件查询
Map<String, Object> findByCondition(UsersDto dto);
//锁定用户
void lockUser(int id);
//锁定用户
void lockUsers(int id);
//添加用户
void addUser(Users users);
//删除用户
void delUser(int id);
}
service实现类:
package com.sxd.crm.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.transaction.Transactional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import com.sxd.crm.dao.IUsersDao;
import com.sxd.crm.dto.UsersDto;
import com.sxd.crm.model.Users;
@Service
@Transactional
public class UsersService implements IUsersService{
@Resource
private IUsersDao usersdao;
@Override
public Map<String, Object> findByCondition(UsersDto dto) {
Map<String, Object> map=new HashMap<String, Object>();
Pageable pageable = PageRequest.of(dto.getPage()-1, dto.getSize(), Sort.by(Direction.DESC, "lastLoginTime"));
Page<Users> page = usersdao.findAll(getWhereClause(dto), pageable);
map.put("code", 0);
map.put("count", usersdao.count(getWhereClause(dto)));
map.put("msg", "查询成功");
map.put("data",page.getContent());
return map;
}
private Specification<Users> getWhereClause(UsersDto dto){
return new Specification<Users>() {
@Override
public Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
List<Predicate> list=new ArrayList<Predicate>();
if(dto.getPassword()!=null&&""!=dto.getPassword()) {
list.add(criteriaBuilder.equal(root.get("Password").as(String.class), dto.getPassword()));
}
if(dto.getLoginName()!=null&&""!=dto.getLoginName()) {//登录名
list.add(criteriaBuilder.like(root.get("LoginName").as(String.class), "%"+dto.getLoginName()+"%"));
}
if(dto.getStartCreateTime()!=null) {
list.add(criteriaBuilder.greaterThanOrEqualTo(root.get("CreateTime").as(Date.class), dto.getStartCreateTime()));
}
if(dto.getEndCreateTime()!=null) {
list.add(criteriaBuilder.lessThanOrEqualTo(root.get("CreateTime").as(Date.class), dto.getEndCreateTime()));
}
if(dto.getIsLockOut()>0) {
list.add(criteriaBuilder.equal(root.get("IsLockout").as(Integer.class), dto.getIsLockOut()));
}
Predicate[] pre = new Predicate[list.size()];
return query.where(list.toArray(pre)).getRestriction();
}
};
}
@Override
public void lockUser(int id) {
usersdao.lockUser(id);
}
@Override
public void lockUsers(int id) {
usersdao.lockUsers(id);
}
@Override
public void addUser(Users users) {
usersdao.save(users);
}
@Override
public void delUser(int id) {
usersdao.deleteById(id);
}
}
controller:
package com.sxd.crm.controller;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.sxd.crm.dao.IUsersDao;
import com.sxd.crm.dto.UsersDto;
import com.sxd.crm.model.Users;
import com.sxd.crm.service.IUsersService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Api(tags = "用户管理模块")
@RestController
@RequestMapping("/users")
public class UsersController {
@Resource
private IUsersService usersservice;
@Resource
private IUsersDao usersdao;
@ApiOperation(value = "用户查询",notes = "用户条件查询")
@PostMapping("/findByCondition")
public Map<String, Object> findByCondition(UsersDto dto){
return usersservice.findByCondition(dto);
}
@ApiOperation(value = "锁定用户",notes = "锁定用户")
@PostMapping("/lockUser")
public void lockUser(int id) {
usersservice.lockUser(id);
}
@ApiOperation(value = "解锁用户",notes = "解锁用户")
@PostMapping("/lockUsers")
public void lockUsers(int id) {
usersservice.lockUsers(id);
}
@ApiOperation(value = "注册账号",notes = "注册账号")
@PostMapping(value = "/addUser",produces = "application/json;charset=UTF-8")
public void addUser(Users users) {
usersservice.addUser(users);
}
@ApiOperation(value = "删除账号",notes = "删除账号")
@DeleteMapping("/delUser")
public void delUser(int id) {
usersservice.delUser(id);
}
}