|
|
@@ -2,24 +2,28 @@ package com.uas.platform.b2bManage.service.impl;
|
|
|
|
|
|
import com.uas.platform.b2bManage.core.util.StringUtils;
|
|
|
import com.uas.platform.b2bManage.dao.EnterpriseBaseInfoDao;
|
|
|
+import com.uas.platform.b2bManage.dao.InvitationRecordDao;
|
|
|
import com.uas.platform.b2bManage.dao.InviteDao;
|
|
|
import com.uas.platform.b2bManage.dao.UserBaseInfoDao;
|
|
|
-import com.uas.platform.b2bManage.model.EnterpriseBaseInfo;
|
|
|
-import com.uas.platform.b2bManage.model.Invite;
|
|
|
-import com.uas.platform.b2bManage.model.UserBaseInfo;
|
|
|
+import com.uas.platform.b2bManage.model.*;
|
|
|
import com.uas.platform.b2bManage.page.exception.IllegalOperatorException;
|
|
|
import com.uas.platform.b2bManage.service.InviteService;
|
|
|
import com.uas.platform.b2bManage.support.MyException;
|
|
|
+import com.uas.platform.b2bManage.support.MyThread;
|
|
|
+import com.uas.platform.b2bManage.support.MyThreadPoolExecutor;
|
|
|
import com.uas.platform.core.model.PageInfo;
|
|
|
+import com.uas.platform.core.model.Status;
|
|
|
import com.uas.platform.core.persistence.criteria.CriterionExpression;
|
|
|
import com.uas.platform.core.persistence.criteria.LogicalExpression;
|
|
|
import com.uas.platform.core.persistence.criteria.PredicateUtils;
|
|
|
import com.uas.platform.core.persistence.criteria.SimpleExpression;
|
|
|
+import org.apache.curator.utils.ThreadUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.ui.ModelMap;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import javax.persistence.criteria.CriteriaBuilder;
|
|
|
import javax.persistence.criteria.CriteriaQuery;
|
|
|
@@ -29,6 +33,7 @@ import java.text.ParseException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.concurrent.*;
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -49,6 +54,9 @@ public class InviteServiceImpl extends BaseService implements InviteService {
|
|
|
@Autowired
|
|
|
private UserBaseInfoDao userBaseInfoDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private InvitationRecordDao recordDao;
|
|
|
+
|
|
|
/**
|
|
|
* 通过分页信息获取邀请注册记录
|
|
|
*
|
|
|
@@ -119,19 +127,79 @@ public class InviteServiceImpl extends BaseService implements InviteService {
|
|
|
* @throws MyException 抛出异常
|
|
|
*/
|
|
|
@Override
|
|
|
- public ModelMap editInvite(Long enUU, String userMessage, String enterMessage) throws MyException {
|
|
|
+ public ModelMap editInvite(final Long enUU, String userMessage, String enterMessage) throws MyException {
|
|
|
if (StringUtils.isEmpty(userMessage) || StringUtils.isEmpty(enterMessage)) {
|
|
|
throw new MyException("邀请人或邀请企业信息不能为空");
|
|
|
}
|
|
|
// 校验用户信息
|
|
|
- Long userUU = invalidUserInfo(userMessage);
|
|
|
- Long inviteUU = invalidEnterpriseInfo(enterMessage);
|
|
|
+ final Long userUU = invalidUserInfo(userMessage);
|
|
|
+ final Long inviteUU = invalidEnterpriseInfo(enterMessage);
|
|
|
String sql = "update sec$enterprises set en_inviteuu = " + inviteUU +
|
|
|
", en_inviteuseruu = " + userUU + " where en_uu = " + enUU;
|
|
|
jdbcTemplate.execute(sql);
|
|
|
+ MyThreadPoolExecutor.executor.execute(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ // 更新邀请记录
|
|
|
+ updateInvitation(userUU, enUU, inviteUU);
|
|
|
+ }
|
|
|
+ });
|
|
|
return new ModelMap("content", inviteDao.findOne(enUU));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 更新邀请记录
|
|
|
+ *
|
|
|
+ * @param userUU 邀请用户UU
|
|
|
+ * @param enUU 被邀请企业UU
|
|
|
+ * @param inviteUU 邀请企业UU
|
|
|
+ */
|
|
|
+ private void updateInvitation(Long userUU, Long enUU, Long inviteUU) {
|
|
|
+ EnterpriseBaseInfo enterpriseBaseInfo = enterpriseBaseInfoDao.findOne(enUU);
|
|
|
+ EnterpriseBaseInfo inviteEnterprise = enterpriseBaseInfoDao.findOne(inviteUU);
|
|
|
+ UserBaseInfo userBaseInfo = userBaseInfoDao.findOne(userUU);
|
|
|
+ UserBaseInfo admin = userBaseInfoDao.findOne(enterpriseBaseInfo.getAdminUU());
|
|
|
+ List<InvitationRecord> records = recordDao.findByVendname(enterpriseBaseInfo.getEnName());
|
|
|
+ if (CollectionUtils.isEmpty(records)) {
|
|
|
+ InvitationRecord record = initRecord(enterpriseBaseInfo, inviteEnterprise, userBaseInfo, admin);
|
|
|
+ recordDao.save(record);
|
|
|
+ } else {
|
|
|
+ for (InvitationRecord record : records) {
|
|
|
+ Long id = record.getId();
|
|
|
+ record = initRecord(enterpriseBaseInfo, inviteEnterprise, userBaseInfo, admin);
|
|
|
+ record.setId(id);
|
|
|
+ }
|
|
|
+ recordDao.save(records);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 初始化邀请注册信息
|
|
|
+ *
|
|
|
+ * @param enterpriseBaseInfo 被邀请企业信息
|
|
|
+ * @param inviteEnterprise 邀请企业信息
|
|
|
+ * @param userBaseInfo 邀请用户信息
|
|
|
+ * @param admin 注册企业管理员信息
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private InvitationRecord initRecord(EnterpriseBaseInfo enterpriseBaseInfo, EnterpriseBaseInfo inviteEnterprise, UserBaseInfo userBaseInfo, UserBaseInfo admin) {
|
|
|
+ InvitationRecord record = new InvitationRecord();
|
|
|
+ record.setActive(Constant.YES);
|
|
|
+ record.setBussinesscode(inviteEnterprise.getEnBussinessCode());
|
|
|
+ record.setSource("Manage");
|
|
|
+ record.setDate(new Date(System.currentTimeMillis()));
|
|
|
+ record.setStatus(Status.DOWNLOADED.value());
|
|
|
+ record.setEnuu(inviteEnterprise.getUu());
|
|
|
+ record.setUserTel(userBaseInfo.getTel());
|
|
|
+ record.setUseruu(userBaseInfo.getUu());
|
|
|
+ record.setVendname(enterpriseBaseInfo.getEnName());
|
|
|
+ record.setVenduseremail(admin.getEmail());
|
|
|
+ record.setVendusername(admin.getName());
|
|
|
+ record.setVendusertel(admin.getTel());
|
|
|
+ record.setVenduu(enterpriseBaseInfo.getUu());
|
|
|
+ return record;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 校验用户信息
|
|
|
*
|
|
|
@@ -223,4 +291,22 @@ public class InviteServiceImpl extends BaseService implements InviteService {
|
|
|
String sql = "update sec$enterprises set en_inviteuu = null, en_inviteuseruu = null where en_uu = " + enUU;
|
|
|
jdbcTemplate.execute(sql);
|
|
|
}
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ ThreadPoolExecutor executor = new ThreadPoolExecutor(
|
|
|
+ 5,
|
|
|
+ 10,
|
|
|
+ 60,
|
|
|
+ TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(),
|
|
|
+ new MyThread(),
|
|
|
+ new ThreadPoolExecutor.AbortPolicy());
|
|
|
+ executor.execute(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ System.out.println("Tread start");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|