package com.goafanti.customer.service.impl; import com.goafanti.common.dao.UserArchivesMapper; import com.goafanti.common.dao.UserLimitCheckMapper; import com.goafanti.common.dao.UserMapper; import com.goafanti.common.dao.UserMidMapper; import com.goafanti.common.model.*; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.customer.bo.InputSelectUserArchives; import com.goafanti.customer.bo.UserArchivesDetails; import com.goafanti.customer.service.CustomerService; import com.goafanti.customer.service.UserArchivesService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 客户档案表(UserArchives)表服务实现类 * * @author makejava * @since 2024-07-12 11:52:01 */ @Service("userArchivesService") public class UserArchivesServiceImpl extends BaseMybatisDao< UserArchivesMapper> implements UserArchivesService { @Resource private UserArchivesMapper userArchivesMapper; @Resource private CustomerService customerService; @Resource private UserMapper userMapper; @Resource private UserMidMapper userMidMapper; @Resource private UserLimitCheckMapper userLimitCheckMapper; @Override public Pagination list(UserArchives userArchives, Integer pageNo, Integer pageSize) { Map params = new HashMap<>(); params.put("in",userArchives); return (Pagination) findPage("findUserArchivesList", "findUserArchivesCount", params, pageNo, pageSize); } @Override public UserArchives queryByUid(String id) { UserArchives userArchives =userArchivesMapper.queryByUid(id); if (userArchives==null)userArchives =new UserArchives(); return userArchives; } @Override public Object queryByUidAll(String id) { UserArchivesDetails user = customerService.selectUserByUid(id); User u = userMapper.selectByPrimaryKey(id); if (u.getAid().equals(TokenManager.getAdminId())){ user.setMyUser(1); }else { user.setMyUser(0); } user.setSignBills(u.getSignBills()); UserArchives userArchives = queryByUid(id); List customerContacts = userMapper.findCustomerContacts(id, TokenManager.getAdminId()); if (!customerContacts.isEmpty()){ List collect = customerContacts.stream() .filter(e -> e.getMajor() == 1).collect(Collectors.toList()); for (OrganizationContactBook ob : collect) { ob.setName("***"); ob.setMobile("***"); } user.setContactList(collect); } BeanUtils.copyProperties(userArchives, user); return user; } @Override public boolean checkPermission(String id) { User user = userMapper.selectByPrimaryKey(id); if (user.getAid().equals(TokenManager.getAdminId())){ return false; } UserLimitCheck userLimitCheck = userLimitCheckMapper.selectByUid(id); //如果没有和大于时间则不能查看 if (userLimitCheck==null||System.currentTimeMillis()>userLimitCheck.getCheckTime().getTime()) { return true; } return false; } /** * 通过ID查询单条数据 * * @param id 主键 * @return 实例对象 */ @Override public UserArchives queryById(Integer id) { return this.userArchivesMapper.queryById(id); } /** * 新增数据 * * @param userArchives 实例对象 * @return 实例对象 */ @Override public UserArchives insert(UserArchives userArchives) { UserArchives query = userArchivesMapper.queryByUid(userArchives.getUid()); if (query != null){ userArchives.setId(query.getId()); return update(userArchives,null); }else { if (userArchives.getAppearancePatentCount()!=null|| userArchives.getInventionPatentCount()!=null|| userArchives.getUtilityModelCount() !=null|| userArchives.getSoftwareWorksCount()!=null|| userArchives.getOtherCount()!=null ){ int count = getCount(userArchives); userArchives.setPatentCount(count); } if(userArchives.getPatentCount()==null)userArchives.setPatentCount(0); this.userArchivesMapper.insert(userArchives); } return userArchives; } /** * 修改数据 * * @param userArchives 实例对象 * @return 实例对象 */ @Override public UserArchives update(UserArchives userArchives,Integer channelType) { if (userArchives.getAppearancePatentCount()!=null|| userArchives.getInventionPatentCount()!=null|| userArchives.getUtilityModelCount() !=null|| userArchives.getSoftwareWorksCount()!=null|| userArchives.getOtherCount()!=null ){ int count = getCount(userArchives); userArchives.setPatentCount(count); } if (channelType!=null){ String uid=null; if (userArchives.getUid()==null){ UserArchives useData = this.queryById(userArchives.getId()); uid=useData.getUid(); }else { uid=userArchives.getUid(); } userMidMapper.updateByUid(new UserMid(uid,channelType)); } if(userArchives.getId()==null){ return insert(userArchives); }else { this.userArchivesMapper.update(userArchives); return this.queryById(userArchives.getId()); } } /** * 计算专利总数,必须5个都传,不然会导致计算漏掉 * @param userArchives 用户档案参数 * @return count */ private int getCount(UserArchives userArchives) { int count = 0; if (userArchives.getAppearancePatentCount()!=null){ count+= userArchives.getAppearancePatentCount(); } if (userArchives.getInventionPatentCount()!=null){ count+= userArchives.getInventionPatentCount(); } if (userArchives.getUtilityModelCount() !=null){ count+= userArchives.getUtilityModelCount(); } if (userArchives.getSoftwareWorksCount() !=null){ count+= userArchives.getSoftwareWorksCount(); } if (userArchives.getOtherCount()!=null){ count+= userArchives.getOtherCount(); } return count; } /** * 通过主键删除数据 * * @param id 主键 * @return 是否成功 */ @Override public boolean deleteById(Integer id) { return this.userArchivesMapper.deleteById(id) > 0; } @Override public Object selectUserArchives(InputSelectUserArchives in) { Map params = new HashMap<>(); if (in.getNewChannel() != null)params.put("newChannel", in.getNewChannel()); if (in.getShareType() != null)params.put("shareType", in.getShareType()); if (in.getChannelType() != null){ String[] split = in.getChannelType().split(","); params.put("channelType", split); } if (in.getName() != null)params.put("name", in.getName()); if (in.getAid() != null)params.put("aid", in.getAid()); if (in.getBusinessScope() != null)params.put("businessScope", in.getBusinessScope()); if (in.getIndustry() != null){ String[] split = in.getIndustry().split(","); params.put("industry", split); } return findPage("selectUserArchivesList", "selectUserArchivesCount", params, in.getPageNo(), in.getPageSize()); } }