|
|
@@ -0,0 +1,579 @@
|
|
|
+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<PartnershipRecord> 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<PartnershipRecord>() {
|
|
|
+ @Override
|
|
|
+ public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
|
|
|
+ List<Predicate> 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<PartnershipRecord> 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<PartnershipRecord>() {
|
|
|
+ @Override
|
|
|
+ public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
|
|
|
+ List<Predicate> 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<PartnershipRecord> 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<PartnershipRecord>() {
|
|
|
+ @Override
|
|
|
+ public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
|
|
|
+ List<Predicate> 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<PartnershipRecord> 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<PartnershipRecord>() {
|
|
|
+ @Override
|
|
|
+ public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
|
|
|
+ List<Predicate> 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<PartnershipRecord> 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<PartnershipRecord> 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<PartnershipRecord> findByBusinessCodeAndStatusCode(String businessCode, Integer statusCode, String keyword,
|
|
|
+ int pageNumber, int pageSize) {
|
|
|
+ Pageable pageable = new PageRequest(pageNumber, pageSize);
|
|
|
+ return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
|
|
|
+ @Override
|
|
|
+ public Predicate toPredicate(Root<PartnershipRecord> 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<Predicate> keyCustPredicates = new ArrayList<Predicate>();
|
|
|
+ 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<Predicate> keyVendPredicates = new ArrayList<Predicate>();
|
|
|
+ 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<PartnershipRecord> findBySpaceUidAndStatusCodeFilterByPartnerUUs(String businessCode, Integer statusCode, String keyword, List<Long> 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);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|