package com.moral.service.impl; import static org.apache.commons.lang3.time.DateUtils.truncate; import java.text.ParseException; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; import java.util.UUID; import javax.annotation.Resource; import org.apache.commons.lang3.time.DateUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import com.moral.common.bean.Constants; import com.moral.common.exception.BusinessException; import com.moral.common.util.ValidateUtil; import com.moral.entity.MachineActivate; import com.moral.mapper.MachineActivateMapper; import com.moral.service.MachineActivateService; import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example.Criteria; @Service public class MachineActivateServiceImpl implements MachineActivateService { @Resource private MachineActivateMapper machineActivateMapper; @Override public Integer checkActivate(String macCpuCode) { ValidateUtil.notEmpty(macCpuCode, "param.is.null"); MachineActivate machineActivate = new MachineActivate(); machineActivate.setMacCpuCode(macCpuCode); return machineActivateMapper.selectCount(machineActivate); } @Override @Transactional public Integer activateMachine(Map parameters) { ValidateUtil.notNull(parameters.get("macCpuCode"), "param.is.null"); ValidateUtil.notNull(parameters.get("activationCode"), "param.is.null"); Example example = new Example(MachineActivate.class); Criteria criteria = example.createCriteria(); criteria.andEqualTo("activationCode", parameters.get("activationCode")); criteria.andEqualTo("isUsed",Constants.IS_USED_FALSE); criteria.andGreaterThanOrEqualTo("expireDate", truncate(new Date(), Calendar.DATE)); List machineActivates = machineActivateMapper.selectByExample(example); if (ObjectUtils.isEmpty(machineActivates)) { throw new BusinessException("您的激活码无效,请联系管理员"); } MachineActivate machineActivate = machineActivates.get(0); machineActivate.setIsUsed(Constants.IS_DELETE_TRUE); machineActivate.setMacCpuCode((String) parameters.get("macCpuCode")); return machineActivateMapper.updateByPrimaryKeySelective(machineActivate); } @Override @Transactional public Integer createMachineActivate(Integer organizationId,String expireDate) { ValidateUtil.notNull(organizationId, "param.is.null"); ValidateUtil.notNull(expireDate, "param.is.null"); MachineActivate machineActivate = new MachineActivate(); String activationCode = ""; Integer count = 0; do { activationCode = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 16).toUpperCase(); machineActivate.setActivationCode(activationCode); count = machineActivateMapper.selectCount(machineActivate); } while (count > 1); machineActivate.setCreateTime(new Date()); machineActivate.setIsUsed(Constants.IS_USED_FALSE); machineActivate.setOrganizationId(organizationId); try { machineActivate.setExpireDate(DateUtils.parseDate(expireDate, "yyyy-MM-dd")); } catch (ParseException e) { e.printStackTrace(); throw new BusinessException("expireDate格式输入错误!"); } return machineActivateMapper.insertSelective(machineActivate); } }