All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yuweix.kuafu.permission.service.SysAdminServiceImpl Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
package com.yuweix.kuafu.permission.service;


import com.yuweix.kuafu.core.ActionUtil;
import com.yuweix.kuafu.core.DateUtil;
import com.yuweix.kuafu.core.Response;
import com.yuweix.kuafu.dao.mybatis.order.OrderBy;
import com.yuweix.kuafu.dao.mybatis.where.Criteria;
import com.yuweix.kuafu.dao.mybatis.where.Operator;
import com.yuweix.kuafu.permission.dao.SysAdminDao;
import com.yuweix.kuafu.permission.dao.SysAdminRoleRelDao;
import com.yuweix.kuafu.permission.dto.AdminDto;
import com.yuweix.kuafu.permission.enums.EnumGender;
import com.yuweix.kuafu.permission.model.SysAdmin;
import com.yuweix.kuafu.sequence.base.Sequence;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;


/**
 * @author yuwei
 */
@Service("sysAdminService")
public class SysAdminServiceImpl implements SysAdminService {
	@Resource
	private Sequence seqSysAdmin;
	
	@Resource
	private SysAdminDao sysAdminDao;
	@Resource
	private SysAdminRoleRelDao sysAdminRoleRelDao;


	@Override
	public long createAccount(String accountNo, String password, String realName, Byte gender, String creator) {
		SysAdmin admin = sysAdminDao.findAdminByAccountNo(accountNo);
		if (admin != null) {
			throw new RuntimeException("账号[accountNo=" + accountNo + "]已存在");
		}
		admin = new SysAdmin();
		admin.setId(seqSysAdmin.next());
		admin.setAccountNo(accountNo);
		admin.setPassword(password);
		admin.setRealName(realName);
		admin.setGender(gender);
		admin.setCreator(creator);
		admin.setCreateTime(new Date());
		sysAdminDao.insert(admin);
		return admin.getId();
	}

	@Override
	public void updateAccount(long id, String realName, Byte gender, String modifier) {
		SysAdmin admin = sysAdminDao.get(id);
		if (admin == null) {
			throw new RuntimeException("账号[id=" + id + "]不存在");
		}
		sysAdminDao.deleteAdminFromCache(admin.getAccountNo());

		admin.setRealName(realName);
		admin.setGender(gender);
		admin.setModifier(modifier);
		admin.setModifyTime(new Date());
		sysAdminDao.updateByPrimaryKey(admin);
	}
	
	@Override
	public AdminDto findAdminById(long id) {
		SysAdmin admin = sysAdminDao.get(id);
		return toAdminDto(admin);
	}
	private AdminDto toAdminDto(SysAdmin admin) {
		if (admin == null) {
			return null;
		}
		AdminDto dto = new AdminDto();
		dto.setId(admin.getId());
		dto.setAccountNo(admin.getAccountNo());
		dto.setPassword(admin.getPassword());
		dto.setRealName(admin.getRealName());
		dto.setGender(admin.getGender());
		dto.setGenderName(admin.getGender() == null ? "" : EnumGender.getNameByCode(admin.getGender()));
		dto.setAvatar(admin.getAvatar());
		dto.setLastLoginTime(admin.getLastLoginTime() == null ? "" : DateUtil.formatDate(admin.getLastLoginTime(), "yyyy-MM-dd HH:mm:ss"));
		dto.setLastLoginIp(admin.getLastLoginIp());
		dto.setCreator(admin.getCreator());
		dto.setCreateTime(admin.getCreateTime() == null ? "" : DateUtil.formatDate(admin.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
		dto.setModifier(admin.getModifier());
		dto.setModifyTime(admin.getModifyTime() == null ? "" : DateUtil.formatDate(admin.getModifyTime(), "yyyy-MM-dd HH:mm:ss"));
		return dto;
	}
	
	@Override
	public Response login(String accountNo, String password) {
		SysAdmin admin = sysAdminDao.findAdminByAccountNo(accountNo);
		if (admin == null) {
			return new Response<>(false, "账号不存在[" + accountNo + "]");
		}
		if (!password.equals(admin.getPassword())) {
			return new Response<>(false, "密码错误");
		}
		admin.setLastLoginTime(new Date());
		admin.setLastLoginIp(ActionUtil.getRequestIP());
		sysAdminDao.updateByPrimaryKey(admin);

		return new Response<>(true, "登录成功", toAdminDto(admin));
	}

	@Override
	public void changePassword(long id, String password, String modifier) {
		SysAdmin admin = sysAdminDao.get(id);
		if (admin == null) {
			throw new RuntimeException("账号[id=" + id + "]不存在");
		}
		admin.setPassword(password);
		admin.setModifier(modifier);
		admin.setModifyTime(new Date());
		sysAdminDao.updateByPrimaryKey(admin);
	}

	@Override
	public void changePassword(long id, String oldPassword, String password, String modifier) {
		SysAdmin admin = sysAdminDao.get(id);
		if (admin == null) {
			throw new RuntimeException("账号[id=" + id + "]不存在");
		}
		if (!oldPassword.equals(admin.getPassword())) {
			throw new RuntimeException("原密码错误");
		}
		admin.setPassword(password);
		admin.setModifier(modifier);
		admin.setModifyTime(new Date());
		sysAdminDao.updateByPrimaryKey(admin);
	}

	@Override
	public void changeAvatar(long id, String avatar, String modifier) {
		SysAdmin admin = sysAdminDao.get(id);
		if (admin == null) {
			throw new RuntimeException("账号[id=" + id + "]不存在");
		}
		admin.setAvatar(avatar);
		admin.setModifier(modifier);
		admin.setModifyTime(new Date());
		sysAdminDao.updateByPrimaryKey(admin);
	}

	@Override
	public void deleteAccount(long id) {
		int cnt = sysAdminRoleRelDao.findCount(Criteria.of("admin_id", Operator.eq, id));
		if (cnt > 0) {
			throw new RuntimeException("已绑定角色,不能删除");
		}
		sysAdminDao.deleteByKey(id);
	}

	@Override
	public int queryAdminCount(String keywords) {
		Criteria criteria = null;
		if (keywords != null && !"".equals(keywords.trim())) {
			criteria = Criteria.of("account_no", Operator.like, "%" + keywords.trim() + "%");
			criteria.or("real_name", Operator.like, "%" + keywords.trim() + "%");
		}
		return sysAdminDao.findCount(criteria);
	}

	@Override
	public List queryAdminList(String keywords, int pageNo, int pageSize) {
		Criteria criteria = null;
		if (keywords != null && !"".equals(keywords.trim())) {
			criteria = Criteria.of("account_no", Operator.like, "%" + keywords.trim() + "%");
			criteria.or("real_name", Operator.like, "%" + keywords.trim() + "%");
		}
		List list = sysAdminDao.findPageList(criteria, pageNo, pageSize, OrderBy.create("id"));
		return list == null || list.size() <= 0
				? new ArrayList<>()
				: list.stream().map(admin -> {
					AdminDto dto = this.toAdminDto(admin);
					dto.setPassword(null);
					return dto;
				}).collect(Collectors.toList());
	}

	@Override
	public boolean hasPermission(long adminId, long permissionId) {
		return sysAdminDao.hasPermission(adminId, permissionId);
	}

	@Override
	public List queryPermissionIdListByAdminId(long adminId) {
		return sysAdminDao.queryPermissionIdListByAdminId(adminId);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy