package com.goafanti.user.service.impl; import java.text.ParseException; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.dao.AdminLocationMapper; import com.goafanti.common.dao.CopyrightInfoMapper; import com.goafanti.common.dao.OrgIntellectualPropertyMapper; import com.goafanti.common.dao.OrganizationIdentityMapper; import com.goafanti.common.dao.PatentInfoMapper; import com.goafanti.common.dao.TechProjectMapper; import com.goafanti.common.dao.UserIdentityMapper; import com.goafanti.common.dao.UserMapper; import com.goafanti.common.enums.UserType; import com.goafanti.common.model.OrganizationIdentity; import com.goafanti.common.model.User; import com.goafanti.common.model.UserIdentity; import com.goafanti.common.utils.DateUtils; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.user.bo.OrgListBo; import com.goafanti.user.bo.OrgPartnerDetailBo; import com.goafanti.user.bo.OrgUnitNames; import com.goafanti.user.bo.UserDownLoadBo; import com.goafanti.user.bo.UserListBo; import com.goafanti.user.bo.UserNames; import com.goafanti.user.bo.UserPageHomeBo; import com.goafanti.user.bo.UserPartnerDetailBo; import com.goafanti.user.service.UserService; @Service public class UserServiceImpl extends BaseMybatisDao implements UserService { @Autowired private UserMapper userMapper; @Autowired private OrganizationIdentityMapper organizationIdentityMapper; @Autowired private UserIdentityMapper userIdentityMapper; @Autowired private AdminLocationMapper adminLocationMapper; @Autowired private PatentInfoMapper patentInfoMapper; @Autowired private CopyrightInfoMapper copyrightInfoMapper; @Autowired private TechProjectMapper techProjectMapper; @Autowired private OrgIntellectualPropertyMapper orgIntellectualPropertyMapper; @Override public User insertRegister(User user, String contacts, String unitName, String username) { userMapper.insert(user); if (null != user.getType() && UserType.ORGANIZATION.getCode().equals(user.getType())) { if (!StringUtils.isBlank(unitName) || !StringUtils.isBlank(contacts)) { OrganizationIdentity organizationIdentity = new OrganizationIdentity(); organizationIdentity.setUid(user.getId()); organizationIdentity.setUnitName(StringUtils.isBlank(unitName) ? "" : unitName); organizationIdentity.setContacts(StringUtils.isBlank(contacts) ? "" : contacts); organizationIdentity.setId(UUID.randomUUID().toString()); organizationIdentity.setIdentityType(0); organizationIdentity.setAuditStatus(0); organizationIdentity.setProcess(0); organizationIdentity.setWrongCount(0); organizationIdentity.setListed(0); organizationIdentity.setListedType(0); organizationIdentityMapper.insert(organizationIdentity); } } if (null != user.getType() && UserType.PERSONAL.getCode().equals(user.getType()) && StringUtils.isNotBlank(username)) { UserIdentity ui = new UserIdentity(); ui.setId(UUID.randomUUID().toString()); ui.setUid(user.getId()); ui.setAuditStatus(0); ui.setProcess(0); ui.setWrongCount(0); ui.setUsername(username); userIdentityMapper.insert(ui); } return user; } @Override public User selectByMobieAndType(java.lang.String mobile, Integer type) { return userMapper.selectByMobieAndType(mobile, type); } @Override public User selectByPrimaryKey(String id) { return userMapper.selectByPrimaryKey(id); } @Override public int updateByPrimaryKeySelective(User u) { return userMapper.updateByPrimaryKeySelective(u); } @Override public User insert(User user) { userMapper.insert(user); return user; } @Override public int updateByPrimaryKey(User u) { return userMapper.updateByPrimaryKey(u); } @Override public UserPageHomeBo selectUserPageHomeBoByUserId(String uid) { UserPageHomeBo bo = userMapper.selectUserPageHomeBoByUserId(uid); bo.setPatentNum(patentInfoMapper.findPatentInfoNumByUid(uid)); bo.setCopyrightNum(copyrightInfoMapper.findCopyrightInfoNumByUid(uid)); bo.setTechProjectNum(techProjectMapper.findTechProjectNumByUid(uid)); bo.setIntellectualPropertyNum(orgIntellectualPropertyMapper.findIntellectualPropertyNum(uid)); return bo; } @Override public UserDownLoadBo selectUserDownLoadBoByUserId(String id) { return userMapper.selectUserDownLoadBoByUserId(id); } @SuppressWarnings("unchecked") @Override public Pagination listUser(String username, String mobile, String email, String[] pDate, Integer number, String aftUsername, Integer auditStatus, Integer pageNo, Integer pageSize) throws ParseException { Map params = new HashMap<>(); Date pStart = null; Date pEnd = null; if (null != pDate) { pStart = DateUtils.parseDate(pDate[0], AFTConstants.YYYYMMDD); if (pDate.length == 2) { pEnd = DateUtils.addDays(DateUtils.parseDate(pDate[1], AFTConstants.YYYYMMDD), 1); } } if (null != pStart) { params.put("pStart", pStart); } if (null != pEnd) { params.put("pEnd", pEnd); } if (!StringUtils.isBlank(mobile)) { params.put("mobile", mobile); } if (!StringUtils.isBlank(email)) { params.put("email", email); } if (null != number) { params.put("number", number); } if (!StringUtils.isBlank(username)) { params.put("username", username); } if (null != auditStatus) { params.put("auditStatus", auditStatus); } if (!StringUtils.isBlank(aftUsername)) { params.put("aftUsername", aftUsername); } if (pageNo == null || pageNo < 0) { pageNo = 1; } if (pageSize == null || pageSize < 0 || pageSize > 10) { pageSize = 10; } if (TokenManager.hasRole(AFTConstants.AREAADMIN) || TokenManager.hasRole(AFTConstants.MANAGERADMIN)) { List provinceList = adminLocationMapper .selectProvinceWhereCityIsNullByAdminId(TokenManager.getAdminId()); List cityList = adminLocationMapper.selectCityByAdminId(TokenManager.getAdminId()); provinceList.addAll(cityList); if (null != provinceList && provinceList.size() > 0) { params.put("provinceList", provinceList); } if (null != cityList && cityList.size() > 0) { params.put("cityList", cityList); } return (Pagination) findPage("findAreaManagerUserListByPage", "findAreaManagerUserCount", params, pageNo, pageSize); } else if (TokenManager.hasRole(AFTConstants.SUPERADMIN) || TokenManager.hasRole(AFTConstants.AUDITORADMIN)) { return (Pagination) findPage("findUserListByPage", "findUserCount", params, pageNo, pageSize); } return null; } @SuppressWarnings("unchecked") @Override public Pagination listOrg(String uid, String mobile, String email, String[] pDate, Integer number, String unitName, Integer auditStatus, Integer pageNo, Integer pageSize) throws ParseException { Map params = new HashMap<>(); Date pStart = null; Date pEnd = null; if (null != pDate && pDate.length > 0) { pStart = StringUtils.isBlank(pDate[0]) ? null : DateUtils.parseDate(pDate[0], AFTConstants.YYYYMMDD); pEnd = StringUtils.isBlank(pDate[1]) ? null : DateUtils.addDays(DateUtils.parseDate(pDate[1], AFTConstants.YYYYMMDD), 1); pStart = DateUtils.parseDate(pDate[0], AFTConstants.YYYYMMDD); if (pDate.length == 2) { pEnd = DateUtils.addDays(DateUtils.parseDate(pDate[1], AFTConstants.YYYYMMDD), 1); } } if (null != pStart) { params.put("pStart", pStart); } if (null != pEnd) { params.put("pEnd", pEnd); } if (!StringUtils.isBlank(mobile)) { params.put("mobile", mobile); } if (!StringUtils.isBlank(uid)) { params.put("uid", uid); } if (!StringUtils.isBlank(email)) { params.put("email", email); } if (null != number) { params.put("number", number); } if (!StringUtils.isBlank(unitName)) { params.put("unitName", unitName); } if (null != auditStatus) { params.put("auditStatus", auditStatus); } if (pageNo == null || pageNo < 0) { pageNo = 1; } if (pageSize == null || pageSize < 0) { pageSize = 10; } if (TokenManager.hasRole(AFTConstants.SUPERADMIN) || TokenManager.hasRole(AFTConstants.AUDITORADMIN)) { return (Pagination) findPage("findOrgListByPage", "findOrgCount", params, pageNo, pageSize); } else if (TokenManager.hasRole(AFTConstants.AREAADMIN) || TokenManager.hasRole(AFTConstants.MANAGERADMIN)) { return (Pagination) findPage("findAreaManagerOrgListByPage", "findAreaManagerOrgCount", params, pageNo, pageSize); } return null; } @SuppressWarnings("unchecked") @Override public Pagination selectUserByAid(Integer number, String mobile, Integer auditStatus, String auditName, String email, String aid, String startCreateTime, String endCreateTime, Integer type, Integer pageNo, Integer pageSize) { Map params = new HashMap<>(); if (StringUtils.isNotBlank(startCreateTime)) { try { params.put("startCreateTime", DateUtils.parseDate(startCreateTime, AFTConstants.YYYYMMDD)); } catch (ParseException e) { } } if (StringUtils.isNotBlank(endCreateTime)) { try { params.put("endCreateTime", DateUtils.addDays(DateUtils.parseDate(endCreateTime, AFTConstants.YYYYMMDD), 1)); } catch (ParseException e) { } } if (null != number) { params.put("number", number); } if (StringUtils.isNotBlank(mobile)) { params.put("mobile", mobile); } if (null != auditStatus) { params.put("auditStatus", auditStatus); } if (StringUtils.isNotBlank(auditName)) { params.put("auditName", auditName); } if (StringUtils.isNotBlank(email)) { params.put("email", email); } if (!TokenManager.hasRole(AFTConstants.SUPERADMIN)) { params.put("aid", aid); } if (pageNo == null || pageNo < 0) { pageNo = 1; } if (pageSize == null || pageSize < 0 || pageSize > 10) { pageSize = 10; } if (UserType.PERSONAL.getCode().equals(type)) { return (Pagination) findPage("findUserByAidWithParamsListByPage", "findUserByAidWithParamsCount", params, pageNo, pageSize); } else if (UserType.ORGANIZATION.getCode().equals(type)) { return (Pagination) findPage("findOrgByAidWithParamsListByPage", "findOrgByAidWithParamsCount", params, pageNo, pageSize); } return null; } @Override public List selectDemandUnitNames() { String aid = TokenManager.getAdminId(); if (TokenManager.hasRole(AFTConstants.MANAGERADMIN)) { return organizationIdentityMapper.selectManagerUnitNames(aid); } else { if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) { aid = null; } return organizationIdentityMapper.selectAllOrgIndentity(aid); } } @Override public List selectDemandUserNames() { String aid = TokenManager.getAdminId(); if (TokenManager.hasRole(AFTConstants.MANAGERADMIN)) { return userIdentityMapper.selectManagerUserNames(aid); } else { if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) { aid = null; } return userIdentityMapper.selectAllUserNames(aid); } } @Override public Map selectAchievementUserOwner(String name) { String aid = TokenManager.getAdminId(); if (TokenManager.hasRole(AFTConstants.MANAGERADMIN)) { return disposeAchievementUserOwner(userIdentityMapper.selectManagerAchievementUserOwner(aid, name)); } else { if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) { aid = null; } return disposeAchievementUserOwner(userIdentityMapper.selectAchievementUserOwner(aid, name)); } } public List selectAchievementOrgOwner(String name) { String aid = TokenManager.getAdminId(); if (TokenManager.hasRole(AFTConstants.MANAGERADMIN)) { return organizationIdentityMapper.selectManagerAchievementOrgOwner(aid, name); } else { if (TokenManager.hasRole(AFTConstants.SUPERADMIN) || TokenManager.hasRole(AFTConstants.TECHBROKER)) { aid = null; } return organizationIdentityMapper.selectAchievementOrgOwner(aid, name); } } private Map disposeAchievementUserOwner(List list) { Map map = new HashMap<>(); if (null != list && list.size() > 0) { for (UserNames u : list) { map.put(u.getUid(), u.getUsername() + " " + u.getMobile()); } } return map; } @Override public String findUserNameByNameAndMobile(String name, String mobile) { return userMapper.findUserByNameAndMobile(name, mobile); } @Override public String findOrgNameByNameAndMobile(String name, String mobile) { return userMapper.findOrgByNameAndMobile(name, mobile); } @Override public UserPartnerDetailBo findUserPartnerDetail(String uid) { return userMapper.findUserPartnerDetail(uid, TokenManager.getUserId()); } @Override public OrgPartnerDetailBo findOrgPartnerDetail(String uid) { return userMapper.findOrgPartnerDetail(uid, TokenManager.getUserId()); } }