PartnershipServiceImpl.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579
  1. package com.uas.sso.service.impl;
  2. import com.uas.message.mail.service.MailService;
  3. import com.uas.message.sms.service.SmsService;
  4. import com.uas.sso.core.Const;
  5. import com.uas.sso.core.Status;
  6. import com.uas.sso.dao.PartnershipRecordDao;
  7. import com.uas.sso.dao.UserDao;
  8. import com.uas.sso.dao.UserspaceDao;
  9. import com.uas.sso.entity.*;
  10. import com.uas.sso.exception.VisibleError;
  11. import com.uas.sso.logging.LoggerManager;
  12. import com.uas.sso.logging.PartnershipBufferedLogger;
  13. import com.uas.sso.service.*;
  14. import com.uas.sso.support.SystemSession;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.data.domain.Page;
  17. import org.springframework.data.domain.PageRequest;
  18. import org.springframework.data.domain.Pageable;
  19. import org.springframework.data.domain.Sort;
  20. import org.springframework.data.jpa.domain.Specification;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.ui.ModelMap;
  23. import org.springframework.util.StringUtils;
  24. import javax.persistence.criteria.*;
  25. import java.sql.Timestamp;
  26. import java.util.ArrayList;
  27. import java.util.List;
  28. @Service
  29. public class PartnershipServiceImpl implements PartnershipService {
  30. @Autowired
  31. private UserspaceService userSpaceService;
  32. @Autowired
  33. private UserService userService;
  34. @Autowired
  35. private PartnershipRecordDao partnershipRecordDao;
  36. @Autowired
  37. private UserspaceDao userSpaceDao;
  38. @Autowired
  39. private SettingService settingService;
  40. @Autowired
  41. private MailService mailService;
  42. @Autowired
  43. private SmsService smsService;
  44. @Autowired
  45. private UserDao userDao;
  46. @Autowired
  47. private AppService appService;
  48. PartnershipBufferedLogger partnershipLog = LoggerManager.getLogger(PartnershipBufferedLogger.class);
  49. @Override
  50. public void sendRequestBySpaceUU(Long spaceUU) {
  51. // 获取申请者和被申请者企业uu号
  52. Userspace vendUserSpace = userSpaceService.findOne(spaceUU);
  53. UserAccount loginUser = SystemSession.getUserAccount();
  54. if (loginUser == null) {
  55. throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  56. }
  57. User custUser = userService.findOne(loginUser.getUserUU());
  58. Userspace custUserSpace = userSpaceService.findOne(loginUser.getSpaceUU());
  59. if (spaceUU.equals(loginUser.getSpaceUU())) {
  60. throw new VisibleError("不能添加自己企业为合作伙伴");
  61. }
  62. // 判断两个企业是否已经申请合作伙伴关系
  63. PartnershipRecord oldSendRecord = partnershipRecordDao.findByCustSpaceUUAndVendSpaceUU(custUserSpace.getSpaceUU(),
  64. vendUserSpace.getSpaceUU());
  65. if (oldSendRecord != null) {
  66. if (oldSendRecord.getStatusCode().equals(Status.UNAUDIT.getCode())) {
  67. throw new VisibleError("对该企业的申请已经存在,请不要重复申请");
  68. }
  69. if (oldSendRecord.getStatusCode().equals(Status.ENABLED.getCode())) {
  70. throw new VisibleError("该企业已经同意您的申请,请不要重复申请");
  71. }
  72. }
  73. // 判断被申请者有没有发出申请
  74. PartnershipRecord oldReceiveRecord = partnershipRecordDao.findByCustSpaceUUAndVendSpaceUU(vendUserSpace.getSpaceUU(),
  75. custUserSpace.getSpaceUU());
  76. if (oldReceiveRecord != null) {
  77. if (!oldReceiveRecord.getStatusCode().equals(Status.UNAPPLY.getCode())) {
  78. throw new VisibleError("该企业已经向您发出了申请,请注意查看您收到的申请记录");
  79. }
  80. }
  81. // 未申请或拒绝状态,添加一条记录
  82. PartnershipRecord record = new PartnershipRecord(loginUser.getAppId(), vendUserSpace, custUserSpace);
  83. record.setStatusCode(Status.UNAUDIT.getCode());
  84. record.setStatus(Status.UNAUDIT.getPhrase());
  85. record.setCustSpaceUU(custUserSpace.getSpaceUU());
  86. record.setVendSpaceUU(vendUserSpace == null ? null : vendUserSpace.getSpaceUU());
  87. record.setRequestDate(new Timestamp(System.currentTimeMillis()));
  88. // 可能发送过申请,添加id
  89. record.setId(oldSendRecord == null ? oldReceiveRecord == null ? null : oldReceiveRecord.getId() : oldSendRecord.getId());
  90. partnershipRecordDao.save(record);
  91. partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")向" +
  92. record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")发出了建立合作关系的申请");
  93. }
  94. @Override
  95. public Page<PartnershipRecord> findAllSendUnAudit(String name, String businessCode, String custUserName,
  96. int pageNumber, int pageSize) {
  97. UserAccount loginUser = SystemSession.getUserAccount();
  98. if (loginUser == null) {
  99. throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  100. }
  101. Pageable pageable = new PageRequest(pageNumber, pageSize);
  102. return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
  103. @Override
  104. public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  105. List<Predicate> list = new ArrayList<>();
  106. list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name));
  107. list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode));
  108. list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName));
  109. list.add(cb.equal(root.get("status").as(Short.class), Status.UNAUDIT.getCode()));
  110. Predicate[] predicates = new Predicate[list.size()];
  111. predicates = list.toArray(predicates);
  112. return cb.and(predicates);
  113. }
  114. }, pageable);
  115. }
  116. @Override
  117. public Page<PartnershipRecord> findAllSendEnable(String name, String businessCode, String custUserName,
  118. int pageNumber, int pageSize) {
  119. UserAccount loginUser = SystemSession.getUserAccount();
  120. if (loginUser == null) {
  121. throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  122. }
  123. Pageable pageable = new PageRequest(pageNumber, pageSize);
  124. return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
  125. @Override
  126. public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  127. List<Predicate> list = new ArrayList<>();
  128. list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name));
  129. list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode));
  130. list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName));
  131. list.add(cb.equal(root.get("status").as(Short.class), Status.ENABLED.getCode()));
  132. Predicate[] predicates = new Predicate[list.size()];
  133. predicates = list.toArray(predicates);
  134. return cb.and(predicates);
  135. }
  136. }, pageable);
  137. }
  138. @Override
  139. public Page<PartnershipRecord> findAllSendUnApply(String name, String businessCode, String custUserName,
  140. int pageNumber, int pageSize) {
  141. UserAccount loginUser = SystemSession.getUserAccount();
  142. if (loginUser == null) {
  143. throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  144. }
  145. Pageable pageable = new PageRequest(pageNumber, pageSize);
  146. return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
  147. @Override
  148. public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  149. List<Predicate> list = new ArrayList<>();
  150. list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name));
  151. list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode));
  152. list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName));
  153. list.add(cb.equal(root.get("status").as(Short.class), Status.UNAPPLY.getCode()));
  154. Predicate[] predicates = new Predicate[list.size()];
  155. predicates = list.toArray(predicates);
  156. return cb.and(predicates);
  157. }
  158. }, pageable);
  159. }
  160. @Override
  161. public Page<PartnershipRecord> findAllReceivedUnAudit(String name, String businessCode, String custUserName,
  162. int pageNumber, int pageSize) {
  163. UserAccount loginUser = SystemSession.getUserAccount();
  164. if (loginUser == null) {
  165. throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  166. }
  167. Pageable pageable = new PageRequest(pageNumber, pageSize);
  168. return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
  169. @Override
  170. public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  171. List<Predicate> list = new ArrayList<>();
  172. list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name));
  173. list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode));
  174. list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName));
  175. list.add(cb.equal(root.get("status").as(Short.class), Status.UNAUDIT.getCode()));
  176. Predicate[] predicates = new Predicate[list.size()];
  177. predicates = list.toArray(predicates);
  178. return cb.and(predicates);
  179. }
  180. }, pageable);
  181. }
  182. //
  183. // @Override
  184. // public Page<PartnershipRecord> findAllReceivedEnable(String name, String businessCode, String custUserName,
  185. // int pageNumber, int pageSize) {
  186. // User user = SystemSession.getUser();
  187. // if (user == null) {
  188. // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  189. // }
  190. // return partnershipRecordDao.findAllReceivedView(pageNumber, businessCode, custUserName, pageSize, name,
  191. // user.getSpaceUID(), Status.ENABLED.value());
  192. // }
  193. //
  194. // @Override
  195. // public Page<PartnershipRecord> findAllReceivedUnApply(String name, String businessCode, String custUserName,
  196. // int pageNumber, int pageSize) {
  197. // User user = SystemSession.getUser();
  198. // if (user == null) {
  199. // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  200. // }
  201. // return partnershipRecordDao.findAllReceivedView(pageNumber, businessCode, custUserName, pageSize, name,
  202. // user.getSpaceUID(), Status.UNAPPLY.value());
  203. // }
  204. //
  205. // @Override
  206. // public PartnershipRecord findSendRequestById(Long id) {
  207. // return partnershipRecordDao.findById(id);
  208. // }
  209. //
  210. // @Override
  211. // public PartnershipRecord findReceivedRequestById(Long id) {
  212. // return partnershipRecordDao.findById(id);
  213. // }
  214. //
  215. // @Override
  216. // public void enable(Long id) {
  217. // User user = SystemSession.getUser();
  218. // PartnershipRecord partner = partnershipRecordDao.findById(id);
  219. // if (user == null) {
  220. // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  221. // }
  222. // if (partner == null) {
  223. // throw new VisibleError("未找到该企业信息");
  224. // }
  225. // if (partner != null && user != null) {
  226. // logger.info(user.getName() + "同意了" + partner.getCustName() + "的请求");
  227. // partner.setStatus(Status.ENABLED.getPhrase());
  228. // partner.setStatusCode(Status.ENABLED.value());
  229. // partner.setOperateDate(new Date());
  230. // partner.setVendUserCode(user.getDialectUID());
  231. // partner.setVendUserTel(user.getUid());
  232. // partner.setVendUserEmail(user.getSecondUID());
  233. // partner.setVendUserName(user.getName());
  234. // partner.setId(id);
  235. // partnershipRecordDao.save(partner);
  236. // }
  237. //
  238. // }
  239. //
  240. // @Override
  241. // public void disable(Long id, String reason) {
  242. // User user = SystemSession.getUser();
  243. // if (user == null) {
  244. // throw new VisibleError("未检测到当期用户信息,请先通过UAS系统或商务平台登录");
  245. // } else {
  246. // PartnershipRecord partner = partnershipRecordDao.findById(id);
  247. // logger.info(user.getName() + "拒绝了" + partner.getCustName() + "的请求");
  248. // partner.setStatus(Status.UNAPPLY.getPhrase());
  249. // partner.setStatusCode(Status.UNAPPLY.value());
  250. // partner.setReason(reason);
  251. // partner.setOperateDate(new Date());
  252. // partner.setVendUserCode(user.getDialectUID());
  253. // partner.setVendUserName(user.getName());
  254. // partner.setVendUserEmail(user.getSecondUID());
  255. // partner.setVendUserName(user.getName());
  256. // partner.setId(id);
  257. // partnershipRecordDao.save(partner);
  258. // }
  259. // }
  260. //
  261. // @Override
  262. // public void resendRequestById(Long id) {
  263. // User user = SystemSession.getUser();
  264. // if (user == null) {
  265. // throw new VisibleError("未检测到当期用户信息,请先通过UAS系统或商务平台登录");
  266. // } else {
  267. // PartnershipRecord partner = partnershipRecordDao.findById(id);
  268. // logger.info(user.getDialectUID() + "向" + partner.getVendName() + "发出了建立合作关系的申请");
  269. // partner.setStatus(Status.UNAUDIT.getPhrase());
  270. // partner.setStatusCode(Status.UNAUDIT.value());
  271. // partner.setRequestDate(new Date());
  272. // partner.setCustUserCode(user.getDialectUID());
  273. // partner.setCustUserEmail(user.getSecondUID());
  274. // partner.setCustUserName(user.getName());
  275. // partner.setCustUserTel(user.getUid());
  276. // partnershipRecordDao.save(partner);
  277. // }
  278. // }
  279. //
  280. // @Override
  281. // public PartnershipRecord findBycustUIDAndVendUID(String custuid, String venduid) {
  282. // User user = SystemSession.getUser();
  283. // if (user == null) {
  284. // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  285. // }
  286. // return partnershipRecordDao.findByCustUIDAndVendUID(custuid, venduid);
  287. // }
  288. //
  289. // @Override
  290. // public ModelMap getsendRequestCount() {
  291. // User user = SystemSession.getUser();
  292. // if(user==null){
  293. // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  294. // }
  295. // ModelMap map = new ModelMap("全部", partnershipRecordDao.getAllSendCount(user.getSpaceUID()));
  296. // map.addAllAttributes(partnershipRecordDao.getSendRequestCount(user.getSpaceUID()));
  297. // return map;
  298. // }
  299. //
  300. // @Override
  301. // public ModelMap getreceivedRequestCount() {
  302. // User user = SystemSession.getUser();
  303. // if (user == null) {
  304. // throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
  305. // }
  306. // ModelMap map = new ModelMap("全部", partnershipRecordDao.getAllReceivedCount(user.getSpaceUID()));
  307. // map.addAllAttributes(partnershipRecordDao.getReceivedRequestCount(user.getSpaceUID()));
  308. // return map;
  309. // }
  310. //
  311. @Override
  312. public Page<PartnershipRecord> findByBusinessCodeAndStatusCode(String businessCode, Integer statusCode, String keyword,
  313. int pageNumber, int pageSize) {
  314. Pageable pageable = new PageRequest(pageNumber, pageSize);
  315. return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
  316. @Override
  317. public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  318. // 添加排序
  319. Predicate preStatusCode = cb.equal(root.get("statusCode").as(Short.class), statusCode);
  320. query.orderBy(cb.desc(root.get("statusCode")));
  321. // 营业执照号为空,则查询所有的
  322. if (StringUtils.isEmpty(businessCode)) {
  323. if (!StringUtils.isEmpty(statusCode)) {
  324. query.where(cb.and(preStatusCode));
  325. }
  326. return query.getRestriction();
  327. }
  328. // 精确查询条件
  329. Predicate preVendBusinessCode = cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode);
  330. Predicate preCustBusinessCode = cb.equal(root.join("custSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode);
  331. // 关键词为空,只根据营业执照号查询
  332. if (StringUtils.isEmpty(keyword)) {
  333. if (!StringUtils.isEmpty(statusCode)) {
  334. query.where(cb.and(preStatusCode, cb.or(preVendBusinessCode, preCustBusinessCode)));
  335. return query.getRestriction();
  336. }
  337. query.where(cb.or(preVendBusinessCode, preCustBusinessCode));
  338. return query.getRestriction();
  339. }
  340. // 申请人模糊查询条件
  341. List<Predicate> keyCustPredicates = new ArrayList<Predicate>();
  342. keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), "%" + keyword + "%"));
  343. keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("businessCode").as(String.class), "%" + keyword + "%"));
  344. keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("profession").as(String.class), "%" + keyword + "%"));
  345. keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("tags").as(String.class), "%" + keyword + "%"));
  346. keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("spaceUU").as(String.class), "%" + keyword + "%"));
  347. keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("regAddress").as(String.class), "%" + keyword + "%"));
  348. keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("vipName").as(String.class), "%" + keyword + "%"));
  349. keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("mobile").as(String.class), "%" + keyword + "%"));
  350. keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("email").as(String.class), "%" + keyword + "%"));
  351. // 接收人模糊查询条件
  352. List<Predicate> keyVendPredicates = new ArrayList<Predicate>();
  353. keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), "%" + keyword + "%"));
  354. keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), "%" + keyword + "%"));
  355. keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("profession").as(String.class), "%" + keyword + "%"));
  356. keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("tags").as(String.class), "%" + keyword + "%"));
  357. keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("spaceUU").as(String.class), "%" + keyword + "%"));
  358. keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("regAddress").as(String.class), "%" + keyword + "%"));
  359. keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("admin").get("vipName").as(String.class), "%" + keyword + "%"));
  360. keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("admin").get("mobile").as(String.class), "%" + keyword + "%"));
  361. keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("admin").get("email").as(String.class), "%" + keyword + "%"));
  362. Predicate[] custPredicates = new Predicate[keyCustPredicates.size()];
  363. Predicate[] vendPredicates = new Predicate[keyVendPredicates.size()];
  364. if (!StringUtils.isEmpty(statusCode)) {
  365. query.where(cb.and(preStatusCode, cb.or(cb.and(preVendBusinessCode, cb.or(keyCustPredicates.toArray(custPredicates))), cb.and(preCustBusinessCode, cb.or(keyVendPredicates.toArray(vendPredicates))))));
  366. return query.getRestriction();
  367. }
  368. query.where(cb.and(cb.or(cb.and(preVendBusinessCode, cb.or(keyCustPredicates.toArray(custPredicates))), cb.and(preCustBusinessCode, cb.or(keyVendPredicates.toArray(vendPredicates))))));
  369. return query.getRestriction();
  370. }
  371. }, pageable);
  372. }
  373. //
  374. // @Override
  375. // public Page<PartnershipRecord> findBySpaceUidAndStatusCodeFilterByPartnerUUs(String businessCode, Integer statusCode, String keyword, List<Long> partnerUUs,
  376. // int pageNumber, int pageSize) {
  377. // return partnershipRecordDao.findBySpaceUidAndStatusCodeFilterByPartnerUUs(businessCode, statusCode, keyword, partnerUUs, pageNumber,
  378. // pageSize);
  379. // }
  380. @Override
  381. public void addPartner(PartnershipRecord record) {
  382. // 根据营业执照号获取申请记录
  383. String custBusinessCode = StringUtils.isEmpty(record.getCustBusinessCode()) ? record.getCustSpace() == null ? null : record.getCustSpace().getBusinessCode() : record.getCustBusinessCode();
  384. String vendBusinessCode = StringUtils.isEmpty(record.getVendBusinessCode()) ? record.getVendSpace() == null ? null : record.getVendSpace().getBusinessCode() : record.getVendBusinessCode();
  385. if (custBusinessCode == null || vendBusinessCode == null) {
  386. throw new VisibleError("参数错误");
  387. }
  388. PartnershipRecord oldSendRecord = partnershipRecordDao.findByBusinessCode(custBusinessCode, vendBusinessCode);
  389. PartnershipRecord oldReceiveRecord = partnershipRecordDao.findByBusinessCode(vendBusinessCode, custBusinessCode);
  390. // 判断是否为已申请或已同意状态
  391. if (oldSendRecord != null && !oldSendRecord.getStatusCode().equals(Status.UNAPPLY.getCode())) {
  392. if (oldSendRecord.getStatusCode().equals(Status.UNAUDIT.getCode())) {
  393. throw new VisibleError("对该企业的申请已发出,请耐心等待对方审核");
  394. }
  395. if (oldSendRecord.getStatusCode().equals(Status.ENABLED.getCode())) {
  396. throw new VisibleError("您们已是合作伙伴,请不要重复申请");
  397. }
  398. }
  399. if (oldReceiveRecord != null && !oldReceiveRecord.getStatusCode().equals(Status.UNAPPLY.getCode())) {
  400. if (oldReceiveRecord.getStatusCode().equals(Status.UNAUDIT.getCode())) {
  401. throw new VisibleError("该企业已经向您发出了申请,请注意查看您收到的申请记录");
  402. }
  403. if (oldReceiveRecord.getStatusCode().equals(Status.ENABLED.getCode())) {
  404. throw new VisibleError("您们已是合作伙伴,请不要重复申请");
  405. }
  406. }
  407. // 未开通商务平台,提醒开通
  408. Userspace castSpace = userSpaceService.findByBusinessCode(custBusinessCode);
  409. Userspace vendSpace = userSpaceService.findByBusinessCode(vendBusinessCode);
  410. if (vendSpace == null) {
  411. ModelMap data = new ModelMap();
  412. data.put("vendorusername", record.getVendUserName());
  413. data.put("vendorname", record.getVendSpaceName());
  414. data.put("custname", castSpace.getSpaceName());
  415. Setting mailTplId = settingService.findOne("templateForSendEmailWhenAddPartner");
  416. if (!StringUtils.isEmpty(mailTplId) && !StringUtils.isEmpty(vendSpace.getAdmin().getEmail())) {
  417. mailService.send(mailTplId.getValue(), record.getVendUserEmail(), data);
  418. }
  419. Setting smsTplId = settingService.findOne("templateForSendSmsWhenAddPartner");
  420. if (!StringUtils.isEmpty(smsTplId) && !StringUtils.isEmpty(vendSpace.getAdmin().getMobile())) {
  421. smsService.send(smsTplId.getValue(), vendSpace.getAdmin().getMobile(),
  422. new Object[] { record.getVendUserName(), record.getVendSpaceName(), castSpace.getSpaceName() });
  423. }
  424. }
  425. // 未申请或拒绝状态,添加一条记录
  426. PartnershipRecord newRecord = new PartnershipRecord(record.getAppId(), vendSpace, castSpace);
  427. record.setStatusCode(Status.UNAUDIT.getCode());
  428. record.setStatus(Status.UNAUDIT.getPhrase());
  429. record.setRequestDate(new Timestamp(System.currentTimeMillis()));
  430. record.setId(oldSendRecord == null ? oldReceiveRecord == null ? null : oldReceiveRecord.getId() : oldSendRecord.getId());
  431. partnershipRecordDao.save(record);
  432. partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")向" +
  433. record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")发出了建立合作关系的申请"); }
  434. @Override
  435. public ModelMap synchronizePartner(PartnershipRecord record) {
  436. ModelMap map = new ModelMap();
  437. PartnershipRecord oldSendRecord = partnershipRecordDao.findByBusinessCode(record.getCustBusinessCode(),
  438. record.getVendBusinessCode());
  439. PartnershipRecord oldReceiveRecord = partnershipRecordDao.findByBusinessCode(record.getVendBusinessCode(),
  440. record.getCustBusinessCode());
  441. if (oldSendRecord != null && !oldSendRecord.getStatusCode().equals(Status.ENABLED.getCode())) {
  442. oldSendRecord.setStatusCode(Status.ENABLED.getCode());
  443. oldSendRecord.setStatus(Status.ENABLED.getPhrase());
  444. oldSendRecord.setRequestDate(new Timestamp(System.currentTimeMillis()));
  445. oldSendRecord.setOperateDate(new Timestamp(System.currentTimeMillis()));
  446. partnershipRecordDao.save(oldSendRecord);
  447. partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")与" +
  448. record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")通过单据交易建立了合作关系");
  449. }
  450. if (oldReceiveRecord != null && !oldReceiveRecord.getStatusCode().equals(Status.ENABLED.getCode())) {
  451. oldReceiveRecord.setStatusCode(Status.ENABLED.getCode());
  452. oldReceiveRecord.setStatus(Status.ENABLED.getPhrase());
  453. oldReceiveRecord.setRequestDate(new Timestamp(System.currentTimeMillis()));
  454. oldReceiveRecord.setOperateDate(new Timestamp(System.currentTimeMillis()));
  455. partnershipRecordDao.save(oldReceiveRecord);
  456. partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")与" +
  457. record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")通过单据交易建立了合作关系");
  458. }
  459. if (oldSendRecord == null && oldReceiveRecord == null) {
  460. Userspace custSpace = userSpaceService.findByBusinessCode(record.getCustBusinessCode());
  461. Userspace vendSpace = userSpaceService.findByBusinessCode(record.getVendBusinessCode());
  462. record.setStatusCode(Status.ENABLED.getCode());
  463. record.setStatus(Status.ENABLED.getPhrase());
  464. record.setRequestDate(new Timestamp(System.currentTimeMillis()));
  465. record.setOperateDate(new Timestamp(System.currentTimeMillis()));
  466. record.setCustSpaceUU(custSpace == null ? null : custSpace.getSpaceUU());
  467. record.setVendSpaceUU(vendSpace == null ? null : vendSpace.getSpaceUU());
  468. partnershipRecordDao.save(record);
  469. partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")与" +
  470. record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")通过单据交易建立了合作关系");
  471. map.put("success", "建立合作关系成功");
  472. }
  473. return map;
  474. }
  475. @Override
  476. public ModelMap acceptRequest(Long id, String vendUserTel, String appId) {
  477. PartnershipRecord record = partnershipRecordDao.findOne(id);
  478. ModelMap map = new ModelMap();
  479. User user = userService.findByMobile(vendUserTel);
  480. record.setAppId(appId);
  481. record.setOperateDate(new Timestamp(System.currentTimeMillis()));
  482. record.setVendUserName(user.getVipName());
  483. record.setStatus(Status.ENABLED.getPhrase());
  484. record.setStatusCode(Status.ENABLED.getCode());
  485. partnershipRecordDao.save(record);
  486. map.put("success", "审核成功");
  487. return map;
  488. }
  489. @Override
  490. public ModelMap rejectRequest(Long id, String reason, String vendUserTel, String appId) {
  491. PartnershipRecord record = partnershipRecordDao.findOne(id);
  492. ModelMap map = new ModelMap();
  493. User user = userDao.findByMobile(vendUserTel);
  494. record.setAppId(appId);
  495. record.setOperateDate(new Timestamp(System.currentTimeMillis()));
  496. record.setVendUserName(user.getVipName());
  497. record.setStatus(Status.UNAPPLY.getPhrase());
  498. record.setStatusCode(Status.UNAPPLY.getCode());
  499. record.setReason(reason);
  500. partnershipRecordDao.save(record);
  501. map.put("success", "审核成功");
  502. return map;
  503. }
  504. @Override
  505. public RequestStatus getRequestByBusinessCode(String custBusinessCode, String vendBusinessCode) {
  506. RequestStatus request = new RequestStatus();
  507. // 发出申请
  508. PartnershipRecord receivedRequest = partnershipRecordDao.findByBusinessCode(custBusinessCode, vendBusinessCode);
  509. if (receivedRequest != null) {
  510. request.setCustBusinessCode(receivedRequest.getCustSpace().getBusinessCode());
  511. request.setCustUU(receivedRequest.getCustSpace().getSpaceUU());
  512. request.setVendBusinessCode(receivedRequest.getVendSpace().getBusinessCode());
  513. request.setVendUU(receivedRequest.getVendSpace().getSpaceUU());
  514. request.setStatusCode(receivedRequest.getStatusCode());
  515. request.setMethod(Const.NO);
  516. if (receivedRequest.getStatusCode() == Status.UNAUDIT.getCode()) {
  517. request.setNeedAgreed(Const.YES);
  518. } else {
  519. request.setNeedAgreed(Const.NO);
  520. }
  521. }
  522. // 收到申请
  523. PartnershipRecord sendRequest = partnershipRecordDao.findByBusinessCode(vendBusinessCode, custBusinessCode);
  524. if (sendRequest != null) {
  525. request.setCustBusinessCode(receivedRequest.getCustSpace().getBusinessCode());
  526. request.setCustUU(receivedRequest.getCustSpace().getSpaceUU());
  527. request.setVendBusinessCode(receivedRequest.getVendSpace().getBusinessCode());
  528. request.setVendUU(receivedRequest.getVendSpace().getSpaceUU());
  529. request.setStatusCode(sendRequest.getStatusCode());
  530. request.setMethod(Const.YES);
  531. request.setNeedAgreed(Const.NO);
  532. }
  533. return request;
  534. }
  535. @Override
  536. public ModelMap getRequestTodo(String businessCode) {
  537. ModelMap map = new ModelMap();
  538. map.put("todo", partnershipRecordDao.getRequestTodo(businessCode));
  539. return map;
  540. }
  541. @Override
  542. public void invite(InvitationRecord record) {
  543. PartnershipRecord partnershipRecord = new PartnershipRecord();
  544. // partnershipRecordDao.saveInvitation(record);
  545. }
  546. }