package com.goafanti.customer.service.impl; import java.lang.reflect.InvocationTargetException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; import javax.annotation.Resource; import com.goafanti.admin.bo.AdminListBo; import com.goafanti.common.dao.*; import com.goafanti.common.model.*; import com.goafanti.customer.bo.*; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.PropertyUtils; import org.apache.ibatis.builder.BuilderException; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.goafanti.common.bo.Error; import com.goafanti.common.bo.userDaysBo; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.constant.ErrorConstants; import com.goafanti.common.enums.ChannelStatus; import com.goafanti.common.enums.CustomerStatusFiled; import com.goafanti.common.enums.DeleteStatus; import com.goafanti.common.enums.IdentityProcess; import com.goafanti.common.enums.UserLevel; import com.goafanti.common.enums.UserLockReleaseStatus; import com.goafanti.common.enums.UserType; import com.goafanti.common.error.BusinessException; import com.goafanti.common.utils.BeanUtilsExt; import com.goafanti.common.utils.DateUtils; import com.goafanti.common.utils.ExportExcelUtil; import com.goafanti.common.utils.PasswordUtil; import com.goafanti.common.utils.StringUtils; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.customer.service.CustomerService; import com.goafanti.user.bo.OutUserChannel; @Service public class CustomerServiceImpl extends BaseMybatisDao implements CustomerService { @Autowired private UserMapper userMapper; @Autowired private UserIdentityMapper userIdentityMapper; @Autowired private OrganizationIdentityMapper organizationIdentityMapper; @Autowired private OrganizationContactBookMapper organizationContactBookMapper; @Resource(name = "passwordUtil") private PasswordUtil passwordUtil; @Value(value = "${user.receive.max}") private Integer USER_RECEIVE_MAX = null; @Value(value = "${user_remind_days}") private Integer USER_REMIND_DAYS = null; @Resource private UserFollowMapper userFollowMapper; @Resource private UserBusinessMapper userBusinessMapper; @Resource private UserFollowBusinessMapper userFollowBusinessMapper; @Resource private BusinessProjectMapper businessProjectMapper; @Resource private UserLockReleaseMapper userLockReleaseMapper; @Resource private AdminMapper adminMapper; @Resource private OrganizationApplicationInfoMapper organizationApplicationInfoMapper; @Resource private OrganizationAnnualReportMapper organizationAnnualReportMapper; @Resource private OrganizationBusinessScopeMapper organizationBusinessScopeMapper; @Resource private OrganizationSalesTargetMapper organizationSalesTargetMapper; @Resource private UserTransferLogMapper userTransferLogMapper; @Resource private UserChannelMapper userChannelMapper; @Resource private UserNamesMapper userNamesMapper; @Resource private UserMidMapper userMidMapper; @Resource private UserDataLogMapper userDataLogMapper; @Value(value = "${upload.path}") private String uploadPath = null; @SuppressWarnings("unchecked") @Override public Pagination listPrivatePersonalCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_PERSONAL); cli.setAid(TokenManager.getAdminId()); Map params = disposeParams(cli); Pagination list = (Pagination) findPage("selectPrivatePersonalCustomerList", "selectPrivatePersonalCustomerCount", params, pageNo, pageSize); List tmpList = (List) list.getList(); setCustomerList(tmpList, 0, null); list.setList(tmpList); return list; } @SuppressWarnings("unchecked") @Override public Pagination listPublicPersonalCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_PERSONAL); Map params = disposeParams(cli); Pagination list = (Pagination) findPage("selectPublicPersonalCustomerList", "selectPublicPersonalCustomerCount", params, pageNo, pageSize); return list; } @SuppressWarnings("unchecked") @Override public Pagination listAllPersonalCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_PERSONAL); Map params = disposeParams(cli); Pagination list = (Pagination) findPage("selectPersonalCustomerList", "selectPersonalCustomerCount", params, pageNo, pageSize); return list; } @SuppressWarnings("unchecked") @Override public Pagination listAllManagePersonalCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_PERSONAL); cli.setShareType(String.valueOf(AFTConstants.USER_SHARE_PRIVATE)); Map params = disposeParams(cli); Pagination list = (Pagination) findPage("selectManagePersonalCustomerList", "selectManagePersonalCustomerCount", params, pageNo, pageSize); return list; } @SuppressWarnings("unchecked") @Override public Pagination listPrivateOrganizationCustomer(CustomerListIn cli, Integer sort, Integer sortType, Integer type, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_ORGANIZATION); cli.setAid(TokenManager.getAdminId()); // cli.setAid("1"); cli.setShareType(String.valueOf(AFTConstants.USER_SHARE_PRIVATE)); Map params = disposeParams(cli); params.put("sort", sort); params.put("sortType", sortType); List alist = new ArrayList<>(); if (type == 0 || TokenManager.hasRole(AFTConstants.SALESMAN)) { params.put("power", 0); } else if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)) { params.put("power", 1); alist = adminMapper.selectBySuperId(cli.getAid()); } else if (TokenManager.hasRole(AFTConstants.SALESMAN_DIRECTOR)) { params.put("power", 2); alist = adminMapper.selectBySuperId(cli.getAid()); List alist2 = new ArrayList<>(); if (!alist.isEmpty()) { for (String string : alist) { alist2.addAll(adminMapper.selectBySuperId(string)); } alist.addAll(alist2); } } else if (TokenManager.hasRole(AFTConstants.CED)) { params.put("power", 3); } params.put("alist", alist); Pagination list = (Pagination) findPage( "selectPrivateOrganizationCustomerList", "selectPrivateOrganizationCustomerCount", params, pageNo, pageSize); List tmpList = (List) list.getList(); setCustomerList(tmpList, 0, type); list.setList(tmpList); return list; } @SuppressWarnings("unchecked") @Override public Pagination listPublicOrganizationCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_ORGANIZATION); cli.setShareType(String.valueOf(AFTConstants.USER_SHARE_PUBLIC)); Map params = disposeParams(cli); Pagination p = (Pagination) findPage("selectPublicOrganizationCustomerList", "selectPublicOrganizationCustomerCount", params, pageNo, pageSize); return p; } @SuppressWarnings("unchecked") @Override public Pagination listAllOrganizationCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_ORGANIZATION); Map params = disposeParams(cli); if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) { params.put("role", 1); } else { params.put("role", 0); } Pagination p = (Pagination) findPage("selectOrganizationCustomerList", "selectOrganizationCustomerCount", params, pageNo, pageSize); List l = (List) p.getList(); for (CustomerListOut c : l) { if (null != c) { if (null != c.getAid()) c.setAdminName(adminMapper.selectNameByid(c.getAid())); if (null != c.getShareType() && c.getShareType().equals("1")) c.setAdminName("暂无"); if (null != c.getMid()) c.setInformationMaintainer(adminMapper.selectNameByid(c.getMid())); } } return p; } @Override public Pagination listAllManageOrganizationCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_ORGANIZATION); cli.setShareType(String.valueOf(AFTConstants.USER_SHARE_PRIVATE)); cli.setAid(TokenManager.getAdminId()); Map params = disposeParams(cli); @SuppressWarnings("unchecked") Pagination list = (Pagination) findPage( "selectManageOrganizationCustomerList", "selectManageOrganizationCustomerCount", params, pageNo, pageSize); return list; } private Map disposeParams(CustomerListIn cli) { Map params = new HashMap(); if (StringUtils.isNotBlank(cli.getType())) params.put("type", Integer.parseInt(cli.getType())); if (StringUtils.isNotBlank(cli.getShareType())) params.put("shareType", Integer.parseInt(cli.getShareType())); if (StringUtils.isNotBlank(cli.getName())) params.put("name", cli.getName()); if (StringUtils.isNotBlank(cli.getProvince())) params.put("province", Integer.parseInt(cli.getProvince())); if (StringUtils.isNotBlank(cli.getCity())) params.put("city", Integer.parseInt(cli.getCity())); if (StringUtils.isNotBlank(cli.getArea())) params.put("area", Integer.parseInt(cli.getArea())); if (StringUtils.isNotBlank(cli.getStartDate())) params.put("startDate", cli.getStartDate()); if (StringUtils.isNotBlank(cli.getEndDate())) params.put("endDate", cli.getEndDate()); if (StringUtils.isNotBlank(cli.getIndustry())) params.put("industry", Integer.parseInt(cli.getIndustry())); if (StringUtils.isNotBlank(cli.getAid())) params.put("aid", cli.getAid()); if (StringUtils.isNotBlank(cli.getDepartmentId())) params.put("departmentId", cli.getDepartmentId()); if (StringUtils.isNotBlank(cli.getStatus())) params.put("status", Integer.parseInt(cli.getStatus())); if (StringUtils.isNotBlank(cli.getSocietyTag())) params.put("societyTag", cli.getSocietyTag()); if (StringUtils.isNotBlank(cli.getFollow())) params.put("follow", cli.getFollow()); if (StringUtils.isNotBlank(cli.getStartDate())) params.put("startDate", cli.getStartDate() + " 00:00:00"); if (StringUtils.isNotBlank(cli.getEndDate())) params.put("endDate", cli.getEndDate() + " 23:59:59"); if (null != cli.getDataGrade()) params.put("dataGrade", cli.getDataGrade()); if (null != cli.getLevel()) params.put("level", cli.getLevel()); if (null != cli.getSort()) params.put("sort", cli.getSort()); if (null != cli.getChannel()) params.put("channel", cli.getChannel()); if (null != cli.getBusinessScope()) params.put("businessScope", cli.getBusinessScope()); return params; } @Override public List findCustomerByName(String name) { return userMapper.findCustomerByName(name); } @Override public int judgeCustomerByName(String name) { return userMapper.judgeCustomerByName(name); } @Override @Transactional public int addCustomer(String name, String contacts, String contactMobile, Integer type, Integer source, String societyTag, Integer province, Integer city, Integer area) throws BusinessException { User user = new User(); Date now = new Date(); String uid = UUID.randomUUID().toString(); String identifyId = UUID.randomUUID().toString(); user.setId(uid); user.setSource(1);// 客户来源为录入 user.setIdentifyName(name); user.setNickname(name); user.setUsername(name); user.setStatus(AFTConstants.USER_STATUS_NORMAL); user.setShareType(AFTConstants.NO); user.setAid(TokenManager.getAdminId()); // user.setAid("1"); user.setType(type); user.setLvl(UserLevel.CERTIFIED.getCode()); user.setSocietyTag(societyTag); user.setCreateTime(now); user.setTransferTime(now); user.setUpdateTime(now); user.setMobile(contactMobile); user.setPassword(AFTConstants.INITIALPASSWORD); user.setInformationMaintainer(TokenManager.getAdminId()); float f = 0; user.setIntegrity(f); // user.setInformationMaintainer("1"); passwordUtil.encryptPassword(user); if (type == UserType.PERSONAL.getCode()) { if (userMapper.checkUser("", "", contactMobile, type, null, null).size() > 0) throw new BusinessException(new Error(ErrorConstants.CUSTOMER_ALREADY_EXIST, name, "")); UserIdentity ui = new UserIdentity(); ui.setId(identifyId); ui.setUid(uid); ui.setContacts(contacts); ui.setContactMobile(contactMobile); ui.setUsername(name); ui.setProvince(province); ui.setCity(city); ui.setArea(area); ui.setExpert(AFTConstants.NO); ui.setCelebrity(AFTConstants.NO); ui.setInternational(AFTConstants.NO); ui.setAuditStatus(IdentityProcess.SUCCESS.getCode());// 认证个人 userIdentityMapper.insert(ui); } else if (type == UserType.ORGANIZATION.getCode()) { if (userMapper.checkUser("", name, "", type, null, null).size() > 0) throw new BusinessException(new Error(ErrorConstants.CUSTOMER_ALREADY_EXIST, name, "")); // 创建企业认证信息 OrganizationIdentity oi = new OrganizationIdentity(); oi.setUnitName(name); oi.setId(identifyId); oi.setUid(uid); oi.setContacts(contacts); oi.setContactMobile(contactMobile); oi.setLocationProvince(province); oi.setLocationCity(city); oi.setLocationArea(area); oi.setHighTechZone(AFTConstants.NO); oi.setInternational(AFTConstants.NO); oi.setListed(AFTConstants.NO); oi.setAuditStatus(IdentityProcess.SUCCESS.getCode()); // 实名企业 organizationIdentityMapper.insert(oi); } userMapper.insert(user); UserNames un=new UserNames(); un.setUid(user.getId()); un.setName(user.getNickname()); userNamesMapper.insertSelective(un); // 新增企业联系人 OrganizationContactBook cob = new OrganizationContactBook(); cob.setAid(TokenManager.getAdminId()); cob.setAname(adminMapper.selectByPrimaryKey(TokenManager.getAdminId()).getName()); cob.setId(UUID.randomUUID().toString()); cob.setUid(uid); cob.setName(contacts); cob.setMobile(contactMobile); cob.setMajor(AFTConstants.YES); organizationContactBookMapper.insert(cob); // 新增锁定数据 boolean isUs = false; if (uid.contains(",")) { isUs = true; } List uList = new ArrayList<>(); if (isUs) { uList = Arrays.asList(uid.split(",")); } addUserLock(uid, TokenManager.getAdminId(), now, uList); addUserTransferLog(uid, TokenManager.getAdminId(), null,0, null, now, uList); return 1; } @Override public CustomerPersonalDetailBo findPersonalCustomerDetail(String uid) { return userMapper.findPersonalCustomerDetail(uid); } @Override public CustomerOrganizationDetailBo findOrganizationCustomerDetail(String uid) { return userMapper.findOrganizationCustomerDetail(uid); } @Override @Transactional public int updateOrganizationCustomer(CustomerOrganizationDetailBo bo) { OrganizationIdentity oi = new OrganizationIdentity(); User user = new User(); Date date = new Date(); OrganizationApplicationInfo oa = new OrganizationApplicationInfo(); try { BeanUtilsExt.copyProperties(oi, bo); user.setId(bo.getUid()); user.setSocietyTag(bo.getSocietyTag()); user.setCompanyLogoUrl(bo.getCompanyLogoUrl()); user.setIntroduction(bo.getIntroduction()); user.setUpdateTime(date); user.setInformationMaintainer(bo.getInformationMaintainer()); user.setCoreTechnology(bo.getCoreTechnology()); user.setAccomplishSituation(bo.getAccomplishSituation()); user.setIntellectualProperty(bo.getIntellectualProperty()); user.setCreditRating(bo.getCreditRating()); user.setIntegrity(countIntegrity(bo)); if (StringUtils.isNotBlank(bo.getPojectApplicationUrl())) { List l = organizationApplicationInfoMapper.selectByUid(bo.getUid()); if (l.size() > 0) { oa = l.get(0); oa.setPojectApplicationUrl(bo.getPojectApplicationUrl()); organizationApplicationInfoMapper.updateByPrimaryKey(oa); } else { oa.setId(UUID.randomUUID().toString()); oa.setCreateTime(date); oa.setUid(bo.getUid()); oa.setPojectApplicationUrl(bo.getPojectApplicationUrl()); organizationApplicationInfoMapper.insert(oa); } } } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } if (bo.getBusinessScope() != null) { OrganizationIdentity use=organizationIdentityMapper.selectByPrimaryKey(bo.getId()); if (!bo.getBusinessScope().equals(use.getBusinessScope())){ updateBusinessScope(bo.getUid(),bo.getBusinessScope() ,use.getBusinessScope(), date); } } organizationSalesTargetMapper.deleteByUid(bo.getUid()); if (bo.getSalesTarget() != null) { if (bo.getSalesTarget().contains(",")) { String[] ss = bo.getSalesTarget().split(","); List list = new ArrayList<>(); for (int i = 0; i < ss.length; i++) { String string = ss[i]; OrganizationSalesTarget obs = new OrganizationSalesTarget(); obs.setUid(bo.getUid()); obs.setKeyword(string); list.add(obs); } organizationSalesTargetMapper.insertBatch(list); } else { OrganizationSalesTarget obs = new OrganizationSalesTarget(); obs.setUid(bo.getUid()); obs.setKeyword(bo.getSalesTarget()); organizationSalesTargetMapper.insertSelective(obs); } } organizationIdentityMapper.updateByPrimaryKey(oi); userMapper.updateByPrimaryKeySelective(user); return 1; } /** * * @param uid * @param businnessScope * @param useBusinnessScope * @param date */ private void updateBusinessScope( String uid, String businnessScope,String useBusinnessScope, Date date) { if(date==null)date=new Date(); organizationBusinessScopeMapper.deleteByUid(uid); if (businnessScope.contains(",")) { String[] ss = businnessScope.split(","); List list = new ArrayList<>(); for (int i = 0; i < ss.length; i++) { String string = ss[i]; OrganizationBusinessScope obs = new OrganizationBusinessScope(); obs.setUid(uid); obs.setKeyword(string); list.add(obs); } organizationBusinessScopeMapper.insertBatch(list); } else { OrganizationBusinessScope obs = new OrganizationBusinessScope(); obs.setUid(uid); obs.setKeyword(businnessScope); organizationBusinessScopeMapper.insertSelective(obs); } UserMid um=new UserMid(); um.setDateUpdateTime(date); um.setUid(uid); String aid=TokenManager.getAdminId(); um.setUpdateAid(aid); Admin a=adminMapper.selectByPrimaryKey(aid); um.setUpdateName(a.getName()); int i=userMidMapper.updateByUid(um); if (i==0) { um.setAid(aid); userMidMapper.insertSelective(um); } StringBuffer str=new StringBuffer(a.getName()).append("修改了主营产品"); if (useBusinnessScope==null){useBusinnessScope="无";} str.append("[").append(useBusinnessScope).append("=> ").append(businnessScope).append("]"); userDataLogMapper.insertSelective(new UserDataLog(uid,str.toString())); } public Float countIntegrity(CustomerOrganizationDetailBo bo) { // 完整资料总数 int max = 10; int number = 0; if (null != bo.getIndustry()) number += 1; if (bo.getLocationProvince() != null) number += 1; if (StringUtils.isNotBlank(bo.getBusinessScope())) number += 1; if (bo.getRegisteredCapital() != null) number += 1; if (StringUtils.isNotBlank(bo.getCooperationSituation())) number += 1; if (StringUtils.isNotBlank(bo.getQualification())) number += 1; if (organizationAnnualReportMapper.selectOrgAnnualCount(bo.getUid()) > 0) number += 1; if (organizationAnnualReportMapper.selectOrgYearProjectCount(bo.getUid()) > 0) number += 1; if (StringUtils.isNotBlank(bo.getCoreTechnology())) number += 1; if (bo.getCreditRating() != null) number += 1; float f = (float) number / max; return f; } @Override public int updatePersonalCustomer(CustomerPersonalDetailBo bo) { UserIdentity ui = new UserIdentity(); User user = new User(); try { try { PropertyUtils.copyProperties(ui, bo); } catch (NoSuchMethodException e) { e.printStackTrace(); } user.setId(bo.getUid()); user.setSocietyTag(bo.getSocietyTag()); user.setHeadPortraitUrl(bo.getHeadPortraitUrl()); user.setIntroduction(bo.getIntroduction()); user.setUpdateTime(new Date()); if (null == bo.getExpertAudit() && bo.getExpert() == 1) ui.setExpertAudit(2); } catch (InvocationTargetException | IllegalAccessException e) { e.printStackTrace(); } userIdentityMapper.updateByPrimaryKeySelective(ui); userMapper.updateByPrimaryKeySelective(user); return 1; } @SuppressWarnings("unchecked") @Override public Pagination listFollowHistory(Integer pageNo, Integer pageSize, String uid, String businessProjectId, Integer type) { Map params = new HashMap(); if (StringUtils.isNotBlank(uid)) params.put("uid", uid); if (StringUtils.isNotBlank(businessProjectId)) params.put("businessProjectId", businessProjectId); Pagination page = (Pagination) findPage("selectFollowHistoryList", "selectFollowHistoryCount", params, pageNo, pageSize); List list = (List) page.getList(); for (FollowListBo bo : list) { if (bo.getAid().equals(TokenManager.getAdminId())) { bo.setReadOnly(AFTConstants.NO); } else { bo.setContactMobile("***"); bo.setContacts("***"); bo.setReadOnly(AFTConstants.YES); } } page.setList(list); return page; } /** * 推动指导已读 * * @param uid */ @Override public int pushGuidance(String uid) { User u = userMapper.findUserAccountDetail(uid); if (u != null && u.getGuidance() != 0) { return userMapper.pushUserGuidance(uid, 2); } return 0; } @Override public User findUserAccountDetail(String uid) { return userMapper.findUserAccountDetail(uid); } @Override public int updateUserAccount(User user) { return userMapper.updateByPrimaryKeySelective(user); } @Override public List findCustomerContacts(String uid) { List list = userMapper.findCustomerContacts(uid, TokenManager.getAdminId()); return list; } @Override @Transactional public int addFollow(FollowBusinessBo fbb,String ufid) throws BusinessException { // 更新跟进记录表 SimpleDateFormat format = new SimpleDateFormat(AFTConstants.YYYYMMDDHHMMSS); UserFollow userFollow = new UserFollow(); String followId = ufid==null?UUID.randomUUID().toString():ufid; userFollow.setId(followId); String aid=TokenManager.getAdminId(); userFollow.setAid(aid); AdminListBo a=adminMapper.getDeptNameByAid(aid); userFollow.setFollowName(a.getName()); userFollow.setFollowDep(a.getDepartmentName()); userFollow.setContactType(Integer.parseInt(fbb.getContactType())); userFollow.setEffective(DeleteStatus.UNDELETE.getCode()); try { userFollow.setCreateTime(format.parse(fbb.getFollowTime())); } catch (ParseException e) { e.printStackTrace(); } userFollow.setOcbId(fbb.getOcbId()); userFollow.setResult(fbb.getResult()); userFollow.setUid(fbb.getUid()); int followCount = userBusinessMapper.selectFollowCountByUAid(fbb.getUid(), null) + 1; userFollow.setFollowCount(followCount); userFollowMapper.insert(userFollow); // 判断是跟进还是签单 int x = 0; // 检查客户锁定情况 if (fbb.getUserBusinessList()!=null&&fbb.getUserBusinessList().size() > 0) { boolean isUserOwner = false; List userLockedList = userMapper.selectLockedProject(fbb.getUid(), TokenManager.getAdminId(), null, 0, UserLockReleaseStatus.LOCKED.getCode()); if (userLockedList.size() > 0) { isUserOwner = true; } boolean isBusinessOwner = false; List businessLockedList = null; String businessName = ""; String ufbId = ""; UserBusiness userBusiness = null; UserFollowBusiness userFollowBusiness = null; for (BusinessListBo ub : fbb.getUserBusinessList()) { userBusiness = new UserBusiness(); userFollowBusiness = new UserFollowBusiness(); ufbId = UUID.randomUUID().toString(); businessName = businessProjectMapper.selectByPrimaryKey(ub.getBusinessProjectId()).getBname(); UserBusiness us = userBusinessMapper.selectByPrimaryKey(ub.getBusinessId()); if (StringUtils.isNotBlank(ub.getBusinessId())) { // 更新业务表 userBusiness.setId(ub.getBusinessId()); if (us.getFollowSituation() == 5) {// 如果已签合同,则不允许变更 if (ub.getCustomerStatus() != us.getCustomerStatus() && ub.getFollowSituation() != 5) { throw new BusinessException(new Error(ErrorConstants.BUSINESS_ALREADY_LOCKED, "")); } } // 检查业务锁定情况 businessLockedList = userMapper.selectLockedProject(fbb.getUid(), null, ub.getBusinessProjectId(), 1, UserLockReleaseStatus.LOCKED.getCode()); if (businessLockedList.size() > 0) { for (LockingReleaseBo bo : businessLockedList) { if (bo.getAid().equals(TokenManager.getAdminId())) isBusinessOwner = true; } if (!isBusinessOwner) throw new BusinessException( new Error(ErrorConstants.BUSINESS_ALREADY_LOCKED, businessName, "")); } else { if (!isUserOwner) throw new BusinessException( new Error(ErrorConstants.CUSTOMER_ALREADY_LOCKED, businessName, "")); } // if (us.getFollowSituation()!=5&&ub.getFollowSituation()==5) {//如果改成已签合同,则锁定业务 // if (StringUtils.isNotBlank(fbb.getUid())) ub.setUid(fbb.getUid()); // lockProject(ub);//锁定客户业务 // x=1; // } userBusiness.setBusinessProjectId(ub.getBusinessProjectId()); userBusiness.setCustomerStatus(ub.getCustomerStatus()); userBusiness.setFollowSituation(ub.getFollowSituation()); userBusiness.setRemarks(ub.getRemarks()); userBusiness.setUid(fbb.getUid()); try { userBusiness.setUpdateTime(format.parse(fbb.getFollowTime())); } catch (ParseException e) { e.printStackTrace(); } userBusiness.setAid(TokenManager.getAdminId()); userBusinessMapper.updateByPrimaryKeySelective(userBusiness); // 更新业务中间表 userFollowBusiness.setBusinessId(ub.getBusinessProjectId()); userFollowBusiness.setCustomerStatus(ub.getCustomerStatus()); userFollowBusiness.setFollowSituation(ub.getFollowSituation()); userFollowBusiness.setId(ufbId); userFollowBusiness.setFollowId(followId); userFollowBusiness.setRemarks(ub.getRemarks()); userFollowBusiness.setBusinessProjectId(ub.getBusinessProjectId()); userFollowBusinessMapper.insert(userFollowBusiness); } else { // 检查业务锁定情况 businessLockedList = userMapper.selectLockedProject(fbb.getUid(), null, ub.getBusinessProjectId(), 1, UserLockReleaseStatus.LOCKED.getCode()); if (businessLockedList.size() > 0) { for (LockingReleaseBo bo : businessLockedList) { if (bo.getAid().equals(TokenManager.getAdminId())) isBusinessOwner = true; } if (!isBusinessOwner) throw new BusinessException( new Error(ErrorConstants.BUSINESS_ALREADY_LOCKED, businessName, "")); } else { if (!isUserOwner) throw new BusinessException( new Error(ErrorConstants.CUSTOMER_ALREADY_LOCKED, businessName, "")); } if (userBusinessMapper.judgeBusiness(fbb.getUid(), ub.getBusinessProjectId(), "") > 0) { throw new BusinessException(new Error(ErrorConstants.BUSINESS_ALREADY_EXIST, businessName, "")); } // if (ub.getFollowSituation()==5) {//如果改成已签合同,则锁定业务 // if (StringUtils.isNotBlank(fbb.getUid())) ub.setUid(fbb.getUid()); // lockProject(ub);//锁定客户业务 // x=1; // } String ubId = UUID.randomUUID().toString(); // 更新业务表 userBusiness.setId(ubId); userBusiness.setBusinessProjectId(ub.getBusinessProjectId()); try { userBusiness.setCreateTime(format.parse(fbb.getFollowTime())); userBusiness.setUpdateTime(format.parse(fbb.getFollowTime())); } catch (ParseException e) { e.printStackTrace(); } userBusiness.setCustomerStatus(ub.getCustomerStatus()); userBusiness.setFollowSituation(ub.getFollowSituation()); userBusiness.setUid(fbb.getUid()); userBusiness.setAid(TokenManager.getAdminId()); userBusiness.setRemarks(ub.getRemarks()); userBusinessMapper.insert(userBusiness); // 更新业务中间表 userFollowBusiness.setBusinessId(ubId); userFollowBusiness.setCustomerStatus(ub.getCustomerStatus()); userFollowBusiness.setFollowSituation(ub.getFollowSituation()); userFollowBusiness.setId(ufbId); userFollowBusiness.setFollowId(followId); userFollowBusiness.setRemarks(ub.getRemarks()); userFollowBusiness.setBusinessProjectId(ub.getBusinessProjectId()); userFollowBusinessMapper.insert(userFollowBusiness); } } } followProject(fbb.getUid(), x); return 1; } /** * 跟进更新用户中间表 * */ private void followProject(String uid, int x) { Date date = new Date(); String aid = TokenManager.getAdminId(); if (x == 0) { if (userLockReleaseMapper.updateUserMid(uid, aid, date, null) < 1) { userLockReleaseMapper.insertUserMid(uid, aid, date, null); } } else { if (userLockReleaseMapper.updateUserMid(uid, aid, date, date) < 1) { userLockReleaseMapper.insertUserMid(uid, aid, date, date); } } } @SuppressWarnings("unused") private void releaseProject(List businessLockedList) { if (businessLockedList != null && businessLockedList.size() > 0) { UserLockRelease ulr = null; for (LockingReleaseBo bo : businessLockedList) { ulr = new UserLockRelease(); ulr.setId(bo.getId()); ulr.setStatus(UserLockReleaseStatus.RELEASE.getCode()); userLockReleaseMapper.updateByPrimaryKeySelective(ulr); } } } @Override public FollowBusinessBo findFollowById(String followId) { return userMapper.findFollowById(followId); } @Override public List findBusinessByFollowId(String followId) { return userMapper.findBusinessByFollowId(followId); } @Override @Transactional public int updateFollow(FollowBusinessBo fbb) throws BusinessException { UserFollow userFollow = new UserFollow(); SimpleDateFormat format = new SimpleDateFormat(AFTConstants.YYYYMMDDHHMMSS); userFollow.setId(fbb.getFollowId()); if (StringUtils.isNotBlank(fbb.getOcbId())) userFollow.setOcbId(fbb.getOcbId()); userFollow.setResult(fbb.getResult()); userFollow.setContactType(Integer.parseInt(fbb.getContactType())); userFollowMapper.updateByPrimaryKeySelective(userFollow); // 修改拜访记录表 if (fbb.getUserBusinessList().size() > 0) { // 检查客户锁定情况 boolean isUserOwner = false; List userLockedList = userMapper.selectLockedProject(fbb.getUid(), TokenManager.getAdminId(), null, 0, UserLockReleaseStatus.LOCKED.getCode()); if (userLockedList.size() > 0) { isUserOwner = true; } boolean isBusinessOwner = false; List businessLockedList = null; String businessName = ""; UserFollowBusiness userFollowBusiness = null; for (BusinessListBo ub : fbb.getUserBusinessList()) { userFollowBusiness = new UserFollowBusiness(); businessName = businessProjectMapper.selectByPrimaryKey(ub.getBusinessProjectId()).getBname(); if (StringUtils.isNotBlank(ub.getUfbId())) { userFollowBusiness.setId(ub.getUfbId()); userFollowBusiness.setFollowSituation(ub.getFollowSituation()); userFollowBusiness.setCustomerStatus(ub.getCustomerStatus()); userFollowBusiness.setRemarks(ub.getRemarks()); userFollowBusinessMapper.updateByPrimaryKeySelective(userFollowBusiness); // 修改拜访记录中间表 } else { // 检查业务锁定情况 businessLockedList = userMapper.selectLockedProject(fbb.getUid(), null, ub.getBusinessProjectId(), 1, UserLockReleaseStatus.LOCKED.getCode()); if (businessLockedList.size() > 0) { for (LockingReleaseBo bo : businessLockedList) { if (bo.getAid().equals(TokenManager.getAdminId())) isBusinessOwner = true; } if (!isBusinessOwner) throw new BusinessException( new Error(ErrorConstants.BUSINESS_ALREADY_LOCKED, businessName, "")); } else { if (!isUserOwner) throw new BusinessException( new Error(ErrorConstants.CUSTOMER_ALREADY_LOCKED, businessName, "")); } if (userBusinessMapper.judgeBusiness(fbb.getUid(), ub.getBusinessProjectId(), "") > 0) { throw new BusinessException(new Error(ErrorConstants.BUSINESS_ALREADY_EXIST, businessName, "")); } String ubId = UUID.randomUUID().toString(); UserBusiness userBusiness = new UserBusiness(); // 更新业务表 userBusiness.setId(ubId); userBusiness.setBusinessProjectId(ub.getBusinessProjectId()); try { userBusiness.setCreateTime(format.parse(fbb.getFollowTime())); userBusiness.setUpdateTime(format.parse(fbb.getFollowTime())); } catch (ParseException e) { e.printStackTrace(); } userBusiness.setCustomerStatus(ub.getCustomerStatus()); userBusiness.setFollowSituation(ub.getFollowSituation()); userBusiness.setUid(fbb.getUid()); userBusiness.setAid(TokenManager.getAdminId()); userBusinessMapper.insert(userBusiness); // 更新业务中间表 String ufbId = UUID.randomUUID().toString(); userFollowBusiness.setId(ufbId); userFollowBusiness.setFollowId(fbb.getFollowId()); userFollowBusiness.setBusinessId(ubId); userFollowBusiness.setCustomerStatus(ub.getCustomerStatus()); userFollowBusiness.setFollowSituation(ub.getFollowSituation()); userFollowBusiness.setRemarks(ub.getRemarks()); userFollowBusiness.setBusinessProjectId(ub.getBusinessProjectId()); userFollowBusinessMapper.insert(userFollowBusiness); } } } return 1; } @Override public Set findAllContacts(String uid) { Set result = new HashSet(); result.addAll(userMapper.findAllContacts(uid)); return result; } @Override public int updateCustomerContacts(List ocbList, String uid) { if (ocbList.size() > 0) { OrganizationContactBook ocb = null; for (OrganizationContactBook item : ocbList) { if (item != null && item.getMajor() != null && item.getMajor() == 1) { // 改变用户原本的联系人 OrganizationIdentity oi = new OrganizationIdentity(); oi.setContacts(item.getName()); oi.setContactMobile(item.getMobile()); oi.setUid(uid); organizationIdentityMapper.updateServiceByUid(oi); } ocb = new OrganizationContactBook(); try { BeanUtils.copyProperties(ocb, item); if (StringUtils.isBlank(ocb.getId())) { ocb.setId(UUID.randomUUID().toString()); ocb.setUid(uid); ocb.setAid(TokenManager.getAdminId()); Admin ad = adminMapper.selectByPrimaryKey(TokenManager.getAdminId()); ocb.setAname(ad.getName()); organizationContactBookMapper.insert(ocb); } else { organizationContactBookMapper.updateByPrimaryKeySelective(ocb); } } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } } } return 1; } @Override public int deleteFollow(String followId) { UserFollow uf = new UserFollow(); List list = userMapper.findBusinessByFollowId(followId); for (BusinessListBo b : list) { if (b.getFollowSituation() == 5) throw new BusinessException(new Error(ErrorConstants.BUSINESS_ALREADY_LOCKED, "")); ; } uf.setId(followId); uf.setEffective(DeleteStatus.DELETED.getCode()); return userFollowMapper.updateByPrimaryKeySelective(uf); } @Override public void checkCustomer(Set boSet, Set existRows, Set filterRows) { List list = null; CustomerExcelBo[] bos = (CustomerExcelBo[]) boSet.toArray(new CustomerExcelBo[] {}); for (int i = 0; i < bos.length; i++) { CustomerExcelBo bo = bos[i]; CustomerExcelBo ceb = null; for (int j = 0; j < i; j++) { ceb = bos[j]; if (bo.getCustomerType().equals(AFTConstants.USER_TYPE_PERSONAL)) { // 个人 if (ceb.getMobile().equals(bo.getMobile()) && ceb.getCustomerType().equals(bo.getCustomerType())) { bo.setUid(ceb.getUid()); bo.setNewData(false); filterRows.add(bo.getRowNumber()); break; } } else if (bo.getCustomerType().equals(AFTConstants.USER_TYPE_ORGANIZATION)) { // 单位 if (ceb.getIdentifyName().equals(bo.getIdentifyName()) && ceb.getCustomerType().equals(bo.getCustomerType())) { bo.setUid(ceb.getUid()); bo.setNewData(false); filterRows.add(bo.getRowNumber()); break; } } } if (StringUtils.isBlank(bo.getUid())) { // 是否已经存在 if (bo.getCustomerType().equals(AFTConstants.USER_TYPE_PERSONAL)) { list = userMapper.checkUser("", "", bo.getMobile(), Integer.parseInt(bo.getCustomerType()), null, null); } else if (bo.getCustomerType().equals(AFTConstants.USER_TYPE_ORGANIZATION)) { list = userMapper.checkUser("", bo.getIdentifyName(), "", Integer.parseInt(bo.getCustomerType()), null, null); } if (list.size() > 0) { bo.setUid(list.get(0).getId()); bo.setNewData(false); List businessLockedList = userMapper.selectLockedProject(bo.getUid(), null, bo.getBusinessProjectId(), 1, UserLockReleaseStatus.LOCKED.getCode()); if (businessLockedList.size() > 0) { existRows.add(bo.getRowNumber()); } } else { bo.setUid(UUID.randomUUID().toString()); bo.setNewData(true); } } else { List businessLockedList = userMapper.selectLockedProject(bo.getUid(), null, bo.getBusinessProjectId(), 1, UserLockReleaseStatus.LOCKED.getCode()); if (businessLockedList.size() > 0) { existRows.add(bo.getRowNumber()); } } } } @Override @Transactional public int saveUploadData(Set boSet) { Date now = new Date(); String uid = ""; for (CustomerExcelBo bo : boSet) { uid = bo.getUid(); if (bo.isNewData()) { // 新建客户 createUser(bo, uid, now); createIdentity(bo, bo.getCustomerType(), uid); createBusiness(bo, uid, now); createContacts(bo, uid); } else { // 新建业务 createBusiness(bo, uid, now); if (organizationContactBookMapper.checkContacts(uid, bo.getMobile(), TokenManager.getAdminId()) <= 0) { createContacts(bo, uid); } } } return 1; } private void createUser(CustomerExcelBo bo, String uid, Date now) { User user = new User(); user.setId(uid); user.setIdentifyName(bo.getIdentifyName()); user.setSource(AFTConstants.USER_SOURCE_CREATE); user.setNickname(bo.getIdentifyName()); user.setStatus(AFTConstants.USER_STATUS_NORMAL); user.setShareType(AFTConstants.USER_SHARE_PRIVATE); user.setAid(TokenManager.getAdminId()); user.setType(Integer.parseInt(bo.getCustomerType())); user.setLvl(UserLevel.CERTIFIED.getCode()); user.setCreateTime(now); user.setUpdateTime(now); user.setMobile(bo.getMobile()); user.setPassword(AFTConstants.INITIALPASSWORD); passwordUtil.encryptPassword(user); userMapper.insert(user); } private void createIdentity(CustomerExcelBo bo, String type, String uid) { String identifyId = UUID.randomUUID().toString(); if (type.equals(AFTConstants.USER_TYPE_PERSONAL)) { // 新增个人认证信息 UserIdentity ui = new UserIdentity(); ui.setId(identifyId); ui.setUid(uid); ui.setContacts(bo.getContacts()); ui.setContactMobile(bo.getMobile()); ui.setUsername(bo.getIdentifyName()); ui.setExpert(AFTConstants.NO); ui.setCelebrity(AFTConstants.NO); ui.setInternational(AFTConstants.NO); ui.setAuditStatus(5); userIdentityMapper.insert(ui); } else if (type.equals(AFTConstants.USER_TYPE_ORGANIZATION)) { // 创建企业认证信息 OrganizationIdentity oi = new OrganizationIdentity(); oi.setId(identifyId); oi.setUnitName(bo.getIdentifyName()); oi.setUid(uid); oi.setContacts(bo.getContacts()); oi.setContactMobile(bo.getMobile()); oi.setHighTechZone(AFTConstants.NO); oi.setInternational(AFTConstants.NO); oi.setListed(AFTConstants.NO); oi.setAuditStatus(5); // 实名企业 organizationIdentityMapper.insert(oi); } } private void createContacts(CustomerExcelBo bo, String uid) { // 新增企业联系人 OrganizationContactBook cob = new OrganizationContactBook(); cob.setAid(TokenManager.getAdminId()); cob.setId(UUID.randomUUID().toString()); cob.setUid(uid); cob.setName(bo.getContacts()); cob.setMobile(bo.getMobile()); cob.setMajor(AFTConstants.NO); organizationContactBookMapper.insert(cob); } private void createBusiness(CustomerExcelBo bo, String uid, Date now) { // 新增业务 UserBusiness ub = new UserBusiness(); ub.setId(UUID.randomUUID().toString()); ub.setAid(TokenManager.getAdminId()); ub.setBusinessProjectId(bo.getBusinessProjectId()); ub.setUid(uid); ub.setCreateTime(now); ub.setUpdateTime(now); ub.setCustomerStatus(Integer.parseInt(bo.getCustomerStatus())); ub.setFollowSituation(Integer.parseInt(bo.getFollowSituation())); userBusinessMapper.insert(ub); } @Override public int updateByOperatorType(String uid,String aid, String oldAid, Integer operatorType,Integer data) { User user = new User(); Date now = new Date(); if(data==null)data=0; // 是否多个客户 boolean isUs = false; if (uid.contains(",")) { isUs = true; } List uList = new ArrayList<>(); if (isUs) { uList = Arrays.asList(uid.split(",")); } user.setId(uid); int flag = 0; //领取 if (AFTConstants.USER_RECEIVE.equals(operatorType)) { if (userMapper.UserReceiveCount(TokenManager.getAdminId()) >= USER_RECEIVE_MAX) throw new BusinessException(new Error(ErrorConstants.CUSTOM_EREXCESS, "" + USER_RECEIVE_MAX, "")); user.setAid(TokenManager.getAdminId()); user.setShareType(AFTConstants.USER_SHARE_PRIVATE); user.setInformationMaintainer(TokenManager.getAdminId()); user.setSource(2);// 客户来源设置为领取 user.setTransferTime(now); flag = addUserLock(uid, TokenManager.getAdminId(), now, uList); // 指定用户锁定客户 addUserTransferLog(uid, TokenManager.getAdminId(), null,1, null, now, uList); if (flag <= 0) throw new BusinessException(new Error(ErrorConstants.CUSTOMER_ALREADY_RECEIVE, "")); //转交 } else if (AFTConstants.USER_TRANSFER_TO_OTHER.equals(operatorType) || AFTConstants.SIGN_USER_TRANSFER_TO_OTHER == operatorType) { if (!isUs) { user.setAid(aid); if (data==1){ user.setInformationMaintainer(aid); } user.setSource(3);// 客户来源设置为转交 if (AFTConstants.USER_TRANSFER_TO_OTHER == operatorType) { // 查询这个客户是否是登陆人的客户 if (userMapper.getAidAndUser(uid, TokenManager.getAdminId()) <= 0) throw new BusinessException(new Error("请勿非法操作!", "请勿非法操作!")); flag = updateUserLock(uid, oldAid, UserLockReleaseStatus.LOCKED.getCode(), UserLockReleaseStatus.RELEASE.getCode()); // 原用户释放客户 if (flag > 0) flag = addUserLock(uid,aid, now, uList); // 指定用户锁定客户 if (flag <= 0) throw new BusinessException(new Error(ErrorConstants.CUSTOMER_TRANSFER_FAIL, "")); } } else { for (String us : uList) { if (userMapper.getAidAndUser(us, TokenManager.getAdminId()) <= 0) throw new BusinessException(new Error("请勿非法操作!", "请勿非法操作!")); } if (AFTConstants.USER_TRANSFER_TO_OTHER == operatorType) { flag = updateUsersLock(uList, oldAid, UserLockReleaseStatus.LOCKED.getCode(), UserLockReleaseStatus.RELEASE.getCode()); // 原用户释放客户 if (flag > 0) flag = addUserLock(uid, aid, now, uList); // 指定用户锁定客户 if (flag <= 0) throw new BusinessException(new Error(ErrorConstants.CUSTOMER_TRANSFER_FAIL, "")); } } Integer type = 2; if (AFTConstants.SIGN_USER_TRANSFER_TO_OTHER == operatorType)type = 7; addUserTransferLog(uid, aid,oldAid, type, null, now, uList); } if (isUs) { if (AFTConstants.USER_RECEIVE == operatorType) { userMapper.updateList(aid, null, 3, null, 2, uList,null); } else { userMapper.updateList(aid, null, 3, null, null, uList,data); } } else { userMapper.updateByPrimaryKeySelective(user); } return 1; } /** * * @param uid 客户id * @param aid 接受者id * @param lockTime 时间 * @param uList 是不是多人客户 * @return */ private int addUserLock(String uid, String aid, Date lockTime, List uList) { if (uList.isEmpty()) { UserLockRelease ulr = new UserLockRelease(); ulr.setId(UUID.randomUUID().toString()); ulr.setType(0); ulr.setAid(aid); ulr.setLockTime(lockTime); ulr.setStatus(UserLockReleaseStatus.LOCKED.getCode()); ulr.setUid(uid); userLockReleaseMapper.insert(ulr); } else { List ulrList = new ArrayList<>(); for (String s : uList) { UserLockRelease ulr = new UserLockRelease(); ulr.setId(UUID.randomUUID().toString()); ulr.setType(0); ulr.setAid(aid); ulr.setLockTime(lockTime); ulr.setStatus(UserLockReleaseStatus.LOCKED.getCode()); ulr.setUid(s); ulrList.add(ulr); } userLockReleaseMapper.insertList(ulrList); } return 1; } /** * * @param type 0录入 1 领取 2 转交私有客户 3转交业务 4 未跟进丢失(30) 5未签单丢失(270天)6释放 7转交签单客户 */ private void addUserTransferLog(String uid, String aid,String oldAid, Integer type, String pid, Date lockTime, List uList) { if (uList.isEmpty()) { UserTransferLog utl = new UserTransferLog(); if (type == 0 || type == 1) utl.setAid(aid); else if (type == 2 || type == 3 || type == 7) { utl.setAid(TokenManager.getAdminId()); utl.setTakeAid(aid); } if (type == 3) utl.setPid(pid); utl.setType(type); utl.setCreateTime(lockTime); utl.setUid(uid); userTransferLogMapper.insertSelective(utl); } else { List ulist = Arrays.asList(uid.split(",")); List utlList = new ArrayList<>(); for (String string : ulist) { UserTransferLog utl = new UserTransferLog(); if (type == 0 || type == 1) utl.setAid(aid); else if (type == 2 || type == 3 || type == 7) { utl.setAid(TokenManager.getAdminId()); utl.setTakeAid(aid); } if (type == 3) utl.setPid(pid); utl.setCreateTime(lockTime); utl.setUid(string); utl.setType(type); utlList.add(utl); } userTransferLogMapper.insertList(utlList); } } @SuppressWarnings("unchecked") @Override public Pagination customerStatistics(Date sDate, Date eDate, String depNo, String businessGlossoryId, Integer pageNo, Integer pageSize) { Map params = new HashMap(); if (null != sDate) params.put("sDate", sDate); if (null != eDate) params.put("eDate", eDate); if (StringUtils.isNotBlank(depNo)) params.put("depNo", depNo); if (StringUtils.isNotBlank(businessGlossoryId)) params.put("businessGlossoryId", businessGlossoryId); Pagination page = (Pagination) findPage("customerStatisticsList", "customerStatisticsCount", params, pageNo, pageSize); return page; } @SuppressWarnings("unchecked") @Override public Pagination businessStatistic(Date sDate, Date eDate, String depNo, String businessGlossoryId, Integer pageNo, Integer pageSize) { Map params = new HashMap(); if (null != sDate) params.put("sDate", sDate); if (null != eDate) params.put("eDate", eDate); if (StringUtils.isNotBlank(depNo)) params.put("depNo", depNo); if (StringUtils.isNotBlank(businessGlossoryId)) params.put("businessGlossoryId", businessGlossoryId); Pagination page = (Pagination) findPage("businessStatisticList", "businessStatisticCount", params, pageNo, pageSize); return page; } @SuppressWarnings("unchecked") @Override public Pagination followStatistic(Date sDate, Date eDate, String depNo, Integer pageNo, Integer pageSize) { Map params = new HashMap(); if (null != sDate) params.put("sDate", sDate); if (null != eDate) params.put("eDate", eDate); if (StringUtils.isNotBlank(depNo)) params.put("depNo", depNo); Pagination page = (Pagination) findPage("followStatisticList", "followStatisticCount", params, pageNo, pageSize); return page; } @SuppressWarnings("unchecked") @Override public Pagination listBusiness(BusinessListBo blo, Integer pageNo, Integer pageSize) { blo.setAid(TokenManager.getAdminId()); return (Pagination) findPage("selectBusinessList", "selectBusinessCount", disposeParams(blo), pageNo, pageSize); } @SuppressWarnings("unchecked") @Override public Pagination listAllBusiness(BusinessListBo blo, Integer pageNo, Integer pageSize) { return (Pagination) findPage("selectBusinessList", "selectBusinessCount", disposeParams(blo), pageNo, pageSize); } @SuppressWarnings("unchecked") @Override public Pagination listManageBusiness(BusinessListBo blo, Integer pageNo, Integer pageSize) { blo.setAid(TokenManager.getAdminId()); return (Pagination) findPage("selectBusinessManageList", "selectBusinessManageCount", disposeParams(blo), pageNo, pageSize); } private Map disposeParams(BusinessListBo blo) { Map params = new HashMap(); if (StringUtils.isNotBlank(blo.getUid())) params.put("uid", blo.getUid()); if (StringUtils.isNotBlank(blo.getAid())) params.put("aid", blo.getAid()); if (StringUtils.isNotBlank(blo.getAdminName())) params.put("adminName", blo.getAdminName()); if (StringUtils.isNotBlank(blo.getStartDate())) params.put("startDate", blo.getStartDate() + " 00:00:00"); if (StringUtils.isNotBlank(blo.getEndDate())) params.put("endDate", blo.getEndDate() + " 23:59:59"); if (StringUtils.isNotBlank(blo.getIdentifyName())) params.put("identifyName", blo.getIdentifyName()); if (blo.getFollowSituation() != null) params.put("followSituation", blo.getFollowSituation()); if (blo.getCustomerStatus() != null) params.put("customerStatus", blo.getCustomerStatus()); return params; } @Override public List findBusinessGlossory() { return userBusinessMapper.selectBusinessGlossory(); } @Override public int judgeBusiness(String uid, String businessProjectId) { return userMapper.selectLockedProject(uid, null, businessProjectId, 1, UserLockReleaseStatus.LOCKED.getCode()) .size(); } @Override @Transactional public void addBusinessAndFollow(BussinessFollowBo bfb) throws ParseException { UserBusiness ub = new UserBusiness(); String ubId = UUID.randomUUID().toString(); SimpleDateFormat format = new SimpleDateFormat(AFTConstants.YYYYMMDDHHMMSS); ub.setCustomerStatus(Integer.parseInt(bfb.getCustomerStatus())); ub.setFollowSituation(Integer.parseInt(bfb.getFollowSituation())); ub.setId(ubId); ub.setUid(bfb.getUid()); ub.setAid(TokenManager.getAdminId()); ub.setRemarks(bfb.getRemarks()); ub.setBusinessProjectId(bfb.getBusinessProjectId()); ub.setUpdateTime(format.parse(bfb.getCreateTime())); ub.setCreateTime(format.parse(bfb.getCreateTime())); userBusinessMapper.insert(ub); if (StringUtils.isNotBlank(bfb.getOcbId())) { // 跟进联系人不为空则添加跟进记录 UserFollow uf = new UserFollow(); String ufId = UUID.randomUUID().toString(); uf.setId(ufId); uf.setUid(bfb.getUid()); uf.setCreateTime(format.parse(bfb.getFollowTime())); uf.setOcbId(bfb.getOcbId()); uf.setResult(bfb.getResult()); uf.setContactType(Integer.parseInt(bfb.getContactType())); uf.setAid(TokenManager.getAdminId()); uf.setEffective(0); int followCount = userBusinessMapper.selectFollowCountByUAid(bfb.getUid(), TokenManager.getAdminId()) + 1; uf.setFollowCount(followCount); userFollowMapper.insert(uf); UserFollowBusiness ufb = new UserFollowBusiness(); ufb.setId(UUID.randomUUID().toString()); ufb.setBusinessId(ubId); ufb.setFollowId(ufId); ufb.setCustomerStatus(ub.getCustomerStatus()); ufb.setFollowSituation(ub.getFollowSituation()); ufb.setBusinessProjectId(bfb.getBusinessProjectId()); userFollowBusinessMapper.insert(ufb); } } @Override public List findBusinessByUAid(String uid, String aid) { return userBusinessMapper.selectBusinessByUAid(uid, aid); } @Override public List findLockedBusinessByUAid(String uid, String aid) { return userBusinessMapper.selectLockedBusinessByUAid(uid, aid); } @Override public BussinessFollowBo findBusinessDetail(String businessId) { return userBusinessMapper.findBusinessDetail(businessId); } @Override public int updateBusiness(BussinessFollowBo bfb) { UserBusiness userBusiness = new UserBusiness(); userBusiness.setId(bfb.getBusinessId()); userBusiness.setCustomerStatus(Integer.parseInt(bfb.getCustomerStatus())); userBusiness.setFollowSituation(Integer.parseInt(bfb.getFollowSituation())); userBusiness.setRemarks(bfb.getRemarks()); userBusiness.setUpdateTime(new Date()); return userBusinessMapper.updateByPrimaryKeySelective(userBusiness); } @Override @Transactional public int addFollowOneBusiness(BussinessFollowBo bfb) throws ParseException { Date updateTime = new Date(); SimpleDateFormat format = new SimpleDateFormat(AFTConstants.YYYYMMDDHHMMSS); UserBusiness userBusiness = new UserBusiness(); userBusiness.setId(bfb.getBusinessId()); userBusiness.setUpdateTime(updateTime); userBusiness.setCustomerStatus(Integer.parseInt(bfb.getCustomerStatus())); userBusiness.setFollowSituation(Integer.parseInt(bfb.getFollowSituation())); userBusinessMapper.updateByPrimaryKeySelective(userBusiness); UserFollow userFollow = new UserFollow(); String followId = UUID.randomUUID().toString(); int followCount = userBusinessMapper.selectFollowCountByUAid(bfb.getUid(), TokenManager.getAdminId()) + 1; userFollow.setId(followId); userFollow.setResult(bfb.getResult()); userFollow.setCreateTime(format.parse(bfb.getFollowTime())); userFollow.setEffective(0); userFollow.setOcbId(bfb.getOcbId()); userFollow.setFollowCount(followCount); userFollow.setContactType(Integer.parseInt(bfb.getContactType())); userFollow.setAid(TokenManager.getAdminId()); userFollow.setUid(bfb.getUid()); userFollowMapper.insert(userFollow); UserFollowBusiness userFollowBusiness = new UserFollowBusiness(); String ufbId = UUID.randomUUID().toString(); userFollowBusiness.setId(ufbId); userFollowBusiness.setFollowId(followId); userFollowBusiness.setBusinessProjectId(bfb.getBusinessProjectId()); userFollowBusiness.setBusinessId(bfb.getBusinessId()); userFollowBusiness.setCustomerStatus(Integer.parseInt(bfb.getCustomerStatus())); userFollowBusiness.setFollowSituation(Integer.parseInt(bfb.getFollowSituation())); userFollowBusiness.setRemarks(bfb.getRemarks()); userFollowBusinessMapper.insert(userFollowBusiness); return 1; } @Override public BussinessFollowBo findFollowOneBusiness(String ufbId) { return userBusinessMapper.findFollowOneBusiness(ufbId); } @Override public int updateFollowOneBusiness(BussinessFollowBo bfb) { // 修改业务跟进中间表 UserFollowBusiness userFollowBusiness = new UserFollowBusiness(); userFollowBusiness.setId(bfb.getUfbId()); userFollowBusiness.setRemarks(bfb.getRemarks()); userFollowBusiness.setCustomerStatus(Integer.parseInt(bfb.getCustomerStatus())); userFollowBusiness.setFollowSituation(Integer.parseInt(bfb.getFollowSituation())); userFollowBusinessMapper.updateByPrimaryKeySelective(userFollowBusiness); // 修改跟进记录表 UserFollow userFollow = new UserFollow(); userFollow.setId(bfb.getFollowId()); userFollow.setContactType(Integer.parseInt(bfb.getContactType())); userFollow.setResult(bfb.getResult()); if (StringUtils.isNotBlank(bfb.getOcbId())) userFollow.setOcbId(bfb.getOcbId()); userFollowMapper.updateByPrimaryKeySelective(userFollow); return 1; } @Override public int addOneContact(OrganizationContactBook ocb) { ocb.setAid(TokenManager.getAdminId()); ocb.setId(UUID.randomUUID().toString()); ocb.setMajor(AFTConstants.NO); Admin ad = adminMapper.selectByPrimaryKey(TokenManager.getAdminId()); ocb.setAname(ad.getName()); return organizationContactBookMapper.insert(ocb); } @Override public int deleteBusiness(String businessId) { return userBusinessMapper.deleteByPrimaryKey(businessId); } @Override public int updateBusinessToStop(String businessId) { UserBusiness ub = new UserBusiness(); ub.setId(businessId); ub.setCustomerStatus(CustomerStatusFiled.STATUS_STOP.getCode()); return userBusinessMapper.updateByPrimaryKeySelective(ub); } @Override public int deleteFollowOneBusiness(String ufbId) { UserFollowBusiness ufb = userFollowBusinessMapper.selectByPrimaryKey(ufbId); if (ufb.getFollowSituation() == 5) {// 如果业务是已签合同则不允许删除 throw new BusinessException(new Error(ErrorConstants.BUSINESS_ALREADY_LOCKED, "")); } return userFollowBusinessMapper.deleteByPrimaryKey(ufbId); } @Override public int deleteOneContact(String ocbId) { return organizationContactBookMapper.deleteByPrimaryKey(ocbId); } @Override public List findAdminName() { String aid = TokenManager.getAdminId(); return userMapper.findAdminName(aid); } @Override public int updatePersonalCustomerz(CustomerPersonalDetailBo bo) { UserIdentity ui = new UserIdentity(); User user = new User(); try { BeanUtilsExt.copyProperties(ui, bo); user.setId(bo.getUid()); user.setSocietyTag(bo.getSocietyTag()); user.setHeadPortraitUrl(bo.getHeadPortraitUrl()); user.setIntroduction(bo.getIntroduction()); user.setUpdateTime(new Date()); if (!StringUtils.isBlank(bo.getAid())) { user.setAid(bo.getAid()); user.setShareType(0); } } catch (InvocationTargetException | IllegalAccessException e) { e.printStackTrace(); } userMapper.updateByPrimaryKeySelective(user); return 1; } @Override public Pagination findEnteringAudit(CustomerListOut clo, Integer pageNo, Integer pageSize) { Map params = disposeParams(clo); if (!StringUtils.isBlank(clo.getAdminName())) params.put("adminName", clo.getAdminName()); @SuppressWarnings("unchecked") Pagination list = (Pagination) findPage("findEnteringAuditList", "findEnteringAuditCount", params, pageNo, pageSize); return list; } @Override public Pagination findEnteringAuditIsNo(CustomerListOut clo, Integer pageNo, Integer pageSize) { clo.setAid(TokenManager.getAdminId()); Map params = disposeParams(clo); if (!StringUtils.isBlank(clo.getAdminName())) params.put("adminName", clo.getAdminName()); @SuppressWarnings("unchecked") Pagination list = (Pagination) findPage("findEnteringAuditIsNoList", "findEnteringAuditIsNoCount", params, pageNo, pageSize); return list; } @Override public int updateEnteringAudit(User bo) { String[] ary = bo.getId().split(","); for (String s : ary) { String id = s; Integer auditStatus = bo.getAuditStatus(); String auditOpinion = bo.getAuditOpinion(); userMapper.updateEnteringAudit(id, auditStatus, auditOpinion); } return 1; } @Override public int updateMainContact(String ocbId, String uid) { organizationContactBookMapper.updateSubContact(uid); OrganizationIdentity oi = new OrganizationIdentity(); OrganizationContactBook ocb = organizationContactBookMapper.selectByPrimaryKey(ocbId); oi.setUid(uid); oi.setContacts(ocb.getName()); oi.setContactMobile(ocb.getMobile()); organizationIdentityMapper.updateServiceByUid(oi); organizationContactBookMapper.updateMainContact(ocbId); return 1; } @Override public int updateRefusedCustomer(String id, String nickname, String mobile, String societyTag) { User u = userMapper.selectByPrimaryKey(id); u.setNickname(nickname); u.setMobile(mobile); u.setSocietyTag(societyTag); return userMapper.updateRefusedCustomer(id, nickname, mobile, societyTag); } private void setCustomerList(List tmpList, int i, Integer power) { Date now = new Date(); String s1, s2; Long l1, l2; int diff1 = 0, diff2 = 0; for (CustomerListOut clo : tmpList) { try { // 如果最近跟进为空直接取转换时间 if (StringUtils.isNotBlank(clo.getLastFollowTime())) { // 如果最近跟进小于转换取转换时间 if (StringUtils.isNotBlank(clo.getTransferTime())&&(DateUtils.parseDate(clo.getLastFollowTime(), AFTConstants.YYYYMMDDHHMMSS).getTime() > DateUtils .parseDate(clo.getTransferTime(), AFTConstants.YYYYMMDDHHMMSS).getTime()) ) { s1 = clo.getLastFollowTime(); } else { s1 = clo.getTransferTime(); } } else { s1 = clo.getTransferTime(); } // 另外一个时间取转换时间 s2 = clo.getTransferTime(); l1 = DateUtils.parseDate(s1, AFTConstants.YYYYMMDDHHMMSS).getTime(); l2 = DateUtils.parseDate(s2, AFTConstants.YYYYMMDDHHMMSS).getTime(); if (i == 0) { diff1 = (int) ((l1 + AFTConstants.USER_FOLLOW_LIMIT_MS - now.getTime()) / (24 * 3600 * 1000)); diff2 = (int) ((l2 + AFTConstants.USER_SIGN_LIMIT_MS - now.getTime()) / (24 * 3600 * 1000)); } else if (i == 1) { diff1 = (int) ((l1 + AFTConstants.PROJECT_FOLLOW_LIMIT_MS - now.getTime()) / (24 * 3600 * 1000)); diff2 = (int) ((l2 + AFTConstants.PROJECT_SIGN_LIMIT_MS - now.getTime()) / (24 * 3600 * 1000)); } clo.setSurplusFollowTime(diff1 + ""); clo.setSurplusSignTime(diff2 + ""); } catch (ParseException e) { e.printStackTrace(); } if (power == 1) { if (!clo.getAid().equals(TokenManager.getAdminId())) { clo.setContacts("***"); clo.setContactMobile("***"); } } } } @SuppressWarnings("unchecked") @Override public Pagination listSignOrganizationCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setAid(TokenManager.getAdminId()); Map params = disposeParams(cli); Pagination list = (Pagination) findPage("selectSignOrganizationCustomerList", "selectSignOrganizationCustomerCount", params, pageNo, pageSize); return list; } @SuppressWarnings("unchecked") @Override public Pagination listSignPersonalCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setAid(TokenManager.getAdminId()); Map params = disposeParams(cli); Pagination list = (Pagination) findPage("selectSignPersonalCustomerList", "selectSignPersonalCustomerCount", params, pageNo, pageSize); List tmpList = (List) list.getList(); setCustomerList(tmpList, 0, null); list.setList(tmpList); return list; } @Override public List selectLockedProject(String uid) { List list = userMapper.selectLockedProject(uid, null, null, 1, 0); for (LockingReleaseBo lrb : list) { if (lrb.getAid().equals(TokenManager.getAdminId())) { lrb.setMySign(1); } else { lrb.setMySign(0); } } return list; } @Override public List getPrivateCustomerByName(String name) { return userMapper.selectPrivateCustomerByName(name, TokenManager.getAdminId()); } @Override public List getSignedCustomerByName(String name) { return userMapper.selectSignedCustomerByName(name, TokenManager.getAdminId(), 1); } @Override public List getChannelCustomerByName(String name) { return userMapper.selectSignedCustomerByName(name, TokenManager.getAdminId(), 2); } private int updateUserLock(String uid, String aid, Integer oldStatus, Integer newStatus) { return userLockReleaseMapper.updateUserLock(uid, aid, oldStatus, newStatus); } private int updateUsersLock(List uList, String aid, Integer oldStatus, Integer newStatus) { return userLockReleaseMapper.updateUsersLock(uList, aid, oldStatus, newStatus); } @Override public List selectWaitReleaseCustomer(String uid, Integer type) { return userLockReleaseMapper.selectWaitReleaseCustomer(uid, type); } /** * 查询需要释放的业务 * * @param uid * @return */ @Override public List selectWaitReleaseBusiness(String uid) { return userLockReleaseMapper.selectWaitReleaseBusiness(uid); } /** * 处理需要释放 * */ @Override public void updateReleaseLock(Date releaseTime) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = formatter.format(releaseTime); userMapper.updateReleaseLock(time); } @Override public int updateAgainProjectTask(String uid, String projectId, String aid) { List businessLockedList = userMapper.selectLockedProject(uid, TokenManager.getAdminId(), projectId, 1, UserLockReleaseStatus.LOCKED.getCode()); // List businessLockedList = userMapper.selectLockedProject(uid, aid, projectId, 1, UserLockReleaseStatus.LOCKED.getCode()); UserLockRelease u = new UserLockRelease(); if (businessLockedList.size() == 1) { for (LockingReleaseBo l : businessLockedList) { u.setId(l.getId()); u.setLockTime(new Date()); } return userLockReleaseMapper.updateByPrimaryKeySelective(u); } return 0; } @Override public int updateInformationMaintainerr(String id, String aid) { User u = new User(); u.setId(id); u.setInformationMaintainer(aid); return userMapper.updateByPrimaryKeySelective(u); } @SuppressWarnings("unchecked") @Override public Pagination listCustomerInformation(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_ORGANIZATION); cli.setAid(TokenManager.getAdminId()); // cli.setAid("1"); if (cli.getShareType()==null){ cli.setShareType(String.valueOf(AFTConstants.USER_SHARE_PRIVATE)); } Map params = disposeParams(cli); return (Pagination) findPage("selectCustomerInformationList", "selectCustomerInformationCount", params, pageNo, pageSize); } @SuppressWarnings("unchecked") @Override public Pagination listDepCustomerInformation(CustomerListIn cli, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_ORGANIZATION); cli.setAid(TokenManager.getAdminId()); // cli.setAid("1"); cli.setShareType(String.valueOf(AFTConstants.USER_SHARE_PRIVATE)); Map params = disposeParams(cli); return (Pagination) findPage("selectDepCustomerInformationList", "selectDepCustomerInformationCount", params, pageNo, pageSize); } public boolean checkCustomerInformation(String uid) { int i = userMapper.checkCustomerInformation(uid); if (i < 1) { return true; } return false; } @Override public void updatePendingReleaseLock(List newList) { String lockIds = ""; for (LockingReleaseBo bo : newList) { lockIds += bo.getId() + ","; } if (lockIds.length() > 0) { lockIds = "'" + lockIds.substring(0, lockIds.length() - 1).replace(",", "','") + "'"; userLockReleaseMapper.updatePendingReleaseLock(lockIds); } } @Override public List selectPendinglockUserList() { return userLockReleaseMapper.selectPendinglockUserList(); } @Override public int updateUserLevel(User u) { if (!u.getId().contains(",")) { userMapper.updateByPrimaryKeySelective(u); } else { List ulist = Arrays.asList(u.getId().split(",")); userMapper.updateList(null, u.getLevel(), null, null, null, ulist,null); } return 1; } @Override public XSSFWorkbook privateUnitCustomerOutXls(CustomerListIn cli, Integer sort, Integer sortType, Integer pageNo, Integer pageSize) { cli.setType(AFTConstants.USER_TYPE_ORGANIZATION); cli.setAid(TokenManager.getAdminId()); // cli.setAid("1"); cli.setShareType(String.valueOf(AFTConstants.USER_SHARE_PRIVATE)); Map params = disposeParams(cli); params.put("sort", sort); params.put("sortType", sortType); List list = userMapper.privateUnitCustomerList(params); setCustomerList(list, 0, 0); if (list == null || list.size() == 0) return null; String[] comment = { "客户名称", "地区", "联系人", "联系电话", "社会性质", "客户初始时间", "剩余私有天数", "最新跟进时间", "客户等级" }; String filePath = uploadPath + "/privateUnitCustomer"; XSSFWorkbook wb = ExportExcelUtil.exportSelectPrivateOrganizationCustomer(list, comment, filePath); return wb; } @Override public int customerHandOver(String userIds, String receiveId) { /* * String [] str=userIds.split(","); String aid=TokenManager.getAdminId(); * List uids=Arrays.asList(str); * userLockReleaseMapper.updateBatchReleaseProject(uids,receiveId,aid); * userLockReleaseMapper.updateBatchlockProject(uids,receiveId,aid); */ return 0; } @Override public int updatePrivateBusinessTransfer(String inputId, String uid, String pid) { List list = userLockReleaseMapper.checkUserProject(uid, pid, TokenManager.getAdminId()); if (list.isEmpty()) { throw new BusinessException(new Error("客户归属错误", "客户归属错误")); } LockingReleaseBo l = list.get(0); UserLockRelease ul = new UserLockRelease(); ul.setId(l.getId()); ul.setAid(inputId); userLockReleaseMapper.updateByPrimaryKeySelective(ul); addtransferLog(uid, pid, TokenManager.getAdminId(), inputId, 3, false); List bl = userBusinessMapper.selectBusinessProjectByUAPid(uid, TokenManager.getAdminId(), pid); if (bl.size() == 1) { UserBusiness ub = new UserBusiness(); ub.setId(bl.get(0).getBusinessId()); ub.setAid(inputId); ub.setRemarks("转交客户业务触发"); userBusinessMapper.updateByPrimaryKeySelective(ub); } return 1; } private void addtransferLog(String uid, String pid, String aid, String takeAid, Integer type, boolean isUs) { if (!isUs) { UserTransferLog utl = new UserTransferLog(); utl.setAid(aid); utl.setCreateTime(new Date()); utl.setPid(pid); utl.setTakeAid(takeAid); utl.setType(type); utl.setUid(uid); userTransferLogMapper.insertSelective(utl); } else { List ulist = Arrays.asList(uid.split(",")); List utfList = new ArrayList<>(); for (String us : ulist) { UserTransferLog utl = new UserTransferLog(); utl.setAid(aid); utl.setCreateTime(new Date()); utl.setPid(pid); utl.setTakeAid(takeAid); utl.setType(type); utl.setUid(us); utfList.add(utl); } userTransferLogMapper.insertList(utfList); } } @Override public List transferList(String uid) { return userTransferLogMapper.selectByUidGetList(uid); } @Override public int pushReleaseUser(String id) { Date date = new Date(); String aid = TokenManager.getAdminId(); if (!id.contains(",")) { User u = userMapper.selectByPrimaryKey(id); if (!u.getAid().equals(aid)) { throw new BuilderException("客户归属错误!"); } UserTransferLog utl = new UserTransferLog(); u.setTransferTime(date); u.setShareType(1); userMapper.updateByPrimaryKeySelective(u); utl.setAid(aid); utl.setCreateTime(date); utl.setType(6); utl.setUid(id); userTransferLogMapper.insertSelective(utl); userLockReleaseMapper.updateUserTypeLock(u.getId(), TokenManager.getAdminId(), 0, 2, date); } else { List list = Arrays.asList(id.split(",")); List ulList = new ArrayList(); for (String str : list) { User u = userMapper.selectByPrimaryKey(str); if (!u.getAid().equals(TokenManager.getAdminId())) { throw new BuilderException("客户归属错误!"); } UserTransferLog utl = new UserTransferLog(); utl.setAid(aid); utl.setCreateTime(date); utl.setType(6); utl.setUid(str); ulList.add(utl); } userTransferLogMapper.insertList(ulList); userMapper.updateList(null, null, null, date, 1, list,null); userLockReleaseMapper.updateUserTypeLockList(list, TokenManager.getAdminId(), 0, 2, date); } return 1; } @Override public List selectReleaseUserDays(String id) { Integer x = 270, y = 90; x = x - USER_REMIND_DAYS; y = y - USER_REMIND_DAYS; List list = userLockReleaseMapper.selectUserDays(id, x, y); return list; } @Override public List selectChannelUserDays(String id) { Integer days = 90; return userLockReleaseMapper.selectChannelUserDays(days,id); } @Override public int addGuidance(String followId, String guidance) { UserFollow uf = new UserFollow(); uf.setId(followId); uf.setGuidance(guidance); uf.setGuidanceTime(new Date()); String aid=TokenManager.getAdminId(); Admin a=adminMapper.selectByPrimaryKey(aid); uf.setGuidanceAid(a.getId()); uf.setGuidanceName(a.getName()); userFollowMapper.pushUserGuidance(followId, 1); return userFollowMapper.updateByPrimaryKeySelective(uf); } @Override public boolean checkMax(String aid) { int y = 0; int i = userMapper.checkUserMax(aid); List roles=adminMapper.getAdminRoleListByAid(aid); for (String role : roles) { if (role.equals(AFTConstants.SALESMAN_DIRECTOR)){ y = 800; continue; } else if (role.equals(AFTConstants.SALESMAN_MANAGER)){ y = 200; continue; } else if (role.equals(AFTConstants.SALESMAN)){ y = 100; continue; } } if (i >= y) { return true; } return false; } @Override public void pushReleaseLog(List list, Integer type) throws InterruptedException { Date date = new Date(); List newList = new ArrayList(); if (list != null && list.size() > 0) { for (int i = 0; i < list.size(); i++) { newList.add(list.get(i)); if (50 == newList.size() || i == list.size() - 1) { if (newList.size() > 0) { // 处理日志 List list3 = new ArrayList(); for (LockingReleaseBo lrb : newList) { UserTransferLog utl = new UserTransferLog(); utl.setAid(lrb.getAid()); utl.setCreateTime(date); if (type == 0) utl.setType(4); else if (type == 1) utl.setType(5); utl.setUid(lrb.getUid()); list3.add(utl); } userTransferLogMapper.insertList(list3); } newList.clear(); Thread.sleep(2000); } } } } @Override public Object listChannelCustomer(InputListChannel in) { Map params = new HashMap<>(); if (StringUtils.isNotBlank(in.getName())) params.put("name", in.getName()); if (in.getProvince() != null) params.put("province", in.getProvince()); if (in.getCity() != null) params.put("city", in.getCity()); if (in.getStatus() != null) params.put("status", in.getStatus()); params.put("type", in.getType() == null ? 0 : in.getType()); if (StringUtils.isNotBlank(in.getStartTime())) params.put("startTime", in.getStartTime()); if (StringUtils.isNotBlank(in.getEndTime())) params.put("endTime", in.getEndTime() + " 23:59:59"); // 0营销员 1渠道专员 2营销总监 3营销经理 4释放 5未分配 6已分配 7已签单 if (in.getType()==0) { if(StringUtils.isNotBlank(in.getAid()))params.put("aid", in.getAid()); params.put("sid", TokenManager.getAdminId()); } else if (in.getType()==1) { params.put("aid", in.getAid() == null ? TokenManager.getAdminId() : in.getAid()); } else if (in.getType()==2) { if(StringUtils.isNotBlank(in.getAid()))params.put("aid", in.getAid()); }else if (in.getType()==3) { params.put("maid", TokenManager.getAdminId()); if(StringUtils.isNotBlank(in.getAid()))params.put("aid", in.getAid()); } else { params.put("aid", in.getAid() == null ? TokenManager.getAdminId() : in.getAid()); } Pagination p=findPage("selectChannelCustomerList", "selectChannelCustomerCount", params, in.getPageNo(), in.getPageSize()); @SuppressWarnings("unchecked") List list=(List) p.getList(); Date date=new Date(); for (OutUserChannel o : list) { if (o.getDistributionTime()!=null) { int days = (int) ((o.getDistributionTime().getTime() + AFTConstants.USER_CHENNL_LIMIT_MS - date.getTime()) / (24 * 3600 * 1000)); o.setDays(days); } } return p; } @Override public Object pushChannelDeliver(List uids, String receiveId, String remarks, Integer type) { Date date = new Date(); Integer i = userMapper.updatechannelCustomerDeliver(uids, receiveId); Integer status = null; if (i > 0) { List l = new ArrayList(); for (String string : uids) { UserTransferLog u = new UserTransferLog(); u.setAid(TokenManager.getAdminId()); u.setUid(string); if (type == 0) { u.setTakeAid(receiveId); u.setType(9); } else if (type == 1) { u.setTakeAid(receiveId); u.setType(10); } else if (type == 2) { u.setType(12); } u.setCreateTime(date); u.setRemarks(remarks); l.add(u); } userTransferLogMapper.insertList(l); } if (type != 2) { userLockReleaseMapper.insertChannelList(uids, receiveId); String role = userMapper.checkRoleMax(receiveId); if (role.equals(AFTConstants.SALESMAN_MANAGER)) { status = ChannelStatus.YFPJL.getCode(); } else { status = ChannelStatus.YFPYXY.getCode(); } } else { userLockReleaseMapper.updateChannelList(uids); status = ChannelStatus.HT.getCode(); } if (type == 0) { userChannelMapper.updateByuids(uids, type, date, receiveId, status); } else { userChannelMapper.updateByuids(uids, type, date, null, status); } organizationContactBookMapper.updateByUids(uids, receiveId); return 1; } @Override public boolean checkChannel(List uids) { for (String uid : uids) { List list = userFollowMapper.selectbyUid(uid, TokenManager.getAdminId()); if (!list.isEmpty()) { return true; } } return false; } @Override public boolean checkBeforeChannel(String uid) { String aid = userMapper.checkBeforeChannel(uid); if (aid != null && aid.equals(TokenManager.getAdminId())) { return true; } return false; } @Override public boolean checkRecovery(List uids) { List list = userChannelMapper.checkRecovery(uids); for (String string : list) { if (string.equals("1")) { return true; } } return false; } @Override public List selectChannelNotFollow(String aid) { Integer days = 15; return userLockReleaseMapper.selectChannelNotFollow(days,aid); } @Override public Object listChannelCounts(InputChannelCounts in) { Map params = new HashMap<>(); params.put("type", in.getType() == null ? 0 : in.getType()); if (StringUtils.isNotBlank(in.getStartTime())) params.put("startTime", in.getStartTime()); if (StringUtils.isNotBlank(in.getEndTime())) params.put("endTime", in.getEndTime() + " 23:59:59"); return findPage("selectChannelCountsList", "selectChannelCountsCount", params, in.getPageNo(), in.getPageSize()); } @Override public Object getUserByName(String name) { return userMapper.getUserByName(name); } @Override public Object getUserByNames(String name, Integer pageNo, Integer pageSize) { Map params = new HashMap<>(); params.put("name", name); return findPage("getUserByNameList", "getUserByNameCount", params, pageNo,pageSize); } @Override public int updateUserName(String uid, String userName) { userNamesMapper.updateAddUserName(uid,userName); UserNames un=new UserNames(); un.setAid(TokenManager.getAdminId()); un.setUid(uid); un.setName(userName); userNamesMapper.insertSelective(un); return 1; } @Override public boolean checkUserName(String userName) { int i=userNamesMapper.checkUserName(userName); if (i>0) { return true; } return false; } @Override public List listUserName(String uid) { List list=userNamesMapper.getUserList(uid); return list; } @Override public Pagination mainProductsList( InputMainProductsList in) { Map map =new HashMap<>(); map.put("aid",TokenManager.getAdminId()); if(in.getUserName()!=null)map.put("userName",in.getUserName()); if(in.getKey()!=null)map.put("key",in.getKey()); if(in.getStartTime()!=null)map.put("startTime",in.getStartTime()); if(in.getEndTime()!=null)map.put("endTime",in.getEndTime()+" 23:59:59"); if(in.getShiroType()==null){in.setShiroType(0);} else if(in.getShiroType()==2){ if(in.getAdminName()!=null)map.put("adminName",in.getAdminName()); if(in.getDepId()!=null)map.put("depId",in.getDepId()); if(in.getShareType()!=null)map.put("shareType",in.getShareType()); } map.put("shiroType",in.getShiroType()); return (Pagination) findPage("findMainProductsList","findMainProductsCount",map,in.getPageNo(),in.getPageSize()); } @Override public List userDateLogList(String uid) { return userDataLogMapper.userDateLogList(uid); } @Override public int updateuserBusinessScope(String id, String businessScope) { Date date =new Date(); OrganizationIdentity use=organizationIdentityMapper.selectByPrimaryKey(id); updateBusinessScope(use.getUid(),businessScope,use.getBusinessScope(),date); OrganizationIdentity oi=new OrganizationIdentity(); oi.setId(id); oi.setBusinessScope(businessScope); return organizationIdentityMapper.updateByPrimaryKeySelective(oi); } @Override public boolean checkData(String uid, String aid) { User u=userMapper.selectByPrimaryKey(uid); if (u.getInformationMaintainer().equals(aid)){ return true; } return false; } }