package com.uas.sso.service.impl; import com.uas.message.mail.service.MailService; import com.uas.message.sms.service.SmsService; import com.uas.sso.core.Const; import com.uas.sso.core.Status; import com.uas.sso.dao.PartnershipRecordDao; import com.uas.sso.dao.UserDao; import com.uas.sso.dao.UserspaceDao; import com.uas.sso.entity.*; import com.uas.sso.exception.VisibleError; import com.uas.sso.logging.LoggerManager; import com.uas.sso.logging.PartnershipBufferedLogger; import com.uas.sso.service.*; import com.uas.sso.support.SystemSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.ui.ModelMap; import org.springframework.util.StringUtils; import javax.persistence.criteria.*; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; @Service public class PartnershipServiceImpl implements PartnershipService { @Autowired private UserspaceService userSpaceService; @Autowired private UserService userService; @Autowired private PartnershipRecordDao partnershipRecordDao; @Autowired private UserspaceDao userSpaceDao; @Autowired private SettingService settingService; @Autowired private MailService mailService; @Autowired private SmsService smsService; @Autowired private UserDao userDao; @Autowired private AppService appService; PartnershipBufferedLogger partnershipLog = LoggerManager.getLogger(PartnershipBufferedLogger.class); @Override public void sendRequestBySpaceUU(Long spaceUU) { // 获取申请者和被申请者企业uu号 Userspace vendUserSpace = userSpaceService.findOne(spaceUU); UserAccount loginUser = SystemSession.getUserAccount(); if (loginUser == null) { throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); } User custUser = userService.findOne(loginUser.getUserUU()); Userspace custUserSpace = userSpaceService.findOne(loginUser.getSpaceUU()); if (spaceUU.equals(loginUser.getSpaceUU())) { throw new VisibleError("不能添加自己企业为合作伙伴"); } // 判断两个企业是否已经申请合作伙伴关系 PartnershipRecord oldSendRecord = partnershipRecordDao.findByCustSpaceUUAndVendSpaceUU(custUserSpace.getSpaceUU(), vendUserSpace.getSpaceUU()); if (oldSendRecord != null) { if (oldSendRecord.getStatusCode().equals(Status.UNAUDIT.getCode())) { throw new VisibleError("对该企业的申请已经存在,请不要重复申请"); } if (oldSendRecord.getStatusCode().equals(Status.ENABLED.getCode())) { throw new VisibleError("该企业已经同意您的申请,请不要重复申请"); } } // 判断被申请者有没有发出申请 PartnershipRecord oldReceiveRecord = partnershipRecordDao.findByCustSpaceUUAndVendSpaceUU(vendUserSpace.getSpaceUU(), custUserSpace.getSpaceUU()); if (oldReceiveRecord != null) { if (!oldReceiveRecord.getStatusCode().equals(Status.UNAPPLY.getCode())) { throw new VisibleError("该企业已经向您发出了申请,请注意查看您收到的申请记录"); } } // 未申请或拒绝状态,添加一条记录 PartnershipRecord record = new PartnershipRecord(loginUser.getAppId(), vendUserSpace, custUserSpace); record.setStatusCode(Status.UNAUDIT.getCode()); record.setStatus(Status.UNAUDIT.getPhrase()); record.setCustSpaceUU(custUserSpace.getSpaceUU()); record.setVendSpaceUU(vendUserSpace == null ? null : vendUserSpace.getSpaceUU()); record.setRequestDate(new Timestamp(System.currentTimeMillis())); // 可能发送过申请,添加id record.setId(oldSendRecord == null ? oldReceiveRecord == null ? null : oldReceiveRecord.getId() : oldSendRecord.getId()); partnershipRecordDao.save(record); partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")向" + record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")发出了建立合作关系的申请"); } @Override public Page findAllSendUnAudit(String name, String businessCode, String custUserName, int pageNumber, int pageSize) { UserAccount loginUser = SystemSession.getUserAccount(); if (loginUser == null) { throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); } Pageable pageable = new PageRequest(pageNumber, pageSize); return partnershipRecordDao.findAll(new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList<>(); list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name)); list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode)); list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName)); list.add(cb.equal(root.get("status").as(Short.class), Status.UNAUDIT.getCode())); Predicate[] predicates = new Predicate[list.size()]; predicates = list.toArray(predicates); return cb.and(predicates); } }, pageable); } @Override public Page findAllSendEnable(String name, String businessCode, String custUserName, int pageNumber, int pageSize) { UserAccount loginUser = SystemSession.getUserAccount(); if (loginUser == null) { throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); } Pageable pageable = new PageRequest(pageNumber, pageSize); return partnershipRecordDao.findAll(new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList<>(); list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name)); list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode)); list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName)); list.add(cb.equal(root.get("status").as(Short.class), Status.ENABLED.getCode())); Predicate[] predicates = new Predicate[list.size()]; predicates = list.toArray(predicates); return cb.and(predicates); } }, pageable); } @Override public Page findAllSendUnApply(String name, String businessCode, String custUserName, int pageNumber, int pageSize) { UserAccount loginUser = SystemSession.getUserAccount(); if (loginUser == null) { throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); } Pageable pageable = new PageRequest(pageNumber, pageSize); return partnershipRecordDao.findAll(new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList<>(); list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name)); list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode)); list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName)); list.add(cb.equal(root.get("status").as(Short.class), Status.UNAPPLY.getCode())); Predicate[] predicates = new Predicate[list.size()]; predicates = list.toArray(predicates); return cb.and(predicates); } }, pageable); } @Override public Page findAllReceivedUnAudit(String name, String businessCode, String custUserName, int pageNumber, int pageSize) { UserAccount loginUser = SystemSession.getUserAccount(); if (loginUser == null) { throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); } Pageable pageable = new PageRequest(pageNumber, pageSize); return partnershipRecordDao.findAll(new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList<>(); list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name)); list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode)); list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName)); list.add(cb.equal(root.get("status").as(Short.class), Status.UNAUDIT.getCode())); Predicate[] predicates = new Predicate[list.size()]; predicates = list.toArray(predicates); return cb.and(predicates); } }, pageable); } // // @Override // public Page findAllReceivedEnable(String name, String businessCode, String custUserName, // int pageNumber, int pageSize) { // User user = SystemSession.getUser(); // if (user == null) { // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); // } // return partnershipRecordDao.findAllReceivedView(pageNumber, businessCode, custUserName, pageSize, name, // user.getSpaceUID(), Status.ENABLED.value()); // } // // @Override // public Page findAllReceivedUnApply(String name, String businessCode, String custUserName, // int pageNumber, int pageSize) { // User user = SystemSession.getUser(); // if (user == null) { // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); // } // return partnershipRecordDao.findAllReceivedView(pageNumber, businessCode, custUserName, pageSize, name, // user.getSpaceUID(), Status.UNAPPLY.value()); // } // // @Override // public PartnershipRecord findSendRequestById(Long id) { // return partnershipRecordDao.findById(id); // } // // @Override // public PartnershipRecord findReceivedRequestById(Long id) { // return partnershipRecordDao.findById(id); // } // // @Override // public void enable(Long id) { // User user = SystemSession.getUser(); // PartnershipRecord partner = partnershipRecordDao.findById(id); // if (user == null) { // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); // } // if (partner == null) { // throw new VisibleError("未找到该企业信息"); // } // if (partner != null && user != null) { // logger.info(user.getName() + "同意了" + partner.getCustName() + "的请求"); // partner.setStatus(Status.ENABLED.getPhrase()); // partner.setStatusCode(Status.ENABLED.value()); // partner.setOperateDate(new Date()); // partner.setVendUserCode(user.getDialectUID()); // partner.setVendUserTel(user.getUid()); // partner.setVendUserEmail(user.getSecondUID()); // partner.setVendUserName(user.getName()); // partner.setId(id); // partnershipRecordDao.save(partner); // } // // } // // @Override // public void disable(Long id, String reason) { // User user = SystemSession.getUser(); // if (user == null) { // throw new VisibleError("未检测到当期用户信息,请先通过UAS系统或商务平台登录"); // } else { // PartnershipRecord partner = partnershipRecordDao.findById(id); // logger.info(user.getName() + "拒绝了" + partner.getCustName() + "的请求"); // partner.setStatus(Status.UNAPPLY.getPhrase()); // partner.setStatusCode(Status.UNAPPLY.value()); // partner.setReason(reason); // partner.setOperateDate(new Date()); // partner.setVendUserCode(user.getDialectUID()); // partner.setVendUserName(user.getName()); // partner.setVendUserEmail(user.getSecondUID()); // partner.setVendUserName(user.getName()); // partner.setId(id); // partnershipRecordDao.save(partner); // } // } // // @Override // public void resendRequestById(Long id) { // User user = SystemSession.getUser(); // if (user == null) { // throw new VisibleError("未检测到当期用户信息,请先通过UAS系统或商务平台登录"); // } else { // PartnershipRecord partner = partnershipRecordDao.findById(id); // logger.info(user.getDialectUID() + "向" + partner.getVendName() + "发出了建立合作关系的申请"); // partner.setStatus(Status.UNAUDIT.getPhrase()); // partner.setStatusCode(Status.UNAUDIT.value()); // partner.setRequestDate(new Date()); // partner.setCustUserCode(user.getDialectUID()); // partner.setCustUserEmail(user.getSecondUID()); // partner.setCustUserName(user.getName()); // partner.setCustUserTel(user.getUid()); // partnershipRecordDao.save(partner); // } // } // // @Override // public PartnershipRecord findBycustUIDAndVendUID(String custuid, String venduid) { // User user = SystemSession.getUser(); // if (user == null) { // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); // } // return partnershipRecordDao.findByCustUIDAndVendUID(custuid, venduid); // } // // @Override // public ModelMap getsendRequestCount() { // User user = SystemSession.getUser(); // if(user==null){ // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); // } // ModelMap map = new ModelMap("全部", partnershipRecordDao.getAllSendCount(user.getSpaceUID())); // map.addAllAttributes(partnershipRecordDao.getSendRequestCount(user.getSpaceUID())); // return map; // } // // @Override // public ModelMap getreceivedRequestCount() { // User user = SystemSession.getUser(); // if (user == null) { // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录"); // } // ModelMap map = new ModelMap("全部", partnershipRecordDao.getAllReceivedCount(user.getSpaceUID())); // map.addAllAttributes(partnershipRecordDao.getReceivedRequestCount(user.getSpaceUID())); // return map; // } // @Override public Page findByBusinessCodeAndStatusCode(String businessCode, Integer statusCode, String keyword, int pageNumber, int pageSize) { Pageable pageable = new PageRequest(pageNumber, pageSize); return partnershipRecordDao.findAll(new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { // 添加排序 Predicate preStatusCode = cb.equal(root.get("statusCode").as(Short.class), statusCode); query.orderBy(cb.desc(root.get("statusCode"))); // 营业执照号为空,则查询所有的 if (StringUtils.isEmpty(businessCode)) { if (!StringUtils.isEmpty(statusCode)) { query.where(cb.and(preStatusCode)); } return query.getRestriction(); } // 精确查询条件 Predicate preVendBusinessCode = cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode); Predicate preCustBusinessCode = cb.equal(root.join("custSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode); // 关键词为空,只根据营业执照号查询 if (StringUtils.isEmpty(keyword)) { if (!StringUtils.isEmpty(statusCode)) { query.where(cb.and(preStatusCode, cb.or(preVendBusinessCode, preCustBusinessCode))); return query.getRestriction(); } query.where(cb.or(preVendBusinessCode, preCustBusinessCode)); return query.getRestriction(); } // 申请人模糊查询条件 List keyCustPredicates = new ArrayList(); keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), "%" + keyword + "%")); keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("businessCode").as(String.class), "%" + keyword + "%")); keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("profession").as(String.class), "%" + keyword + "%")); keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("tags").as(String.class), "%" + keyword + "%")); keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("spaceUU").as(String.class), "%" + keyword + "%")); keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("regAddress").as(String.class), "%" + keyword + "%")); keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("vipName").as(String.class), "%" + keyword + "%")); keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("mobile").as(String.class), "%" + keyword + "%")); keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("email").as(String.class), "%" + keyword + "%")); // 接收人模糊查询条件 List keyVendPredicates = new ArrayList(); keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), "%" + keyword + "%")); keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), "%" + keyword + "%")); keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("profession").as(String.class), "%" + keyword + "%")); keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("tags").as(String.class), "%" + keyword + "%")); keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("spaceUU").as(String.class), "%" + keyword + "%")); keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("regAddress").as(String.class), "%" + keyword + "%")); keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("admin").get("vipName").as(String.class), "%" + keyword + "%")); keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("admin").get("mobile").as(String.class), "%" + keyword + "%")); keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("admin").get("email").as(String.class), "%" + keyword + "%")); Predicate[] custPredicates = new Predicate[keyCustPredicates.size()]; Predicate[] vendPredicates = new Predicate[keyVendPredicates.size()]; if (!StringUtils.isEmpty(statusCode)) { query.where(cb.and(preStatusCode, cb.or(cb.and(preVendBusinessCode, cb.or(keyCustPredicates.toArray(custPredicates))), cb.and(preCustBusinessCode, cb.or(keyVendPredicates.toArray(vendPredicates)))))); return query.getRestriction(); } query.where(cb.and(cb.or(cb.and(preVendBusinessCode, cb.or(keyCustPredicates.toArray(custPredicates))), cb.and(preCustBusinessCode, cb.or(keyVendPredicates.toArray(vendPredicates)))))); return query.getRestriction(); } }, pageable); } // // @Override // public Page findBySpaceUidAndStatusCodeFilterByPartnerUUs(String businessCode, Integer statusCode, String keyword, List partnerUUs, // int pageNumber, int pageSize) { // return partnershipRecordDao.findBySpaceUidAndStatusCodeFilterByPartnerUUs(businessCode, statusCode, keyword, partnerUUs, pageNumber, // pageSize); // } @Override public void addPartner(PartnershipRecord record) { // 根据营业执照号获取申请记录 String custBusinessCode = StringUtils.isEmpty(record.getCustBusinessCode()) ? record.getCustSpace() == null ? null : record.getCustSpace().getBusinessCode() : record.getCustBusinessCode(); String vendBusinessCode = StringUtils.isEmpty(record.getVendBusinessCode()) ? record.getVendSpace() == null ? null : record.getVendSpace().getBusinessCode() : record.getVendBusinessCode(); if (custBusinessCode == null || vendBusinessCode == null) { throw new VisibleError("参数错误"); } PartnershipRecord oldSendRecord = partnershipRecordDao.findByBusinessCode(custBusinessCode, vendBusinessCode); PartnershipRecord oldReceiveRecord = partnershipRecordDao.findByBusinessCode(vendBusinessCode, custBusinessCode); // 判断是否为已申请或已同意状态 if (oldSendRecord != null && !oldSendRecord.getStatusCode().equals(Status.UNAPPLY.getCode())) { if (oldSendRecord.getStatusCode().equals(Status.UNAUDIT.getCode())) { throw new VisibleError("对该企业的申请已发出,请耐心等待对方审核"); } if (oldSendRecord.getStatusCode().equals(Status.ENABLED.getCode())) { throw new VisibleError("您们已是合作伙伴,请不要重复申请"); } } if (oldReceiveRecord != null && !oldReceiveRecord.getStatusCode().equals(Status.UNAPPLY.getCode())) { if (oldReceiveRecord.getStatusCode().equals(Status.UNAUDIT.getCode())) { throw new VisibleError("该企业已经向您发出了申请,请注意查看您收到的申请记录"); } if (oldReceiveRecord.getStatusCode().equals(Status.ENABLED.getCode())) { throw new VisibleError("您们已是合作伙伴,请不要重复申请"); } } // 未开通商务平台,提醒开通 Userspace castSpace = userSpaceService.findByBusinessCode(custBusinessCode); Userspace vendSpace = userSpaceService.findByBusinessCode(vendBusinessCode); if (vendSpace == null) { ModelMap data = new ModelMap(); data.put("vendorusername", record.getVendUserName()); data.put("vendorname", record.getVendSpaceName()); data.put("custname", castSpace.getSpaceName()); Setting mailTplId = settingService.findOne("templateForSendEmailWhenAddPartner"); if (!StringUtils.isEmpty(mailTplId) && !StringUtils.isEmpty(vendSpace.getAdmin().getEmail())) { mailService.send(mailTplId.getValue(), record.getVendUserEmail(), data); } Setting smsTplId = settingService.findOne("templateForSendSmsWhenAddPartner"); if (!StringUtils.isEmpty(smsTplId) && !StringUtils.isEmpty(vendSpace.getAdmin().getMobile())) { smsService.send(smsTplId.getValue(), vendSpace.getAdmin().getMobile(), new Object[] { record.getVendUserName(), record.getVendSpaceName(), castSpace.getSpaceName() }); } } // 未申请或拒绝状态,添加一条记录 PartnershipRecord newRecord = new PartnershipRecord(record.getAppId(), vendSpace, castSpace); record.setStatusCode(Status.UNAUDIT.getCode()); record.setStatus(Status.UNAUDIT.getPhrase()); record.setRequestDate(new Timestamp(System.currentTimeMillis())); record.setId(oldSendRecord == null ? oldReceiveRecord == null ? null : oldReceiveRecord.getId() : oldSendRecord.getId()); partnershipRecordDao.save(record); partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")向" + record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")发出了建立合作关系的申请"); } @Override public ModelMap synchronizePartner(PartnershipRecord record) { ModelMap map = new ModelMap(); PartnershipRecord oldSendRecord = partnershipRecordDao.findByBusinessCode(record.getCustBusinessCode(), record.getVendBusinessCode()); PartnershipRecord oldReceiveRecord = partnershipRecordDao.findByBusinessCode(record.getVendBusinessCode(), record.getCustBusinessCode()); if (oldSendRecord != null && !oldSendRecord.getStatusCode().equals(Status.ENABLED.getCode())) { oldSendRecord.setStatusCode(Status.ENABLED.getCode()); oldSendRecord.setStatus(Status.ENABLED.getPhrase()); oldSendRecord.setRequestDate(new Timestamp(System.currentTimeMillis())); oldSendRecord.setOperateDate(new Timestamp(System.currentTimeMillis())); partnershipRecordDao.save(oldSendRecord); partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")与" + record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")通过单据交易建立了合作关系"); } if (oldReceiveRecord != null && !oldReceiveRecord.getStatusCode().equals(Status.ENABLED.getCode())) { oldReceiveRecord.setStatusCode(Status.ENABLED.getCode()); oldReceiveRecord.setStatus(Status.ENABLED.getPhrase()); oldReceiveRecord.setRequestDate(new Timestamp(System.currentTimeMillis())); oldReceiveRecord.setOperateDate(new Timestamp(System.currentTimeMillis())); partnershipRecordDao.save(oldReceiveRecord); partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")与" + record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")通过单据交易建立了合作关系"); } if (oldSendRecord == null && oldReceiveRecord == null) { Userspace custSpace = userSpaceService.findByBusinessCode(record.getCustBusinessCode()); Userspace vendSpace = userSpaceService.findByBusinessCode(record.getVendBusinessCode()); record.setStatusCode(Status.ENABLED.getCode()); record.setStatus(Status.ENABLED.getPhrase()); record.setRequestDate(new Timestamp(System.currentTimeMillis())); record.setOperateDate(new Timestamp(System.currentTimeMillis())); record.setCustSpaceUU(custSpace == null ? null : custSpace.getSpaceUU()); record.setVendSpaceUU(vendSpace == null ? null : vendSpace.getSpaceUU()); partnershipRecordDao.save(record); partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")与" + record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")通过单据交易建立了合作关系"); map.put("success", "建立合作关系成功"); } return map; } @Override public ModelMap acceptRequest(Long id, String vendUserTel, String appId) { PartnershipRecord record = partnershipRecordDao.findOne(id); ModelMap map = new ModelMap(); User user = userService.findByMobile(vendUserTel); record.setAppId(appId); record.setOperateDate(new Timestamp(System.currentTimeMillis())); record.setVendUserName(user.getVipName()); record.setStatus(Status.ENABLED.getPhrase()); record.setStatusCode(Status.ENABLED.getCode()); partnershipRecordDao.save(record); map.put("success", "审核成功"); return map; } @Override public ModelMap rejectRequest(Long id, String reason, String vendUserTel, String appId) { PartnershipRecord record = partnershipRecordDao.findOne(id); ModelMap map = new ModelMap(); User user = userDao.findByMobile(vendUserTel); record.setAppId(appId); record.setOperateDate(new Timestamp(System.currentTimeMillis())); record.setVendUserName(user.getVipName()); record.setStatus(Status.UNAPPLY.getPhrase()); record.setStatusCode(Status.UNAPPLY.getCode()); record.setReason(reason); partnershipRecordDao.save(record); map.put("success", "审核成功"); return map; } @Override public RequestStatus getRequestByBusinessCode(String custBusinessCode, String vendBusinessCode) { RequestStatus request = new RequestStatus(); // 发出申请 PartnershipRecord receivedRequest = partnershipRecordDao.findByBusinessCode(custBusinessCode, vendBusinessCode); if (receivedRequest != null) { request.setCustBusinessCode(receivedRequest.getCustSpace().getBusinessCode()); request.setCustUU(receivedRequest.getCustSpace().getSpaceUU()); request.setVendBusinessCode(receivedRequest.getVendSpace().getBusinessCode()); request.setVendUU(receivedRequest.getVendSpace().getSpaceUU()); request.setStatusCode(receivedRequest.getStatusCode()); request.setMethod(Const.NO); if (receivedRequest.getStatusCode() == Status.UNAUDIT.getCode()) { request.setNeedAgreed(Const.YES); } else { request.setNeedAgreed(Const.NO); } } // 收到申请 PartnershipRecord sendRequest = partnershipRecordDao.findByBusinessCode(vendBusinessCode, custBusinessCode); if (sendRequest != null) { request.setCustBusinessCode(receivedRequest.getCustSpace().getBusinessCode()); request.setCustUU(receivedRequest.getCustSpace().getSpaceUU()); request.setVendBusinessCode(receivedRequest.getVendSpace().getBusinessCode()); request.setVendUU(receivedRequest.getVendSpace().getSpaceUU()); request.setStatusCode(sendRequest.getStatusCode()); request.setMethod(Const.YES); request.setNeedAgreed(Const.NO); } return request; } @Override public ModelMap getRequestTodo(String businessCode) { ModelMap map = new ModelMap(); map.put("todo", partnershipRecordDao.getRequestTodo(businessCode)); return map; } @Override public void invite(InvitationRecord record) { PartnershipRecord partnershipRecord = new PartnershipRecord(); // partnershipRecordDao.saveInvitation(record); } }