permission
This commit is contained in:
parent
b7a25fb070
commit
7de63057a3
@ -70,14 +70,22 @@ public class AcPermissionDistributeController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成分发二维码(用户扫码可以领取权限)
|
||||
* 生成分发二维码
|
||||
*
|
||||
* @param pdId 权限分发id
|
||||
*/
|
||||
@GetMapping(path = "/{pdId}/qrCode")
|
||||
public String generateQrCode(@PathVariable("pdId") Long pdId, @RequestAttribute(value = AuthenticateInterceptor.LOGIN_INFO_KEY) LoginUserInfoVO loginInfo) {
|
||||
return this.permissionDistributeService.generateQrCode(pdId,loginInfo);
|
||||
}
|
||||
/**
|
||||
* 微信扫码获取权限分发相关信息
|
||||
* @param code 用户编码
|
||||
* @param id 权限分发id
|
||||
*/
|
||||
@GetMapping
|
||||
public void findPermissionDistributeInfo(String code, Long id){
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package club.joylink.rtss.services.permission;
|
||||
|
||||
import club.joylink.rtss.controller.advice.AuthenticateInterceptor;
|
||||
import club.joylink.rtss.dao.OrgDAO;
|
||||
import club.joylink.rtss.dao.SysAccountDAO;
|
||||
import club.joylink.rtss.dao.permission.AcPermissionDAO;
|
||||
@ -12,7 +13,11 @@ import club.joylink.rtss.entity.permission.PermissionDistribute;
|
||||
import club.joylink.rtss.entity.permission.PermissionDistributeExample;
|
||||
import club.joylink.rtss.entity.permission.PermissionSubject;
|
||||
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
||||
import club.joylink.rtss.services.QRCodeManager;
|
||||
import club.joylink.rtss.services.WxApiService;
|
||||
import club.joylink.rtss.services.auth.IAuthenticateService;
|
||||
import club.joylink.rtss.vo.AccountVO;
|
||||
import club.joylink.rtss.vo.LoginUserInfoVO;
|
||||
import club.joylink.rtss.vo.client.PageVO;
|
||||
import club.joylink.rtss.vo.permission.*;
|
||||
import club.joylink.rtss.vo.permission.convertor.PermissionDistributeConvertor;
|
||||
@ -22,10 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
@ -48,6 +50,10 @@ public class PermissionDistributeService {
|
||||
private SysAccountDAO sysAccountDAO;
|
||||
@Autowired
|
||||
private OrgDAO orgDAO;
|
||||
@Autowired
|
||||
private QRCodeManager qrCodeManager;
|
||||
@Autowired
|
||||
private IAuthenticateService authenticateService;
|
||||
|
||||
/**
|
||||
* 创建权限分发
|
||||
@ -151,10 +157,15 @@ public class PermissionDistributeService {
|
||||
PermissionDistribute permissionDistribute = this.permissionDistributeDAO.selectByPrimaryKey(pdId);
|
||||
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertTrue(null != permissionDistribute, String.format("权限分发[id=%s]不存在", pdId));
|
||||
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertTrue(PermissionDistributeStatusEnum.Valid.equals(PermissionDistributeStatusEnum.getItem(permissionDistribute.getStatus())), String.format("权限分发[id=%s]已失效", pdId));
|
||||
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertTrue(permissionDistribute.getRemains()>0,String.format("权限分发[id=%s]剩余权限数量不足", pdId));
|
||||
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertTrue(permissionDistribute.getRemains() > 0, String.format("权限分发[id=%s]剩余权限数量不足", pdId));
|
||||
final LocalDateTime now = LocalDateTime.now();
|
||||
final LocalDateTime startTime = permissionDistribute.getStartTime();
|
||||
final LocalDateTime endTime = permissionDistribute.getEndTime();
|
||||
final boolean isForever = permissionDistribute.getForever();
|
||||
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertTrue(isForever ? now.isAfter(startTime) : now.isAfter(startTime) && now.isBefore(endTime), String.format("当前时间不在权限分发[id=%s]有效时间内", pdId));
|
||||
// 校验权限
|
||||
Permission permission = this.permissionDAO.selectByPrimaryKey(permissionDistribute.getPermissionId());
|
||||
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertTrue(null != permission, String.format("权限分发[id=%s]的权限不存在", pdId, permissionDistribute.getPermissionId()));
|
||||
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertTrue(null != permission, String.format("权限分发[id=%s]的权限[id=%s]不存在", pdId, permissionDistribute.getPermissionId()));
|
||||
// 校验主体
|
||||
Serializable subject = null;
|
||||
switch (subjectType) {
|
||||
@ -190,12 +201,35 @@ public class PermissionDistributeService {
|
||||
// 从权限分发减掉已经分发的并修改权限分发状态
|
||||
PermissionDistribute updateDistribute = new PermissionDistribute();
|
||||
updateDistribute.setId(permissionDistribute.getId());
|
||||
updateDistribute.setRemains(permissionDistribute.getRemains()-permissionSubject.getAmount());
|
||||
if(updateDistribute.getRemains()<=0){
|
||||
updateDistribute.setRemains(permissionDistribute.getRemains() - permissionSubject.getAmount());
|
||||
if (updateDistribute.getRemains() <= 0) {
|
||||
updateDistribute.setStatus(PermissionDistributeStatusEnum.InValid.getValue());
|
||||
}
|
||||
this.permissionDistributeDAO.updateByPrimaryKeySelective(updateDistribute);
|
||||
//
|
||||
return permissionSubjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成权限分发二维码
|
||||
*
|
||||
* @param pdId 权限分发id
|
||||
*/
|
||||
public String generateQrCode(Long pdId, LoginUserInfoVO loginInfo) {
|
||||
return qrCodeManager.getDistributeCode(pdId, loginInfo.getProject());
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信扫码获取权限分发相关信息
|
||||
*
|
||||
* @param code 用户编码
|
||||
* @param id 权限分发id
|
||||
*/
|
||||
public void scanPermissionDistributeInfo(String code, Long id) {
|
||||
AccountVO accountVO = this.authenticateService.getOrCreateUserByWmcode(WxApiService.MiniApp.JoyLink, code);
|
||||
PermissionDistribute permissionDistribute = this.permissionDistributeDAO.selectByPrimaryKey(id);
|
||||
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertTrue(null != permissionDistribute, String.format("权限分发[id=%s]不存在", id));
|
||||
Permission permission = this.permissionDAO.selectByPrimaryKey(permissionDistribute.getPermissionId());
|
||||
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertTrue(null != permission, String.format("权限分发[id=%s]的权限[id=%s]不存在", id, permissionDistribute.getPermissionId()));
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,80 @@
|
||||
package club.joylink.rtss.vo.permission;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 扫码获取权限分发的响应
|
||||
*/
|
||||
@Data
|
||||
public class ScanPermissionDistributeInfoRspVo {
|
||||
/**
|
||||
* 扫码用户的账号id
|
||||
*/
|
||||
private Long accountId;
|
||||
/**
|
||||
* 权限分发id
|
||||
*/
|
||||
private Long pdId;
|
||||
|
||||
/**
|
||||
* 关联权限id
|
||||
*/
|
||||
private Long permissionId;
|
||||
|
||||
/**
|
||||
* 分发来自subject id(rts_permission_subject)
|
||||
*/
|
||||
private Long sourceSubjectId;
|
||||
|
||||
/**
|
||||
* 总数量
|
||||
*/
|
||||
private Integer amount;
|
||||
|
||||
/**
|
||||
* 剩余数量
|
||||
*/
|
||||
private Integer remains;
|
||||
|
||||
/**
|
||||
* 是否永久:true/false
|
||||
*/
|
||||
private Boolean forever;
|
||||
|
||||
/**
|
||||
* 权限分发状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* 创建者id
|
||||
*/
|
||||
private Long creatorId;
|
||||
|
||||
/**
|
||||
* 备注描述
|
||||
*/
|
||||
private String dsc;
|
||||
}
|
Loading…
Reference in New Issue
Block a user