| package doumeemes.service.business.impl; | 
|   | 
| import doumeemes.core.exception.BusinessException; | 
| import doumeemes.core.model.LoginUserInfo; | 
| import doumeemes.core.model.PageData; | 
| import doumeemes.core.model.PageWrap; | 
| import doumeemes.core.utils.Constants; | 
| import doumeemes.core.utils.Utils; | 
| import doumeemes.dao.business.CompanyMapper; | 
| import doumeemes.dao.business.CompanyOpenMapper; | 
| import doumeemes.dao.business.model.Company; | 
| import doumeemes.dao.business.model.CompanyLog; | 
| import doumeemes.dao.business.model.CompanyOpen; | 
| import doumeemes.dao.ext.vo.CompanyExtListVO; | 
| import doumeemes.service.business.CompanyLogService; | 
| import doumeemes.service.business.CompanyOpenService; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
| import com.baomidou.mybatisplus.core.metadata.IPage; | 
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
| import doumeemes.service.ext.DepartmentExtService; | 
| import org.apache.shiro.SecurityUtils; | 
| import org.springframework.beans.BeanUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.context.annotation.Lazy; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import java.text.SimpleDateFormat; | 
| import java.util.Date; | 
| import java.util.List; | 
|   | 
| /** | 
|  * 系统-企业账户开通历史记录表Service实现 | 
|  * @author 江蹄蹄 | 
|  * @date 2022/04/20 09:33 | 
|  */ | 
| @Service | 
| public class CompanyOpenServiceImpl implements CompanyOpenService { | 
|   | 
|     @Autowired | 
|     private CompanyOpenMapper companyOpenMapper; | 
|   | 
|     @Autowired | 
|     private CompanyMapper companyMapper; | 
|   | 
|     @Autowired | 
|     CompanyLogService companyLogService; | 
|   | 
|     @Autowired | 
|     @Lazy | 
|     private DepartmentExtService departmentExtService; | 
|   | 
|     @Override | 
|     public Integer create(CompanyOpen companyOpen) { | 
|         companyOpenMapper.insert(companyOpen); | 
|         return companyOpen.getId(); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteById(Integer id) { | 
|         companyOpenMapper.deleteById(id); | 
|     } | 
|   | 
|     @Override | 
|     public void delete(CompanyOpen companyOpen) { | 
|         UpdateWrapper<CompanyOpen> deleteWrapper = new UpdateWrapper<>(companyOpen); | 
|         companyOpenMapper.delete(deleteWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         companyOpenMapper.deleteBatchIds(ids); | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(CompanyOpen companyOpen) { | 
|         companyOpenMapper.updateById(companyOpen); | 
|     } | 
|   | 
|     @Transactional(rollbackFor = {Exception.class, BusinessException.class}) | 
|     @Override | 
|     public void updateValidDate(CompanyOpen companyOpen) { | 
|         SimpleDateFormat format=new SimpleDateFormat("YYYY-MM-dd"); | 
|        Company cyResult= companyMapper.selectById(companyOpen.getCompanyId()); | 
|         LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         UpdateWrapper<CompanyOpen> wrapper = new UpdateWrapper<>(); | 
|         wrapper.lambda().eq(CompanyOpen::getCompanyId,companyOpen.getCompanyId()) | 
|                         .set(CompanyOpen::getUserNum,companyOpen.getUserNum()) | 
|                         .set(CompanyOpen::getValidDate,companyOpen.getValidDate()) | 
|                         .set(CompanyOpen::getOepnType,companyOpen.getOepnType()); | 
|         companyOpenMapper.update(null,wrapper); | 
|         Company company = new Company(); | 
|         company.setId(companyOpen.getCompanyId()); | 
|         company.setOepnValidDate(companyOpen.getValidDate()); | 
|         company.setOepnType(companyOpen.getOepnType()); | 
|         company.setOpenUserNum(companyOpen.getUserNum()); | 
|         companyMapper.updateById(company); | 
|         Company company1 = companyMapper.selectById(companyOpen.getCompanyId()); | 
|   | 
|         CompanyLog companyLog = new CompanyLog(); | 
|         companyLog.setDeleted((byte) Constants.ZERO); | 
|         companyLog.setUpdateUser(principal.getId()); | 
|         companyLog.setCreateUser(principal.getId()); | 
|         companyLog.setCreateTime(new Date()); | 
|         companyLog.setUpdateTime(new Date()); | 
|         companyLog.setRemark("有效期从"+format.format(cyResult.getOepnValidDate())+"日调整至"+format.format(companyOpen.getValidDate())); | 
|         companyLog.setCompanyId(company.getId()); | 
|         companyLog.setUpdateType(Constants.CompanyUpdateType.UPDATE_VAIL_DATE.getKey()); | 
|         companyLog.setDetail("有效期从"+format.format(cyResult.getOepnValidDate())+"日调整至"+format.format(companyOpen.getValidDate())+"\n"+ | 
|                 "用户开通人数从"+format.format(cyResult.getOpenUserNum())+"调整至"+format.format(companyOpen.getUserNum())); | 
|         companyLogService.create(companyLog); | 
|   | 
|         initRedisCache(company1); | 
|     } | 
|   | 
|     private void initRedisCache(Company com) { | 
|         CompanyExtListVO c = new CompanyExtListVO(); | 
|         BeanUtils.copyProperties(com,c); | 
|         departmentExtService.loadComDepart(c); | 
|         departmentExtService.initCompnayCodesByCom(com); | 
|     } | 
|   | 
|     @Override | 
|     public void updateByIdInBatch(List<CompanyOpen> companyOpens) { | 
|         if (CollectionUtils.isEmpty(companyOpens)) { | 
|             return; | 
|         } | 
|         for (CompanyOpen companyOpen: companyOpens) { | 
|             this.updateById(companyOpen); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public CompanyOpen findById(Integer id) { | 
|         return companyOpenMapper.selectById(id); | 
|     } | 
|   | 
|     @Override | 
|     public CompanyOpen findOne(CompanyOpen companyOpen) { | 
|         QueryWrapper<CompanyOpen> wrapper = new QueryWrapper<>(companyOpen); | 
|         return companyOpenMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<CompanyOpen> findList(CompanyOpen companyOpen) { | 
|         QueryWrapper<CompanyOpen> wrapper = new QueryWrapper<>(companyOpen); | 
|         return companyOpenMapper.selectList(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public PageData<CompanyOpen> findPage(PageWrap<CompanyOpen> pageWrap) { | 
|         IPage<CompanyOpen> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         QueryWrapper<CompanyOpen> queryWrapper = new QueryWrapper<>(); | 
|         Utils.MP.blankToNull(pageWrap.getModel()); | 
|         if (pageWrap.getModel().getId() != null) { | 
|             queryWrapper.lambda().eq(CompanyOpen::getId, pageWrap.getModel().getId()); | 
|         } | 
|         if (pageWrap.getModel().getDeleted() != null) { | 
|             queryWrapper.lambda().eq(CompanyOpen::getDeleted, pageWrap.getModel().getDeleted()); | 
|         } | 
|         if (pageWrap.getModel().getCreateUser() != null) { | 
|             queryWrapper.lambda().eq(CompanyOpen::getCreateUser, pageWrap.getModel().getCreateUser()); | 
|         } | 
|         if (pageWrap.getModel().getCreateTime() != null) { | 
|             queryWrapper.lambda().ge(CompanyOpen::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); | 
|             queryWrapper.lambda().le(CompanyOpen::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); | 
|         } | 
|         if (pageWrap.getModel().getUpdateUser() != null) { | 
|             queryWrapper.lambda().eq(CompanyOpen::getUpdateUser, pageWrap.getModel().getUpdateUser()); | 
|         } | 
|         if (pageWrap.getModel().getUpdateTime() != null) { | 
|             queryWrapper.lambda().ge(CompanyOpen::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())); | 
|             queryWrapper.lambda().le(CompanyOpen::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())); | 
|         } | 
|         if (pageWrap.getModel().getRemark() != null) { | 
|             queryWrapper.lambda().eq(CompanyOpen::getRemark, pageWrap.getModel().getRemark()); | 
|         } | 
|         if (pageWrap.getModel().getCompanyId() != null) { | 
|             queryWrapper.lambda().eq(CompanyOpen::getCompanyId, pageWrap.getModel().getCompanyId()); | 
|         } | 
|         if (pageWrap.getModel().getUserNum() != null) { | 
|             queryWrapper.lambda().eq(CompanyOpen::getUserNum, pageWrap.getModel().getUserNum()); | 
|         } | 
|         if (pageWrap.getModel().getModules() != null) { | 
|             queryWrapper.lambda().eq(CompanyOpen::getModules, pageWrap.getModel().getModules()); | 
|         } | 
|         if (pageWrap.getModel().getValidDate() != null) { | 
|             queryWrapper.lambda().ge(CompanyOpen::getValidDate, Utils.Date.getStart(pageWrap.getModel().getValidDate())); | 
|             queryWrapper.lambda().le(CompanyOpen::getValidDate, Utils.Date.getEnd(pageWrap.getModel().getValidDate())); | 
|         } | 
|         if (pageWrap.getModel().getOepnType() != null) { | 
|             queryWrapper.lambda().eq(CompanyOpen::getOepnType, pageWrap.getModel().getOepnType()); | 
|         } | 
|         for(PageWrap.SortData sortData: pageWrap.getSorts()) { | 
|             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { | 
|                 queryWrapper.orderByDesc(sortData.getProperty()); | 
|             } else { | 
|                 queryWrapper.orderByAsc(sortData.getProperty()); | 
|             } | 
|         } | 
|         return PageData.from(companyOpenMapper.selectPage(page, queryWrapper)); | 
|     } | 
|   | 
|     @Override | 
|     public long count(CompanyOpen companyOpen) { | 
|         QueryWrapper<CompanyOpen> wrapper = new QueryWrapper<>(companyOpen); | 
|         return companyOpenMapper.selectCount(wrapper); | 
|     } | 
| } |