记得上下班打卡 | git大法好,push需谨慎

Commit a90b885e authored by Tice's avatar Tice

Merge branch 'dev_merchant_tice' into dev_merchant

parents ef936c31 c56905ea
......@@ -6,9 +6,9 @@ import com.liquidnet.service.merchant.dto.vo.MerchantAuthorizationRecordsVo;
import java.util.List;
public interface IMerchantAuthorizationRecordsService {
String performanceCheckerAdd(String cuid, MerchantAuthorizationRecordParam parameter);
String performanceRecordCheckerAdd(String cuid, MerchantAuthorizationRecordParam parameter);
void performanceCheckerDel(String cuid, String authorizationRecordId);
void performanceRecordCheckerDel(String cuid, String authorizationRecordId);
List<MerchantAuthorizationRecordsVo> performanceCheckers(String cuid, String performanceId);
List<MerchantAuthorizationRecordsVo> performanceRecordCheckers(String cuid, String performanceId);
}
......@@ -15,19 +15,19 @@ import com.liquidnet.service.merchant.dto.vo.*;
import com.liquidnet.service.merchant.entity.*;
import com.liquidnet.service.merchant.mapper.MerchantAuthorizationRecordsMapper;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
@Service
......@@ -42,9 +42,6 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
@Autowired
MongoTemplate mongoTemplate;
@Autowired
MongoConverter mongoConverter;
@Autowired
IMerchantFieldsAdminService fieldsAdminService;
......@@ -61,19 +58,29 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
@Transactional
public void authorizationInit(String performanceId, String cuid, String fieldId, String sponsorId) {
// 创建者
this.performanceCreator(performanceId, cuid);
List<String> updatedUids1 = this.performanceCreator(performanceId, cuid);
Set<String> updatedUids = new HashSet<>(updatedUids1);
// 主办方
this.performanceSponsor(performanceId, sponsorId);
List<String> updatedUids2 = this.performanceSponsor(performanceId, sponsorId);
updatedUids.addAll(updatedUids2);
// 场地方
this.performanceFielder(performanceId, fieldId);
List<String> updatedUids3 = this.performanceFielder(performanceId, fieldId);
updatedUids.addAll(updatedUids3);
// 聚合角色及权限 vo
for (String uid: updatedUids) {
merchantMongoUtil.syncAndSetAuthorizationPerformanceVo(performanceId, uid);
}
}
// 创建者
private boolean performanceCreator(String performanceId, String cuid) {
private List<String> performanceCreator(String performanceId, String cuid) {
LocalDateTime now = LocalDateTime.now();
List<String> updatedUids = new ArrayList<>();
// 查询已有权限
LambdaQueryWrapper<MerchantAuthorizationRecords> authorizationRecordsLambdaQueryWrapper = Wrappers.lambdaQuery(MerchantAuthorizationRecords.class);
authorizationRecordsLambdaQueryWrapper.eq(MerchantAuthorizationRecords::getPerformanceId, performanceId);
......@@ -88,15 +95,15 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
if (null != authorizationRecords) {
if (!authorizationRecords.getUid().equals(cuid)) {
// 前后 创建方一致 不处理
return true;
return updatedUids;
}
// 前后 创建方不一致的情况不存在
throw new LiquidnetServiceException();
}
// 添加权限
ArrayList<MerchantAuthorizationRecords> authorizationRecordsArrayList = new ArrayList<>();
ArrayList<MerchantAuthorizationPermissions> authorizationPermissionsArrayList = new ArrayList<>();
List<MerchantAuthorizationRecords> authorizationRecordsArrayList = new ArrayList<>();
List<MerchantAuthorizationPermissions> authorizationPermissionsArrayList = new ArrayList<>();
// 授权记录 entity
// todo 用户信息
......@@ -113,7 +120,7 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
authorizationRecordsArrayList.add(creatorAuthorizationRecords);
// 授权权限 entity vo
ArrayList<MerchantAuthorizationPermissionsVo> creatorAuthorizationPermissionsVos = new ArrayList<>();
List<MerchantAuthorizationPermissionsVo> creatorAuthorizationPermissionsVos = new ArrayList<>();
String[] fielderPermissionIds = {
MerchantAuthorizationConst.PerformancePermission.READ.getId(),
MerchantAuthorizationConst.PerformancePermission.EDIT.getId(),
......@@ -158,16 +165,18 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
// mongo
mongoTemplate.insert(authorizationRecordsVo, MerchantAuthorizationRecordsVo.class.getSimpleName());
// 聚合角色及权限
this.syncAuthorizationPerformanceVo(performanceId, authorizationRecordsVo.getUid());
// updated uid
updatedUids.add(authorizationRecordsVo.getUid());
return true;
return updatedUids;
}
// 授权主办方
private boolean performanceSponsor(String performanceId, String sponsorId) {
private List<String> performanceSponsor(String performanceId, String sponsorId) {
LocalDateTime now = LocalDateTime.now();
List<String> updatedUids = new ArrayList<>();
// 查询已有权限
LambdaQueryWrapper<MerchantAuthorizationRecords> authorizationRecordsLambdaQueryWrapper = Wrappers.lambdaQuery(MerchantAuthorizationRecords.class);
authorizationRecordsLambdaQueryWrapper.eq(MerchantAuthorizationRecords::getPerformanceId, performanceId);
......@@ -184,14 +193,14 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
if (null != authorizationRecords) {
if (null != sponsors && authorizationRecords.getUid().equals(sponsors.getUid())) {
// 前后 主办方一致 不处理
return true;
return updatedUids;
}
// 前后 主办方不一致 删除旧权限 及 我的授权
authorizationRecords.setUpdatedAt(now);
authorizationRecords.setDeletedAt(now);
// 删除旧权限 mysql
// 查询删除 旧权限 及 旧权限角色的授权 mysql
LambdaUpdateWrapper<MerchantAuthorizationRecords> authorizationRecordsLambdaUpdateWrapper = Wrappers.lambdaUpdate(MerchantAuthorizationRecords.class);
authorizationRecordsLambdaUpdateWrapper
.eq(MerchantAuthorizationRecords::getPerformanceId, performanceId)
......@@ -210,23 +219,26 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
throw new LiquidnetServiceException();
}
// 删除旧权限 mongo
// 查询删除 旧权限 及 旧权限角色的授权 mongo query
Criteria criteria = Criteria.where("performanceId").is(performanceId).and("deletedAt").is(null);
criteria.orOperator(
Criteria.where("authorizationRecordId").is(authorizationRecords.getAuthorizationRecordId()),
Criteria.where("cuid").is(authorizationRecords.getUid()).and("cuidRole").is(MerchantAuthorizationConst.PerformanceRole.SPONSOR.getRole())
);
Query query = Query.query(criteria);
// 查询旧权限 及 旧权限角色的授权 mongo
List<String> uids = mongoTemplate.findDistinct(query, "uid", MerchantAuthorizationRecordsVo.class.getSimpleName(), MerchantAuthorizationRecordsVo.class, String.class);
// 删除旧权限 及 旧权限角色的授权 mongo
mongoTemplate.remove(query, MerchantAuthorizationRecordsVo.class, MerchantAuthorizationRecordsVo.class.getSimpleName());
// 聚合角色及权限
this.syncAuthorizationPerformanceVo(performanceId, authorizationRecords.getUid());
// updated uid
updatedUids.addAll(uids);
}
// 是否添加权限
if (null != sponsors && !sponsors.getUid().isEmpty()) {
ArrayList<MerchantAuthorizationRecords> authorizationRecordsArrayList = new ArrayList<>();
ArrayList<MerchantAuthorizationPermissions> authorizationPermissionsArrayList = new ArrayList<>();
List<MerchantAuthorizationRecords> authorizationRecordsArrayList = new ArrayList<>();
List<MerchantAuthorizationPermissions> authorizationPermissionsArrayList = new ArrayList<>();
// 授权记录 entity
// todo 用户信息
......@@ -242,7 +254,7 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
sponsorAuthorizationRecords.setCreatedAt(now);
authorizationRecordsArrayList.add(sponsorAuthorizationRecords);
// 授权权限 entity vo
ArrayList<MerchantAuthorizationPermissionsVo> sponsorAuthorizationPermissionsVos = new ArrayList<>();
List<MerchantAuthorizationPermissionsVo> sponsorAuthorizationPermissionsVos = new ArrayList<>();
String[] fielderPermissionIds = {
MerchantAuthorizationConst.PerformancePermission.READ.getId(),
MerchantAuthorizationConst.PerformancePermission.CHECK.getId(),
......@@ -283,17 +295,19 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
// mongo
mongoTemplate.insert(sponsorAuthorizationRecordsVo, MerchantAuthorizationRecordsVo.class.getSimpleName());
// 聚合角色及权限
this.syncAuthorizationPerformanceVo(performanceId, sponsorAuthorizationRecordsVo.getUid());
// updated uid
updatedUids.add(sponsorAuthorizationRecordsVo.getUid());
}
return true;
return updatedUids.stream().distinct().collect(Collectors.toList());
}
// 授权场地方
private boolean performanceFielder(String performanceId, String fieldId) {
private List<String> performanceFielder(String performanceId, String fieldId) {
LocalDateTime now = LocalDateTime.now();
List<String> updatedUids = new ArrayList<>();
// 查询已有权限
LambdaQueryWrapper<MerchantAuthorizationRecords> authorizationRecordsLambdaQueryWrapper = Wrappers.lambdaQuery(MerchantAuthorizationRecords.class);
authorizationRecordsLambdaQueryWrapper.eq(MerchantAuthorizationRecords::getPerformanceId, performanceId);
......@@ -310,14 +324,14 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
if (null != authorizationRecords) {
if (null != fields && authorizationRecords.getUid().equals(fields.getUid())) {
// 前后 场地方一致 不处理
return true;
return updatedUids;
}
// 前后 场地方不一致 删除旧权限 及 我的授权
authorizationRecords.setUpdatedAt(now);
authorizationRecords.setDeletedAt(now);
// 删除旧权限 mysql
// 查询 删除 旧权限 及 旧权限角色的授权 mysql
LambdaUpdateWrapper<MerchantAuthorizationRecords> authorizationRecordsLambdaUpdateWrapper = Wrappers.lambdaUpdate(MerchantAuthorizationRecords.class);
authorizationRecordsLambdaUpdateWrapper
.eq(MerchantAuthorizationRecords::getPerformanceId, performanceId)
......@@ -336,25 +350,28 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
throw new LiquidnetServiceException();
}
// 删除旧权限 mongo
// 查询 删除 旧权限 及 旧权限角色的授权 mongo query
Criteria criteria = Criteria.where("performanceId").is(performanceId).and("deletedAt").is(null);
criteria.orOperator(
Criteria.where("authorizationRecordId").is(authorizationRecords.getAuthorizationRecordId()),
Criteria.where("cuid").is(authorizationRecords.getUid()).and("cuidRole").is(MerchantAuthorizationConst.PerformanceRole.FIELDER.getRole())
);
Query query = Query.query(criteria);
// 查询旧权限 及 旧权限角色的授权 mongo
List<String> uids = mongoTemplate.findDistinct(query, "uid", MerchantAuthorizationRecordsVo.class.getSimpleName(), MerchantAuthorizationRecordsVo.class, String.class);
// 删除旧权限 及 旧权限角色的授权 mongo
mongoTemplate.remove(query, MerchantAuthorizationRecordsVo.class, MerchantAuthorizationRecordsVo.class.getSimpleName());
// 聚合角色及权限
this.syncAuthorizationPerformanceVo(performanceId, authorizationRecords.getUid());
// updated uid
updatedUids.addAll(uids);
}
// 是否添加权限
if (null != fields && 1 == fields.getClaimStatus()) {
ArrayList<MerchantAuthorizationRecords> authorizationRecordsArrayList = new ArrayList<>();
ArrayList<MerchantAuthorizationPermissions> authorizationPermissionsArrayList = new ArrayList<>();
List<MerchantAuthorizationRecords> authorizationRecordsArrayList = new ArrayList<>();
List<MerchantAuthorizationPermissions> authorizationPermissionsArrayList = new ArrayList<>();
ArrayList<MerchantAuthorizationRecordsVo> authorizationRecordsVoArrayList = new ArrayList<>();
List<MerchantAuthorizationRecordsVo> authorizationRecordsVoArrayList = new ArrayList<>();
// 授权记录 entity
// todo 用户信息
......@@ -370,7 +387,7 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
fielderAuthorizationRecords.setCreatedAt(now);
authorizationRecordsArrayList.add(fielderAuthorizationRecords);
// 授权权限 entity vo
ArrayList<MerchantAuthorizationPermissionsVo> fielderAuthorizationPermissionsVos = new ArrayList<>();
List<MerchantAuthorizationPermissionsVo> fielderAuthorizationPermissionsVos = new ArrayList<>();
String[] fielderPermissionIds = {
MerchantAuthorizationConst.PerformancePermission.READ.getId(),
MerchantAuthorizationConst.PerformancePermission.CHECK.getId(),
......@@ -421,7 +438,7 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
authorizationRecordsArrayList.add(checkerAuthorizationRecords);
// 验票员 授权权限 entity vo
ArrayList<MerchantAuthorizationPermissionsVo> checkerAuthorizationPermissionsVos = new ArrayList<>();
List<MerchantAuthorizationPermissionsVo> checkerAuthorizationPermissionsVos = new ArrayList<>();
for (String permissionId : checkerPermissionIds) {
MerchantAuthorizationPermissions checkerAuthorizationPermissions = new MerchantAuthorizationPermissions();
checkerAuthorizationPermissions.setAuthorizationPermissionId(IDGenerator.nextSnowId());
......@@ -460,43 +477,12 @@ public class MerchantAuthorizationRecordsAdminServiceImpl extends ServiceImpl<Me
// mongo
mongoTemplate.insert(authorizationRecordsVoArrayList, MerchantAuthorizationRecordsVo.class.getSimpleName());
// updated uid
for (MerchantAuthorizationRecordsVo authorizationRecordsVo : authorizationRecordsVoArrayList) {
// 聚合角色及权限
this.syncAuthorizationPerformanceVo(performanceId, authorizationRecordsVo.getUid());
}
}
return true;
}
private void syncAuthorizationPerformanceVo(String performanceId, String uid) {
List<MerchantAuthorizationRecordsVo> authorizationRecordsVos = mongoTemplate.find(Query.query(Criteria.where("performanceId").is(performanceId).and("uid").is(uid).and("deletedAt").is(null)), MerchantAuthorizationRecordsVo.class, MerchantAuthorizationRecordsVo.class.getSimpleName());
List<String> uidRoles = new ArrayList<>();
List<String> permissionIds = new ArrayList<>();
for (MerchantAuthorizationRecordsVo authorizationRecordsVo: authorizationRecordsVos) {
if (!uidRoles.contains(authorizationRecordsVo.getUidRole())) {
uidRoles.add(authorizationRecordsVo.getUidRole());
}
for (MerchantAuthorizationPermissionsVo authorizationPermissionsVo: authorizationRecordsVo.getPermissionsVos()) {
if (!permissionIds.contains(authorizationPermissionsVo.getPermissionId())) {
permissionIds.add(authorizationPermissionsVo.getPermissionId());
}
updatedUids.add(authorizationRecordsVo.getUid());
}
}
// 聚合角色及权限
MerchantAuthorizationPerformanceVo vo = MerchantAuthorizationPerformanceVo.getNew();
vo.setUid(uid);
vo.setPerformanceId(performanceId);
vo.setUidRoles(uidRoles);
vo.setPermissionIds(permissionIds);
Query query = Query.query(Criteria.where("performanceId").is(performanceId).and("uid").is(uid));
Document document = (Document)mongoConverter.convertToMongoType(vo);
Update update = Update.fromDocument(document);
mongoTemplate.upsert(query, update, MerchantAuthorizationPerformanceVo.class, MerchantAuthorizationPerformanceVo.class.getSimpleName());
return updatedUids.stream().distinct().collect(Collectors.toList());
}
}
......@@ -11,6 +11,7 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
......@@ -44,15 +45,49 @@ public class MerchantMongoUtil {
mongoTemplate.upsert(query, update, MerchantSponsorsVo.class, MerchantSponsorsVo.class.getSimpleName());
}
public MerchantAuthorizationPerformanceVo getAuthorizationPerformanceVo(String performanceId, String uid) {
return mongoTemplate.findOne(Query.query(Criteria.where("performanceId").is(performanceId).and("uid").is(uid)), MerchantAuthorizationPerformanceVo.class, MerchantAuthorizationPerformanceVo.class.getSimpleName());
}
public void syncAndSetAuthorizationPerformanceVo(String performanceId, String uid) {
// 聚合角色及权限
Query recordsQuery = Query.query(Criteria.where("performanceId").is(performanceId).and("uid").is(uid).and("deletedAt").is(null));
List<MerchantAuthorizationRecordsVo> authorizationRecordsVos = mongoTemplate.find(recordsQuery, MerchantAuthorizationRecordsVo.class, MerchantAuthorizationRecordsVo.class.getSimpleName());
List<String> uidRoles = new ArrayList<>();
List<String> permissionIds = new ArrayList<>();
for (MerchantAuthorizationRecordsVo authorizationRecordsVo: authorizationRecordsVos) {
if (!uidRoles.contains(authorizationRecordsVo.getUidRole())) {
uidRoles.add(authorizationRecordsVo.getUidRole());
}
for (MerchantAuthorizationPermissionsVo authorizationPermissionsVo: authorizationRecordsVo.getPermissionsVos()) {
if (!permissionIds.contains(authorizationPermissionsVo.getPermissionId())) {
permissionIds.add(authorizationPermissionsVo.getPermissionId());
}
}
}
MerchantAuthorizationPerformanceVo vo = MerchantAuthorizationPerformanceVo.getNew();
vo.setUid(uid);
vo.setPerformanceId(performanceId);
vo.setUidRoles(uidRoles);
vo.setPermissionIds(permissionIds);
Query query = Query.query(Criteria.where("performanceId").is(performanceId).and("uid").is(uid));
Document document = (Document)mongoConverter.convertToMongoType(vo);
Update update = Update.fromDocument(document);
mongoTemplate.upsert(query, update, MerchantAuthorizationPerformanceVo.class, MerchantAuthorizationPerformanceVo.class.getSimpleName());
}
public List<MerchantFieldAppliesVo> getFieldAppliesVosByUid(String uid) {
return mongoTemplate.find(Query.query(Criteria.where("uid").is(uid).and("deletedAt").is(null)), MerchantFieldAppliesVo.class, MerchantFieldAppliesVo.class.getSimpleName());
Query query = Query.query(Criteria.where("uid").is(uid).and("deletedAt").is(null));
return mongoTemplate.find(query, MerchantFieldAppliesVo.class, MerchantFieldAppliesVo.class.getSimpleName());
}
public List<MerchantSponsorAppliesVo> getSponsorAppliesVosByUid(String uid) {
return mongoTemplate.find(Query.query(Criteria.where("uid").is(uid).and("deletedAt").is(null)), MerchantSponsorAppliesVo.class, MerchantSponsorAppliesVo.class.getSimpleName());
Query query = Query.query(Criteria.where("uid").is(uid).and("deletedAt").is(null));
return mongoTemplate.find(query, MerchantSponsorAppliesVo.class, MerchantSponsorAppliesVo.class.getSimpleName());
}
public List<MerchantAuthorizationRecordsVo> getAuthorizationRecordsCheckersVosByCuid(String cuid, String performanceId) {
return mongoTemplate.find(Query.query(Criteria.where("uidRole").is(MerchantAuthorizationConst.PerformanceRole.CHECKER.getRole()).and("cuid").is(cuid).and("performanceId").is(performanceId).and("deletedAt").is(null)), MerchantAuthorizationRecordsVo.class, MerchantAuthorizationRecordsVo.class.getSimpleName());
Query query = Query.query(Criteria.where("uidRole").is(MerchantAuthorizationConst.PerformanceRole.CHECKER.getRole()).and("cuid").is(cuid).and("performanceId").is(performanceId).and("deletedAt").is(null));
return mongoTemplate.find(query, MerchantAuthorizationRecordsVo.class, MerchantAuthorizationRecordsVo.class.getSimpleName());
}
}
......@@ -42,7 +42,7 @@ public class MerchantAuthorizationsController {
public ResponseDto<List<MerchantAuthorizationRecordsVo>> recordsCheckers(@RequestParam(required = true) String performanceId) {
String currentUid = CurrentUtil.getCurrentUid();
return ResponseDto.success(authorizationRecordsService.performanceCheckers(currentUid, performanceId));
return ResponseDto.success(authorizationRecordsService.performanceRecordCheckers(currentUid, performanceId));
}
@ApiOperationSupport(order = 11)
......@@ -51,7 +51,7 @@ public class MerchantAuthorizationsController {
public ResponseDto<Object> recordsCheckerAdd(@Valid @RequestBody MerchantAuthorizationRecordParam parameter) {
String currentUid = CurrentUtil.getCurrentUid();
authorizationRecordsService.performanceCheckerAdd(currentUid, parameter);
authorizationRecordsService.performanceRecordCheckerAdd(currentUid, parameter);
return ResponseDto.success();
}
......@@ -62,7 +62,7 @@ public class MerchantAuthorizationsController {
public ResponseDto<Object> recordsCheckerDel(@RequestParam(required = true) String authorizationRecordId) {
String currentUid = CurrentUtil.getCurrentUid();
authorizationRecordsService.performanceCheckerDel(currentUid, authorizationRecordId);
authorizationRecordsService.performanceRecordCheckerDel(currentUid, authorizationRecordId);
return ResponseDto.success();
}
......
......@@ -2,18 +2,26 @@ package com.liquidnet.service.merchant.service;
import com.liquidnet.service.merchant.constant.MerchantAuthorizationConst;
import com.liquidnet.service.merchant.dto.vo.*;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class MerchantMongoService {
@Autowired
private MongoTemplate mongoTemplate;
MongoTemplate mongoTemplate;
@Autowired
MongoConverter mongoConverter;
public MerchantFieldsVo getFieldsVoByFieldId(String fieldId) {
return mongoTemplate.findOne(Query.query(Criteria.where("fieldId").is(fieldId)), MerchantFieldsVo.class, MerchantFieldsVo.class.getSimpleName());
......@@ -27,6 +35,37 @@ public class MerchantMongoService {
return mongoTemplate.findOne(Query.query(Criteria.where("sponsorId").is(sponsorId)), MerchantSponsorsVo.class, MerchantSponsorsVo.class.getSimpleName());
}
public MerchantAuthorizationPerformanceVo getAuthorizationPerformanceVo(String performanceId, String uid) {
return mongoTemplate.findOne(Query.query(Criteria.where("performanceId").is(performanceId).and("uid").is(uid)), MerchantAuthorizationPerformanceVo.class, MerchantAuthorizationPerformanceVo.class.getSimpleName());
}
public void syncAndSetAuthorizationPerformanceVo(String performanceId, String uid) {
// 聚合角色及权限
Query recordsQuery = Query.query(Criteria.where("performanceId").is(performanceId).and("uid").is(uid).and("deletedAt").is(null));
List<MerchantAuthorizationRecordsVo> authorizationRecordsVos = mongoTemplate.find(recordsQuery, MerchantAuthorizationRecordsVo.class, MerchantAuthorizationRecordsVo.class.getSimpleName());
List<String> uidRoles = new ArrayList<>();
List<String> permissionIds = new ArrayList<>();
for (MerchantAuthorizationRecordsVo authorizationRecordsVo: authorizationRecordsVos) {
if (!uidRoles.contains(authorizationRecordsVo.getUidRole())) {
uidRoles.add(authorizationRecordsVo.getUidRole());
}
for (MerchantAuthorizationPermissionsVo authorizationPermissionsVo: authorizationRecordsVo.getPermissionsVos()) {
if (!permissionIds.contains(authorizationPermissionsVo.getPermissionId())) {
permissionIds.add(authorizationPermissionsVo.getPermissionId());
}
}
}
MerchantAuthorizationPerformanceVo vo = MerchantAuthorizationPerformanceVo.getNew();
vo.setUid(uid);
vo.setPerformanceId(performanceId);
vo.setUidRoles(uidRoles);
vo.setPermissionIds(permissionIds);
Query query = Query.query(Criteria.where("performanceId").is(performanceId).and("uid").is(uid));
Document document = (Document)mongoConverter.convertToMongoType(vo);
Update update = Update.fromDocument(document);
mongoTemplate.upsert(query, update, MerchantAuthorizationPerformanceVo.class, MerchantAuthorizationPerformanceVo.class.getSimpleName());
}
public List<MerchantSponsorAppliesVo> getSponsorAppliesVosByUid(String uid) {
return mongoTemplate.find(Query.query(Criteria.where("uid").is(uid).and("deletedAt").is(null)), MerchantSponsorAppliesVo.class, MerchantSponsorAppliesVo.class.getSimpleName());
}
......
......@@ -17,13 +17,10 @@ import com.liquidnet.service.merchant.service.IMerchantAuthorizationRecordsServi
import com.liquidnet.service.merchant.service.MerchantMongoService;
import com.liquidnet.service.merchant.util.QueueUtil;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
......@@ -42,14 +39,11 @@ public class MerchantAuthorizationRecordsServiceImpl implements IMerchantAuthori
@Autowired
MongoTemplate mongoTemplate;
@Autowired
MongoConverter mongoConverter;
@Autowired
QueueUtil queueUtils;
@Override
public String performanceCheckerAdd(String cuid, MerchantAuthorizationRecordParam parameter) {
public String performanceRecordCheckerAdd(String cuid, MerchantAuthorizationRecordParam parameter) {
LocalDateTime now = LocalDateTime.now();
// 目前仅授权 验票 统计
......@@ -86,55 +80,57 @@ public class MerchantAuthorizationRecordsServiceImpl implements IMerchantAuthori
throw new LiquidnetServiceException(errorMessage.getCode(), errorMessage.getMessage());
}
// 验票员 授权记录 vo
MerchantAuthorizationRecordsVo checkerAuthorizationRecordsVo = MerchantAuthorizationRecordsVo.getNew();
checkerAuthorizationRecordsVo.setAuthorizationRecordId(IDGenerator.nextSnowId());
checkerAuthorizationRecordsVo.setPerformanceId(parameter.getPerformanceId());
checkerAuthorizationRecordsVo.setUidRole(MerchantAuthorizationConst.PerformanceRole.CHECKER.getRole());
checkerAuthorizationRecordsVo.setUid(parameter.getUid());
checkerAuthorizationRecordsVo.setMobile(parameter.getMobile());
checkerAuthorizationRecordsVo.setName(parameter.getName());
checkerAuthorizationRecordsVo.setCuid(cuid);
checkerAuthorizationRecordsVo.setCuidRole(maxPerformanceRole.getRole());
checkerAuthorizationRecordsVo.setCreatedAt(now);
// 验票员 授权权限 vos
ArrayList<MerchantAuthorizationPermissionsVo> checkerAuthorizationPermissionsVos = new ArrayList<>();
// 授权记录 vo
MerchantAuthorizationRecordsVo authorizationRecordsVo = MerchantAuthorizationRecordsVo.getNew();
authorizationRecordsVo.setAuthorizationRecordId(IDGenerator.nextSnowId());
authorizationRecordsVo.setPerformanceId(parameter.getPerformanceId());
authorizationRecordsVo.setUidRole(MerchantAuthorizationConst.PerformanceRole.CHECKER.getRole());
authorizationRecordsVo.setUid(parameter.getUid());
authorizationRecordsVo.setMobile(parameter.getMobile());
authorizationRecordsVo.setName(parameter.getName());
authorizationRecordsVo.setCuid(cuid);
authorizationRecordsVo.setCuidRole(maxPerformanceRole.getRole());
authorizationRecordsVo.setCreatedAt(now);
// 授权权限 vos
List<MerchantAuthorizationPermissionsVo> checkerAuthorizationPermissionsVos = new ArrayList<>();
if (null != checkPermissionParam) {
MerchantAuthorizationPermissionsVo checkAuthorizationPermissionsVo = MerchantAuthorizationPermissionsVo.getNew();
checkAuthorizationPermissionsVo.setAuthorizationPermissionId(IDGenerator.nextSnowId());
checkAuthorizationPermissionsVo.setAuthorizationRecordId(checkerAuthorizationRecordsVo.getAuthorizationRecordId());
checkAuthorizationPermissionsVo.setPermissionId(MerchantAuthorizationConst.PerformancePermission.CHECK.getId());
checkAuthorizationPermissionsVo.setStartTime(now);
checkAuthorizationPermissionsVo.setEndTime(now.plusYears(10));
checkAuthorizationPermissionsVo.setCreatedAt(now);
checkerAuthorizationPermissionsVos.add(checkAuthorizationPermissionsVo);
// 验票
MerchantAuthorizationPermissionsVo authorizationPermissionsVo = MerchantAuthorizationPermissionsVo.getNew();
authorizationPermissionsVo.setAuthorizationPermissionId(IDGenerator.nextSnowId());
authorizationPermissionsVo.setAuthorizationRecordId(authorizationRecordsVo.getAuthorizationRecordId());
authorizationPermissionsVo.setPermissionId(MerchantAuthorizationConst.PerformancePermission.CHECK.getId());
authorizationPermissionsVo.setStartTime(now);
authorizationPermissionsVo.setEndTime(now.plusYears(10));
authorizationPermissionsVo.setCreatedAt(now);
checkerAuthorizationPermissionsVos.add(authorizationPermissionsVo);
}
if (null != salesPermissionParam) {
// 销售 及 查看时间范围
LocalDateTime startTime = LocalDateTime.parse(salesPermissionParam.getStartTime(), DateTimeFormatter.ofPattern(DateUtil.DATE_FULL_STR));
LocalDateTime endTime = LocalDateTime.parse(salesPermissionParam.getEndTime(), DateTimeFormatter.ofPattern(DateUtil.DATE_FULL_STR));
if (!startTime.isBefore(endTime)) {
ErrorMapping.ErrorMessage errorMessage = ErrorMapping.get("13303");
throw new LiquidnetServiceException(errorMessage.getCode(), errorMessage.getMessage());
}
MerchantAuthorizationPermissionsVo salesAuthorizationPermissionsVo = MerchantAuthorizationPermissionsVo.getNew();
salesAuthorizationPermissionsVo.setAuthorizationPermissionId(IDGenerator.nextSnowId());
salesAuthorizationPermissionsVo.setAuthorizationRecordId(checkerAuthorizationRecordsVo.getAuthorizationRecordId());
salesAuthorizationPermissionsVo.setPermissionId(MerchantAuthorizationConst.PerformancePermission.SALES.getId());
salesAuthorizationPermissionsVo.setStartTime(startTime);
salesAuthorizationPermissionsVo.setEndTime(endTime);
salesAuthorizationPermissionsVo.setCreatedAt(now);
checkerAuthorizationPermissionsVos.add(salesAuthorizationPermissionsVo);
MerchantAuthorizationPermissionsVo authorizationPermissionsVo = MerchantAuthorizationPermissionsVo.getNew();
authorizationPermissionsVo.setAuthorizationPermissionId(IDGenerator.nextSnowId());
authorizationPermissionsVo.setAuthorizationRecordId(authorizationRecordsVo.getAuthorizationRecordId());
authorizationPermissionsVo.setPermissionId(MerchantAuthorizationConst.PerformancePermission.SALES.getId());
authorizationPermissionsVo.setStartTime(startTime);
authorizationPermissionsVo.setEndTime(endTime);
authorizationPermissionsVo.setCreatedAt(now);
checkerAuthorizationPermissionsVos.add(authorizationPermissionsVo);
}
checkerAuthorizationRecordsVo.setPermissionsVos(checkerAuthorizationPermissionsVos);
authorizationRecordsVo.setPermissionsVos(checkerAuthorizationPermissionsVos);
// mongo
long s = System.currentTimeMillis();
mongoTemplate.insert(checkerAuthorizationRecordsVo, MerchantAuthorizationRecordsVo.class.getSimpleName());
mongoTemplate.insert(authorizationRecordsVo, MerchantAuthorizationRecordsVo.class.getSimpleName());
log.debug("#MONGO耗时:{}ms", System.currentTimeMillis() - s);
// 聚合角色及权限
this.syncAuthorizationPerformanceVo(parameter.getPerformanceId(), checkerAuthorizationRecordsVo.getUid());
// 聚合角色及权限 vo
merchantMongoService.syncAndSetAuthorizationPerformanceVo(authorizationRecordsVo.getPerformanceId(), authorizationRecordsVo.getUid());
// sql
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
......@@ -143,10 +139,10 @@ public class MerchantAuthorizationRecordsServiceImpl implements IMerchantAuthori
// 授权记录 sql
toMqSqls.add(SqlMapping.get("merchant_authorization_records.insert"));
authorizationRecordsInsertObjs.add(new Object[]{
checkerAuthorizationRecordsVo.getAuthorizationRecordId(), checkerAuthorizationRecordsVo.getPerformanceId(),
checkerAuthorizationRecordsVo.getUidRole(), checkerAuthorizationRecordsVo.getUid(), checkerAuthorizationRecordsVo.getMobile(), checkerAuthorizationRecordsVo.getName(),
checkerAuthorizationRecordsVo.getCuidRole(), checkerAuthorizationRecordsVo.getCuid(),
checkerAuthorizationRecordsVo.getCreatedAt()
authorizationRecordsVo.getAuthorizationRecordId(), authorizationRecordsVo.getPerformanceId(),
authorizationRecordsVo.getUidRole(), authorizationRecordsVo.getUid(), authorizationRecordsVo.getMobile(), authorizationRecordsVo.getName(),
authorizationRecordsVo.getCuidRole(), authorizationRecordsVo.getCuid(),
authorizationRecordsVo.getCreatedAt()
});
// 授权权限 sql
toMqSqls.add(SqlMapping.get("merchant_authorization_permissions.insert"));
......@@ -166,11 +162,11 @@ public class MerchantAuthorizationRecordsServiceImpl implements IMerchantAuthori
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
return checkerAuthorizationRecordsVo.getAuthorizationRecordId();
return authorizationRecordsVo.getAuthorizationRecordId();
}
@Override
public void performanceCheckerDel(String cuid, String authorizationRecordId) {
public void performanceRecordCheckerDel(String cuid, String authorizationRecordId) {
LocalDateTime now = LocalDateTime.now();
// 查询授权记录
......@@ -190,8 +186,8 @@ public class MerchantAuthorizationRecordsServiceImpl implements IMerchantAuthori
mongoTemplate.remove(Query.query(Criteria.where("authorizationRecordId").is(authorizationRecordId)), MerchantAuthorizationRecordsVo.class.getSimpleName());
log.debug("#MONGO耗时:{}ms", System.currentTimeMillis() - s);
// 聚合角色及权限
this.syncAuthorizationPerformanceVo(authorizationRecordsVo.getPerformanceId(), authorizationRecordsVo.getUid());
// 聚合角色及权限 vo
merchantMongoService.syncAndSetAuthorizationPerformanceVo(authorizationRecordsVo.getPerformanceId(), authorizationRecordsVo.getUid());
// sql
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
......@@ -211,14 +207,14 @@ public class MerchantAuthorizationRecordsServiceImpl implements IMerchantAuthori
}
@Override
public List<MerchantAuthorizationRecordsVo> performanceCheckers(String cuid, String performanceId) {
public List<MerchantAuthorizationRecordsVo> performanceRecordCheckers(String cuid, String performanceId) {
List<MerchantAuthorizationRecordsVo> authorizationRecordsVos = merchantMongoService.getAuthorizationRecordsCheckersVosByCuid(cuid, performanceId);
return authorizationRecordsVos;
}
private MerchantAuthorizationConst.PerformanceRole getMaxPerformanceRole(String uid, String performanceId) {
MerchantAuthorizationPerformanceVo authorizationPerformanceVo = mongoTemplate.findOne(Query.query(Criteria.where("performanceId").is(performanceId).and("uid").is(uid)), MerchantAuthorizationPerformanceVo.class, MerchantAuthorizationPerformanceVo.class.getSimpleName());
MerchantAuthorizationPerformanceVo authorizationPerformanceVo = merchantMongoService.getAuthorizationPerformanceVo(performanceId, uid);
if (null == authorizationPerformanceVo) {
return null;
}
......@@ -236,34 +232,4 @@ public class MerchantAuthorizationRecordsServiceImpl implements IMerchantAuthori
return maxRole;
}
private void syncAuthorizationPerformanceVo(String performanceId, String uid) {
List<MerchantAuthorizationRecordsVo> authorizationRecordsVos = merchantMongoService.getAuthorizationRecordsVosByUid(uid, performanceId);
List<String> uidRoles = new ArrayList<>();
List<String> permissionIds = new ArrayList<>();
for (MerchantAuthorizationRecordsVo authorizationRecordsVo: authorizationRecordsVos) {
if (!uidRoles.contains(authorizationRecordsVo.getUidRole())) {
uidRoles.add(authorizationRecordsVo.getUidRole());
}
for (MerchantAuthorizationPermissionsVo authorizationPermissionsVo: authorizationRecordsVo.getPermissionsVos()) {
if (!permissionIds.contains(authorizationPermissionsVo.getPermissionId())) {
permissionIds.add(authorizationPermissionsVo.getPermissionId());
}
}
}
// 聚合角色及权限
MerchantAuthorizationPerformanceVo vo = MerchantAuthorizationPerformanceVo.getNew();
vo.setUid(uid);
vo.setPerformanceId(performanceId);
vo.setUidRoles(uidRoles);
vo.setPermissionIds(permissionIds);
Query query = Query.query(Criteria.where("performanceId").is(performanceId).and("uid").is(uid));
Document document = (Document)mongoConverter.convertToMongoType(vo);
Update update = Update.fromDocument(document);
mongoTemplate.upsert(query, update, MerchantAuthorizationPerformanceVo.class, MerchantAuthorizationPerformanceVo.class.getSimpleName());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment