package com.moral.service.impl; import static com.moral.common.bean.Constants.IS_DELETE_FALSE; import static com.moral.common.bean.Constants.IS_DELETE_TRUE; import static com.moral.common.util.Crypto.md5; import static com.moral.common.util.ResourceUtil.getValue; import static org.apache.commons.lang3.StringUtils.isNumeric; import static org.springframework.util.ObjectUtils.isEmpty; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import com.github.pagehelper.PageHelper; import com.moral.common.bean.Constants; import com.moral.common.bean.PageBean; import com.moral.common.exception.BusinessException; import com.moral.common.util.Crypto; import com.moral.common.util.ResourceUtil; import com.moral.entity.Account; import com.moral.entity.Organization; import com.moral.mapper.AccountMapper; import com.moral.mapper.OrganizationMapper; import com.moral.service.AccountService; import com.moral.service.OrganizationService; import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example.Criteria; @Service public class AccountServiceImpl implements AccountService { @Resource private AccountMapper accountMapper; @Resource private OrganizationService organizationService; @Resource private OrganizationMapper organizationMapper; @Override public Map screenLogin(Map parameters) { Map result = new HashMap(); Account account = new Account(); account.setAccountName((String) parameters.get("account")); account.setPassword(md5((String) parameters.get("password"))); account = accountMapper.selectOne(account); if (isEmpty(account)) { result.put("msg", "用户名及密码输入错误!"); } else { if (IS_DELETE_FALSE.equals(account.getIsDelete())) { result.put("msg", "登录成功!"); result.put("accountId", account.getId()); result.put("orgId", account.getOrganizationId()); } else { result.put("msg","您的账号已禁用,请联系管理员!"); } } return result; } @Override public Account getAccountByAccountName(String accountName) { Account account = new Account(); account.setAccountName(accountName); return accountMapper.selectOne(account); } @Override public void setOrgIdsByAccount(Map parameters) { String accountId = (String) parameters.get("accountId"); accountId = accountId.replaceFirst("-", ""); if (!isNumeric((String) parameters.get("accountId"))) { throw new BusinessException("accountId 参数不合法!"); } Account account = accountMapper.selectByPrimaryKey((Integer.valueOf(accountId))); if (isEmpty(account) || IS_DELETE_TRUE.equals(account.getIsDelete())) { throw new BusinessException(accountId + ":该账号不存在!"); } Integer orgId = account.getOrganizationId(); // 不是摩瑞尔账号的需要根据组织来获取数据权限 if (!(-1 == orgId || getValue("orgId").equals(orgId+""))) { Set orgIds = organizationService.getChildOrganizationIds(orgId); parameters.put("orgIds", orgIds); } } @Override public PageBean getAccountListByPage(Map parameters) { Example example = new Example(Account.class); Criteria criteria = example.createCriteria(); if (parameters.containsKey("accountName")) { criteria.andLike("accountName", "%" + (String) parameters.get("accountName") + "%"); } if (parameters.containsKey("mobile")) { criteria.andLike("mobile", "%" + (String) parameters.get("mobile") + "%"); } if (parameters.containsKey("isDelete")) { criteria.andEqualTo("isDelete", parameters.get("isDelete")); } if (parameters.containsKey("sorter")) { example.setOrderByClause((String) parameters.get("sorter")); } PageHelper.startPage(Integer.valueOf((String) parameters.get("pageIndex")), Integer.valueOf((String) parameters.get("pageSize"))); List accounts = accountMapper.selectByExample(example); for (Account account : accounts) { if (!ObjectUtils.isEmpty(account.getOrganizationId())) { Organization organization = organizationMapper.selectByPrimaryKey(account.getOrganizationId()); account.setOrganization(organization); } } return new PageBean(accounts); } @Override @Transactional public Integer saveOrUpdateAccount(Account account) { if (ObjectUtils.isEmpty(account.getId())) { account.setIsDelete(Constants.IS_DELETE_FALSE); account.setCreateTime(new Date()); account.setPassword(Crypto.md5(ResourceUtil.getValue("password"))); return accountMapper.insertSelective(account); } else { return accountMapper.updateByPrimaryKeySelective(account); } } @Override @Transactional public Integer deleteAccountsByLogic(List ids) { Account account = new Account(); account.setIsDelete(Constants.IS_DELETE_TRUE); Example example = new Example(Account.class); example.or().andIn("id", ids); return accountMapper.updateByExampleSelective(account, example); } @Override public Integer getAccountCountByAccountName(String accountName) { Account account = new Account(); account.setAccountName(accountName); return accountMapper.selectCount(account); } }