package com.goafanti.user.service.impl; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.goafanti.app.bo.UserBasicInfo; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.dao.JtCollectSearchMapper; import com.goafanti.common.dao.OrganizationIdentityMapper; import com.goafanti.common.dao.UserIdentityMapper; import com.goafanti.common.dao.UserMapper; import com.goafanti.common.enums.VoucherSourceType; import com.goafanti.common.model.JtCollectSearch; import com.goafanti.common.model.JtVoucherDetail; import com.goafanti.common.model.User; import com.goafanti.common.utils.InvitationCodeUtils; import com.goafanti.common.utils.StringUtils; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.JDBCIdGenerator; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.user.bo.OrgUnitNames; import com.goafanti.user.bo.UserBaseBo; import com.goafanti.user.bo.UserDownLoadBo; import com.goafanti.user.bo.UserNames; import com.goafanti.user.bo.UserPageHomeBo; import com.goafanti.user.bo.UserPartnerDetailBo; import com.goafanti.user.service.UserService; import com.goafanti.voucher.service.VoucherDetailService; import com.goafanti.voucher.service.VoucherService; @Service public class UserServiceImpl extends BaseMybatisDao implements UserService { @Autowired private UserMapper userMapper; @Autowired private OrganizationIdentityMapper organizationIdentityMapper; @Autowired private UserIdentityMapper userIdentityMapper; @Autowired private JtCollectSearchMapper jtCollectSearchMapper; @Autowired private VoucherService voucherService; @Autowired private VoucherDetailService voucherDetailService; @Resource private JDBCIdGenerator jDBCIdGenerator; @Value(value="${collect_flag}") private boolean collectFlag; @Override @Transactional public User insertRegister(User user, String unitName, String userName) { userMapper.insert(user); /*if (null != user.getType() && UserType.ORGANIZATION.getCode().equals(user.getType())) { OrganizationIdentity organizationIdentity = new OrganizationIdentity(); organizationIdentity.setUid(user.getId()); organizationIdentity.setUnitName(StringUtils.isBlank(unitName) ? "" : unitName); 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())) { UserIdentity ui = new UserIdentity(); ui.setId(UUID.randomUUID().toString()); ui.setUid(user.getId()); ui.setAuditStatus(0); ui.setProcess(0); ui.setWrongCount(0); ui.setUsername(StringUtils.isBlank(userName) ? "" : userName); userIdentityMapper.insert(ui); }*/ return user; } @Override public User selectByMobieAndType(String mobile, Integer type) { return userMapper.selectByMobieAndType(mobile, type); } @Override public User selectByNameAndType(String username, Integer type){ return userMapper.selectByNameAndType(username,type); } @Override public User selectByPrimaryKey(String id) { return userMapper.selectByPrimaryKey(id); } @Override public int updateByPrimaryKeySelective(User u) { JtCollectSearch j=new JtCollectSearch(); j.setRowId(u.getId()); j.setTitle(u.getNickname()); if(collectFlag && null != u.getNickname())jtCollectSearchMapper.updateByRowIdSelective(j);//企业暂时不需要修改全局搜索表 return userMapper.updateByPrimaryKeySelective(u); } @Override public User insert(User user) { userMapper.insert(user); return user; } @Override public UserPageHomeBo selectUserPageHomeBoByUserId(String uid) { UserBaseBo baseBo = userMapper.selectUserBaseByUserId(uid); UserPageHomeBo homeBo = new UserPageHomeBo(); /*homeBo.setPatentNum(patentInfoMapper.findPatentInfoNumByUid(uid)); homeBo.setCopyrightNum(copyrightInfoMapper.findCopyrightInfoNumByUid(uid)); homeBo.setTechProjectNum(techProjectMapper.findTechProjectNumByUid(uid)); homeBo.setIntellectualPropertyNum(orgIntellectualPropertyMapper.findIntellectualPropertyNum(uid));*/ BeanUtils.copyProperties(baseBo, homeBo); return homeBo; } @Override public UserDownLoadBo selectUserDownLoadBoByUserId(String id) { return userMapper.selectUserDownLoadBoByUserId(id); } @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) || TokenManager.hasRole(AFTConstants.TECHBROKER) || TokenManager.hasRole(AFTConstants.AUDITORADMIN)) { 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) || TokenManager.hasRole(AFTConstants.AUDITORADMIN)) { 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 @Cacheable(value = "UserNumberCache", key = "'UserNumberCache:UID:'+#userId") public String selectNumberByPrimaryKey(String userId) { return String.valueOf(userMapper.selectNumberByPrimaryKey(userId)); } @Override public UserBasicInfo selectBaseInfo() { if(TokenManager.getToken() instanceof User)return userMapper.selectBaseInfo(TokenManager.getUserId()); return null; } @Override public List selectUserByRoleName(String roleName){ return userMapper.selectUserByRoleName(roleName); } @Override public User selectByNumber(String easemobName) { return userMapper.selectByNumber(easemobName); } @Override public UserBaseBo selectUserBase(String userId) { return userMapper.selectUserBaseByUserId(userId); } @Override public UserPartnerDetailBo findUserPartnerDetail(String uid) { return userMapper.findUserPartnerDetail(uid); } @Override public List findUserPartner() { return userMapper.findUserPartner(); } @Override public Integer selectByMobieAndTypeCount(String mobile ) { return userMapper.selectByMobieAndTypeCount(mobile); } @SuppressWarnings("unchecked") @Override public Pagination getUserInfo(User user, Integer pageNo, Integer pageSize) { Map params = new HashMap(); params.put("user", user); return (Pagination) findPage("getUserInfoList", "getUserInfoCount", params, pageNo, pageSize); } @Override public int getCountByMobile(String id,String mobile,Integer type) { return userMapper.getCountByMobile(id,mobile,type); } @Override public String updateGetInvitationCode(String uid) { String str=userMapper.getInvitationCode(uid); if (str==null) { str=InvitationCodeUtils.toSerialCode(new Date().getTime()); User u=new User(); u.setId(uid); u.setToInviteCode(str); userMapper.updateByPrimaryKeySelective(u); } return str; } @Override public void saveVoucher(User us) { if (StringUtils.isNotBlank(us.getBeInviteCode())) { List ids=voucherService.getSourceVoucher(VoucherSourceType.BYQGR.getCode()); for (String s : ids) { JtVoucherDetail j=new JtVoucherDetail(); j.setId(jDBCIdGenerator.generateId().toString()); j.setReceiveTime(new Date()); j.setVoucherId(s); j.setUseUid(us.getId()); j.setStatus(0); voucherDetailService.saveVoucherDetail(j); } User toUser=userMapper.getToInviteCode(us.getBeInviteCode()); List ids2=voucherService.getSourceVoucher(VoucherSourceType.YQGR.getCode()); for (String string : ids2) { JtVoucherDetail j=new JtVoucherDetail(); j.setId(jDBCIdGenerator.generateId().toString()); j.setReceiveTime(new Date()); j.setVoucherId(string); j.setUseUid(toUser.getId()); j.setStatus(0); voucherDetailService.saveVoucherDetail(j); } } } }