接入文件服务器

飞书小程序
YXY 1 year ago
parent cfdcda3458
commit 5daed4d743

@ -7,7 +7,7 @@ import lombok.Data;
* @create 2023-08-16 16:58 * @create 2023-08-16 16:58
*/ */
@Data @Data
public class RequestVo { public class LarkActiveBaseRequestVo {
/** /**
* *

@ -1,17 +1,13 @@
package com.ruoyi.common.utils.file; package com.ruoyi.common.utils.file;
import java.io.File; import java.io.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import com.ruoyi.common.utils.StringPlusUtils; import com.ruoyi.common.utils.StringPlusUtils;
import org.springframework.web.multipart.MultipartFile;
/** /**
* *
@ -200,4 +196,30 @@ public class FileUtils extends org.apache.commons.io.FileUtils
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString()); String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString());
return encode.replaceAll("\\+", "%20"); return encode.replaceAll("\\+", "%20");
} }
public static File multipartFile2File(MultipartFile multipartFile){
String fileName = multipartFile.getOriginalFilename();
File file = new File(fileName);
OutputStream out = null;
try{
//获取文件流,以文件流的方式输出到新文件
// InputStream in = multipartFile.getInputStream();
out = new FileOutputStream(file);
byte[] ss = multipartFile.getBytes();
for(int i = 0; i < ss.length; i++){
out.write(ss[i]);
}
}catch(IOException e){
e.printStackTrace();
}finally {
if (out != null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return file;
}
} }

@ -66,7 +66,16 @@
<groupId>org.aspectj</groupId> <groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId> <artifactId>aspectjweaver</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos-sts_api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.155</version>
</dependency>
</dependencies> </dependencies>

@ -0,0 +1,92 @@
package com.ruoyi.flyingbook.CosHelper;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.Headers;
import com.qcloud.cos.auth.AnonymousCOSCredentials;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.auth.COSSigner;
import com.qcloud.cos.exception.CosClientException;
import com.qcloud.cos.exception.CosServiceException;
import com.qcloud.cos.http.HttpMethodName;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.model.Bucket;
import com.qcloud.cos.model.CannedAccessControlList;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.model.PutObjectResult;
import com.qcloud.cos.model.ciModel.job.DocHtmlRequest;
import com.qcloud.cos.region.Region;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.File;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @author yuxiangyong
* @create 2023-08-19 9:52
*/
@Slf4j
@Component
public class CosHelper {
private String secretId = "AKID62pQpzvd7MyVs31mV3OXUVKxNadT7Zu5";
private String secretKey = "2EXcUYQ8fz61jGahbMvISbaMxMYZO0Qg";
private COSClient buildClinet(){
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
Region region = new Region("ap-beijing");
ClientConfig clientConfig = new ClientConfig(region);
clientConfig.setHttpProtocol(HttpProtocol.https);
return new COSClient(cred, clientConfig);
}
public PutObjectResult upload(String bucketName, String key, File localFile){
COSClient cosClient = null;
try {
cosClient = buildClinet();
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
return putObjectResult;
}catch (Exception e){
log.info("upload file error",e);
}finally {
shutdown(cosClient);
}
return null;
}
/**
*
* @param bucketName
* @param key
* @return
*/
public String previewUrl(String bucketName, String key){
COSClient cosClient = null;
try {
cosClient = buildClinet();
Date expirationDate = new Date(System.currentTimeMillis() + 30 * 60 * 1000);
Map<String, String> params = new HashMap<String, String>();
Map<String, String> headers = new HashMap<String, String>();
HttpMethodName method = HttpMethodName.GET;
URL url = cosClient.generatePresignedUrl(bucketName, key, expirationDate, method, headers, params);
System.out.println(url.toString());
}catch (Exception e){
log.info("upload file error",e);
}finally {
shutdown(cosClient);
}
return null;
}
private void shutdown(COSClient cosClient){
if (cosClient != null){
cosClient.shutdown();
}
}
}

@ -0,0 +1,75 @@
package com.ruoyi.flyingbook.CosHelper;
import com.tencent.cloud.CosStsClient;
import com.tencent.cloud.Response;
import java.util.TreeMap;
/**
* @author yuxiangyong
* @create 2023-08-19 9:46
*/
public class CosStsHelper {
// 根据 github 提供的 maven 集成方法导入 java sts sdk使用 3.1.0 及更高版本
public static void main(String[] args) {
TreeMap<String, Object> config = new TreeMap<String, Object>();
try {
//这里的 SecretId 和 SecretKey 代表了用于申请临时密钥的永久身份(主账号、子账号等),子账号需要具有操作存储桶的权限。
String secretId = System.getenv("secretId");//用户的 SecretId建议使用子账号密钥授权遵循最小权限指引降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
String secretKey = System.getenv("secretKey");//用户的 SecretKey建议使用子账号密钥授权遵循最小权限指引降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
// 替换为您的云 api 密钥 SecretId
config.put("secretId", secretId);
// 替换为您的云 api 密钥 SecretKey
config.put("secretKey", secretKey);
// 设置域名:
// 如果您使用了腾讯云 cvm可以设置内部域名
//config.put("host", "sts.internal.tencentcloudapi.com");
// 临时密钥有效时长,单位是秒,默认 1800 秒,目前主账号最长 2 小时(即 7200 秒),子账号最长 36 小时(即 129600
config.put("durationSeconds", 1800);
// 换成您的 bucket
config.put("bucket", "examplebucket-1250000000");
// 换成 bucket 所在地区
config.put("region", "ap-guangzhou");
// 这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径
// 列举几种典型的前缀授权场景:
// 1、允许访问所有对象"*"
// 2、允许访问指定的对象"a/a1.txt", "b/b1.txt"
// 3、允许访问指定前缀的对象"a*", "a/*", "b/*"
// 如果填写了“*”,将允许用户访问所有资源;除非业务需要,否则请按照最小权限原则授予用户相应的访问权限范围。
config.put("allowPrefixes", new String[]{
"exampleobject",
"exampleobject2"
});
// 密钥的权限列表。必须在这里指定本次临时密钥所需要的权限。
// 简单上传、表单上传和分块上传需要以下的权限,其他权限列表请参见 https://cloud.tencent.com/document/product/436/31923
String[] allowActions = new String[]{
// 简单上传
"name/cos:PutObject",
// 表单上传、小程序上传
"name/cos:PostObject",
// 分块上传
"name/cos:InitiateMultipartUpload",
"name/cos:ListMultipartUploads",
"name/cos:ListParts",
"name/cos:UploadPart",
"name/cos:CompleteMultipartUpload"
};
config.put("allowActions", allowActions);
Response response = CosStsClient.getCredential(config);
System.out.println(response.credentials.tmpSecretId);
System.out.println(response.credentials.tmpSecretKey);
System.out.println(response.credentials.sessionToken);
} catch (Exception e) {
e.printStackTrace();
throw new IllegalArgumentException("no valid secret !");
}
}
}

@ -1,5 +1,7 @@
package com.ruoyi.flyingbook.LarkHelper; package com.ruoyi.flyingbook.LarkHelper;
import com.alibaba.fastjson.JSONObject;
import com.lark.oapi.core.token.AccessTokenType;
import com.lark.oapi.service.approval.v4.model.GetInstanceRespBody; import com.lark.oapi.service.approval.v4.model.GetInstanceRespBody;
import com.lark.oapi.service.authen.v1.model.CreateAccessTokenReq; import com.lark.oapi.service.authen.v1.model.CreateAccessTokenReq;
import com.lark.oapi.service.authen.v1.model.CreateAccessTokenReqBody; import com.lark.oapi.service.authen.v1.model.CreateAccessTokenReqBody;
@ -9,9 +11,12 @@ import com.lark.oapi.service.contact.v3.model.*;
import com.ruoyi.flyingbook.domain.lark.LarkApprovalRequest; import com.ruoyi.flyingbook.domain.lark.LarkApprovalRequest;
import com.ruoyi.flyingbook.domain.lark.LarkException; import com.ruoyi.flyingbook.domain.lark.LarkException;
import com.ruoyi.flyingbook.domain.lark.LarkUserRequest; import com.ruoyi.flyingbook.domain.lark.LarkUserRequest;
import com.ruoyi.flyingbook.domain.larkactive.LarkSessionResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets;
/** /**
* @author yuxiangyong * @author yuxiangyong
@ -22,12 +27,15 @@ import org.springframework.stereotype.Component;
public class LarkUserHelper extends LarkHelper{ public class LarkUserHelper extends LarkHelper{
static String openId = "ou_cd09481727e91fce1f12b7b0ed1500d2"; static String openId = "ou_cd09481727e91fce1f12b7b0ed1500d2";
static String code = "ou_cd09481727e91fce1f12b7b0ed1500d2";
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
LarkUserHelper bk = new LarkUserHelper(); LarkUserHelper bk = new LarkUserHelper();
GetUserRespBody userRespBody = bk.getUserInfoDetail(new LarkUserRequest(appId, secret, openId)); GetUserRespBody userRespBody = bk.getUserInfoDetail(new LarkUserRequest(appId, secret, openId));
// userRespBody.getUser().getName(); // userRespBody.getUser().getName();
System.out.println(userRespBody); System.out.println(userRespBody);
LarkSessionResponse larkSessionResponse = bk.tokenLoginValidate(new LarkUserRequest(appId, secret, openId, code));
System.out.println(larkSessionResponse);
} }
@ -71,4 +79,22 @@ public class LarkUserHelper extends LarkHelper{
throw new RuntimeException(new LarkException("LarkUserHelper.getUserToken",e.getMessage(),request).getErrorMessageBody()); throw new RuntimeException(new LarkException("LarkUserHelper.getUserToken",e.getMessage(),request).getErrorMessageBody());
} }
} }
/**
* userToken
*/
private static final String TOKEN_LOGIN_VALIDATE = "https://open.feishu.cn/open-apis/mina/v2/tokenLoginValidate";
public LarkSessionResponse tokenLoginValidate(LarkUserRequest request) {
try {
JSONObject body = new JSONObject();
body.put("code",request.getCode());
byte[] resBody = buildClient(request)
.post(TOKEN_LOGIN_VALIDATE, body, AccessTokenType.Tenant)
.getBody();
String resStr = new String(resBody, StandardCharsets.UTF_8);
return JSONObject.parseObject(resStr, LarkSessionResponse.class);
} catch (Exception e) {
throw new RuntimeException(new LarkException("LarkUserHelper.getUserToken",e.getMessage(),request).getErrorMessageBody());
}
}
} }

@ -1,30 +1,33 @@
package com.ruoyi.flyingbook.controller; package com.ruoyi.flyingbook.controller;
import com.ruoyi.flyingbook.CosHelper.CosHelper;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.enums.FlagStatus; import com.ruoyi.common.enums.FlagStatus;
import com.ruoyi.common.enums.LarkActiveInviteStageEnum; import com.ruoyi.common.enums.LarkActiveInviteStageEnum;
import com.ruoyi.common.enums.LarkActiveStageEnum; import com.ruoyi.common.enums.LarkActiveStageEnum;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.flyingbook.LarkHelper.LarkUserHelper;
import com.ruoyi.flyingbook.domain.LarkActive; import com.ruoyi.flyingbook.domain.LarkActive;
import com.ruoyi.flyingbook.domain.LarkUserActiveInviteRelatoin; import com.ruoyi.flyingbook.domain.LarkUserActiveInviteRelatoin;
import com.ruoyi.flyingbook.domain.LarkUserActiveRelatoin; import com.ruoyi.flyingbook.domain.LarkUserActiveRelatoin;
import com.ruoyi.flyingbook.domain.edi.ResponseVo; import com.ruoyi.flyingbook.domain.edi.ResponseVo;
import com.ruoyi.flyingbook.domain.larkactive.LarkActiveCountVo; import com.ruoyi.flyingbook.domain.lark.LarkUserRequest;
import com.ruoyi.flyingbook.domain.larkactive.LarkActiveRequest; import com.ruoyi.flyingbook.domain.larkactive.*;
import com.ruoyi.flyingbook.domain.larkactive.LarkActiveUserRelationRequest;
import com.ruoyi.flyingbook.domain.larkactive.LarkActiveVo;
import com.ruoyi.flyingbook.service.ILarkActiveService; import com.ruoyi.flyingbook.service.ILarkActiveService;
import com.ruoyi.flyingbook.service.ILarkUserActiveInviteRelatoinService; import com.ruoyi.flyingbook.service.ILarkUserActiveInviteRelatoinService;
import com.ruoyi.flyingbook.service.ILarkUserActiveRelatoinService; import com.ruoyi.flyingbook.service.ILarkUserActiveRelatoinService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.util.Date;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/lark/active")
public class LarkActiveController extends BaseController { public class LarkActiveController extends BaseController {
@Autowired @Autowired
@ -33,6 +36,22 @@ public class LarkActiveController extends BaseController {
private ILarkUserActiveRelatoinService larkUserActiveRelatoinService; private ILarkUserActiveRelatoinService larkUserActiveRelatoinService;
@Autowired @Autowired
private ILarkUserActiveInviteRelatoinService larkUserActiveInviteRelatoinService; private ILarkUserActiveInviteRelatoinService larkUserActiveInviteRelatoinService;
@Autowired
private LarkUserHelper larkUserHelper;
@Autowired
private CosHelper cosHelper;
private static final String APP_ID = "cli_a482a8572cbc9013";
private static final String APP_SECRET = "lZNXbCLlOslWbwBIVc4qvgxOdnfA8Mos";
/**
*
*/
@PostMapping("/getSession")
public ResponseVo<LarkSessionDetailResponse> getSession(@RequestBody LarkSessionRequest request) {
LarkSessionResponse larkSessionResponse = larkUserHelper.tokenLoginValidate(new LarkUserRequest(APP_ID, APP_SECRET, null, request.getCode()));
return new ResponseVo<>(larkSessionResponse.getData());
}
/** /**
* *
@ -52,43 +71,17 @@ public class LarkActiveController extends BaseController {
} }
/** /**
* todo yxy *
*/ */
@PostMapping("/uploadActiveFile") @PostMapping("/uploadActiveFile")
public ResponseVo<LarkActiveVo> uploadActiveFile(@RequestBody LarkActiveRequest request) { public ResponseVo<LarkUserActiveRelatoin> uploadActiveFile(@RequestParam("file") MultipartFile file,@RequestParam("userName")String userName,@RequestParam("larkActiveId") Long larkActiveId) {
LarkActive larkActive = larkActiveService.selectLarkActiveById(request.getLarkActiveId()); LarkActiveUserRelationRequest request = new LarkActiveUserRelationRequest();
return new ResponseVo(larkActive); request.setFile(file);
request.setUserName(userName);
request.setLarkActiveId(larkActiveId);
return larkUserActiveRelatoinService.commitFile(request);
} }
/**
*
*/
@PostMapping("/queryWaitReview")
public ResponseVo<LarkUserActiveRelatoin> queryWaitReview(@RequestBody LarkActiveUserRelationRequest request) {
request.setActiveStage(LarkActiveStageEnum.SUBMIT.getCode());
return larkUserActiveRelatoinService.queryPage(request);
}
/**
*
*/
@PostMapping("/approve")
public void approve(@RequestBody LarkUserActiveRelatoin request) {
LarkUserActiveInviteRelatoin larkUserActiveInviteRelatoin = new LarkUserActiveInviteRelatoin();
larkUserActiveInviteRelatoin.setFlag(FlagStatus.OK.getCode());
larkUserActiveInviteRelatoin.setCompanyName(request.getCompanyName());
larkUserActiveInviteRelatoin.setInviteUserName(request.getUserName());
larkUserActiveInviteRelatoin.setInviteStage(LarkActiveInviteStageEnum.INVITE.getCode());
List<LarkUserActiveInviteRelatoin> larkUserActiveInviteRelatoins = larkUserActiveInviteRelatoinService.selectLarkUserActiveInviteRelatoinList(larkUserActiveInviteRelatoin);
for (LarkUserActiveInviteRelatoin userActiveInviteRelatoin : larkUserActiveInviteRelatoins) {
userActiveInviteRelatoin.setInviteStage(LarkActiveInviteStageEnum.ACTIVE.getCode());
larkUserActiveInviteRelatoinService.updateLarkUserActiveInviteRelatoin(userActiveInviteRelatoin);
}
request.setActiveStage(LarkActiveStageEnum.ADJUST.getCode());
larkUserActiveRelatoinService.updateLarkUserActiveRelatoin(request);
}
/** /**
* *
*/ */

@ -45,6 +45,11 @@ public class LarkActive extends BaseEntity {
*/ */
private String activeImageUrl; private String activeImageUrl;
/**
*
*/
private Integer activeImageCount;
/** /**
* *
* @see com.ruoyi.common.enums.LarkActiveTypeEnum * @see com.ruoyi.common.enums.LarkActiveTypeEnum

@ -0,0 +1,36 @@
package com.ruoyi.flyingbook.domain;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* lark_user_active_image
*
* @author ruoyi
* @date 2023-08-19
*/
@Data
public class LarkUserActiveImage extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
/** 用户活动关联关系id */
private Long userActiveRelatoin;
/** 存储桶路径 */
private String bucketName;
/** 文件的唯一key */
private String fileKey;
/**
* @see com.ruoyi.common.enums.FlagStatus
*/
private Long flag;
}

@ -22,4 +22,9 @@ public class LarkUserRequest extends LarkRequest{
super(appId, appSecret); super(appId, appSecret);
this.openId = openId; this.openId = openId;
} }
public LarkUserRequest(String appId, String appSecret, String openId, String code) {
super(appId, appSecret);
this.code = code;
}
} }

@ -1,6 +1,6 @@
package com.ruoyi.flyingbook.domain.larkactive; package com.ruoyi.flyingbook.domain.larkactive;
import com.ruoyi.common.core.domain.RequestVo; import com.ruoyi.common.core.domain.LarkActiveBaseRequestVo;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@ -10,7 +10,7 @@ import java.util.List;
* @create 2023-08-16 16:58 * @create 2023-08-16 16:58
*/ */
@Data @Data
public class LarkActiveRequest extends RequestVo { public class LarkActiveRequest extends LarkActiveBaseRequestVo {
private String companyName; private String companyName;

@ -1,20 +1,27 @@
package com.ruoyi.flyingbook.domain.larkactive; package com.ruoyi.flyingbook.domain.larkactive;
import com.ruoyi.common.core.domain.RequestVo; import com.ruoyi.common.core.domain.LarkActiveBaseRequestVo;
import lombok.Data; import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
/** /**
* @author yuxiangyong * @author yuxiangyong
* @create 2023-08-16 16:58 * @create 2023-08-16 16:58
*/ */
@Data @Data
public class LarkActiveUserRelationRequest extends RequestVo { public class LarkActiveUserRelationRequest extends LarkActiveBaseRequestVo {
private String companyName; private String companyName;
private Long larkActiveId; private Long larkActiveId;
private String userName; private String userName;
private MultipartFile file;
/** /**
* @see com.ruoyi.common.enums.FlagStatus * @see com.ruoyi.common.enums.FlagStatus
*/ */

@ -0,0 +1,20 @@
package com.ruoyi.flyingbook.domain.larkactive;
import lombok.Data;
/**
* @author yuxiangyong
* @create 2023-08-16 16:58
*/
@Data
public class LarkSessionDetailResponse {
private String open_id;
private String employee_id;
private String session_key;
private String tenant_key;
private String access_token;
private String expires_in;
private String refresh_token;
}

@ -0,0 +1,14 @@
package com.ruoyi.flyingbook.domain.larkactive;
import lombok.Data;
/**
* @author yuxiangyong
* @create 2023-08-16 16:58
*/
@Data
public class LarkSessionRequest {
private String code;
}

@ -0,0 +1,16 @@
package com.ruoyi.flyingbook.domain.larkactive;
import lombok.Data;
/**
* @author yuxiangyong
* @create 2023-08-16 16:58
*/
@Data
public class LarkSessionResponse {
private String code;
private String msg;
private LarkSessionDetailResponse data;
}

@ -0,0 +1,62 @@
package com.ruoyi.flyingbook.mapper;
import com.ruoyi.flyingbook.domain.LarkUserActiveImage;
import java.util.List;
/**
* Mapper
*
* @author ruoyi
* @date 2023-08-19
*/
public interface LarkUserActiveImageMapper
{
/**
*
*
* @param id ID
* @return
*/
public LarkUserActiveImage selectLarkUserActiveImageById(Long id);
/**
*
*
* @param larkUserActiveImage
* @return
*/
public List<LarkUserActiveImage> selectLarkUserActiveImageList(LarkUserActiveImage larkUserActiveImage);
/**
*
*
* @param larkUserActiveImage
* @return
*/
public int insertLarkUserActiveImage(LarkUserActiveImage larkUserActiveImage);
/**
*
*
* @param larkUserActiveImage
* @return
*/
public int updateLarkUserActiveImage(LarkUserActiveImage larkUserActiveImage);
/**
*
*
* @param id ID
* @return
*/
public int deleteLarkUserActiveImageById(Long id);
/**
*
*
* @param ids ID
* @return
*/
public int deleteLarkUserActiveImageByIds(Long[] ids);
}

@ -0,0 +1,62 @@
package com.ruoyi.flyingbook.service;
import com.ruoyi.flyingbook.domain.LarkUserActiveImage;
import java.util.List;
/**
* Service
*
* @author ruoyi
* @date 2023-08-19
*/
public interface ILarkUserActiveImageService
{
/**
*
*
* @param id ID
* @return
*/
public LarkUserActiveImage selectLarkUserActiveImageById(Long id);
/**
*
*
* @param larkUserActiveImage
* @return
*/
public List<LarkUserActiveImage> selectLarkUserActiveImageList(LarkUserActiveImage larkUserActiveImage);
/**
*
*
* @param larkUserActiveImage
* @return
*/
public int insertLarkUserActiveImage(LarkUserActiveImage larkUserActiveImage);
/**
*
*
* @param larkUserActiveImage
* @return
*/
public int updateLarkUserActiveImage(LarkUserActiveImage larkUserActiveImage);
/**
*
*
* @param ids ID
* @return
*/
public int deleteLarkUserActiveImageByIds(Long[] ids);
/**
*
*
* @param id ID
* @return
*/
public int deleteLarkUserActiveImageById(Long id);
}

@ -33,6 +33,8 @@ public interface ILarkUserActiveRelatoinService {
public List<LarkUserActiveRelatoin> selectLarkUserActiveRelatoinList(LarkUserActiveRelatoin larkUserActiveRelatoin); public List<LarkUserActiveRelatoin> selectLarkUserActiveRelatoinList(LarkUserActiveRelatoin larkUserActiveRelatoin);
public ResponseVo<LarkUserActiveRelatoin> queryPage(LarkActiveUserRelationRequest request); public ResponseVo<LarkUserActiveRelatoin> queryPage(LarkActiveUserRelationRequest request);
public ResponseVo<LarkUserActiveRelatoin> commitFile(LarkActiveUserRelationRequest request);
/** /**
* *
* *

@ -0,0 +1,96 @@
package com.ruoyi.flyingbook.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.flyingbook.domain.LarkUserActiveImage;
import com.ruoyi.flyingbook.mapper.LarkUserActiveImageMapper;
import com.ruoyi.flyingbook.service.ILarkUserActiveImageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Service
*
* @author ruoyi
* @date 2023-08-19
*/
@Service
public class LarkUserActiveImageServiceImpl implements ILarkUserActiveImageService
{
@Autowired
private LarkUserActiveImageMapper larkUserActiveImageMapper;
/**
*
*
* @param id ID
* @return
*/
@Override
public LarkUserActiveImage selectLarkUserActiveImageById(Long id)
{
return larkUserActiveImageMapper.selectLarkUserActiveImageById(id);
}
/**
*
*
* @param larkUserActiveImage
* @return
*/
@Override
public List<LarkUserActiveImage> selectLarkUserActiveImageList(LarkUserActiveImage larkUserActiveImage)
{
return larkUserActiveImageMapper.selectLarkUserActiveImageList(larkUserActiveImage);
}
/**
*
*
* @param larkUserActiveImage
* @return
*/
@Override
public int insertLarkUserActiveImage(LarkUserActiveImage larkUserActiveImage)
{
larkUserActiveImage.setCreateTime(DateUtils.getNowDate());
return larkUserActiveImageMapper.insertLarkUserActiveImage(larkUserActiveImage);
}
/**
*
*
* @param larkUserActiveImage
* @return
*/
@Override
public int updateLarkUserActiveImage(LarkUserActiveImage larkUserActiveImage)
{
larkUserActiveImage.setUpdateTime(DateUtils.getNowDate());
return larkUserActiveImageMapper.updateLarkUserActiveImage(larkUserActiveImage);
}
/**
*
*
* @param ids ID
* @return
*/
@Override
public int deleteLarkUserActiveImageByIds(Long[] ids)
{
return larkUserActiveImageMapper.deleteLarkUserActiveImageByIds(ids);
}
/**
*
*
* @param id ID
* @return
*/
@Override
public int deleteLarkUserActiveImageById(Long id)
{
return larkUserActiveImageMapper.deleteLarkUserActiveImageById(id);
}
}

@ -1,9 +1,13 @@
package com.ruoyi.flyingbook.service.impl; package com.ruoyi.flyingbook.service.impl;
import com.qcloud.cos.model.PutObjectResult;
import com.ruoyi.common.enums.FlagStatus; import com.ruoyi.common.enums.FlagStatus;
import com.ruoyi.common.enums.LarkActiveStageEnum; import com.ruoyi.common.enums.LarkActiveStageEnum;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.flyingbook.CosHelper.CosHelper;
import com.ruoyi.flyingbook.domain.LarkActive; import com.ruoyi.flyingbook.domain.LarkActive;
import com.ruoyi.flyingbook.domain.LarkUserActiveImage;
import com.ruoyi.flyingbook.domain.LarkUserActiveRelatoin; import com.ruoyi.flyingbook.domain.LarkUserActiveRelatoin;
import com.ruoyi.flyingbook.domain.edi.ResponseVo; import com.ruoyi.flyingbook.domain.edi.ResponseVo;
import com.ruoyi.flyingbook.domain.larkactive.LarkActiveCountVo; import com.ruoyi.flyingbook.domain.larkactive.LarkActiveCountVo;
@ -11,6 +15,7 @@ import com.ruoyi.flyingbook.domain.larkactive.LarkActiveRequest;
import com.ruoyi.flyingbook.domain.larkactive.LarkActiveUserRelationRequest; import com.ruoyi.flyingbook.domain.larkactive.LarkActiveUserRelationRequest;
import com.ruoyi.flyingbook.domain.larkactive.LarkActiveVo; import com.ruoyi.flyingbook.domain.larkactive.LarkActiveVo;
import com.ruoyi.flyingbook.mapper.LarkActiveMapper; import com.ruoyi.flyingbook.mapper.LarkActiveMapper;
import com.ruoyi.flyingbook.mapper.LarkUserActiveImageMapper;
import com.ruoyi.flyingbook.mapper.LarkUserActiveRelatoinMapper; import com.ruoyi.flyingbook.mapper.LarkUserActiveRelatoinMapper;
import com.ruoyi.flyingbook.service.ILarkUserActiveRelatoinService; import com.ruoyi.flyingbook.service.ILarkUserActiveRelatoinService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
@ -18,7 +23,10 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
@ -36,6 +44,13 @@ public class LarkUserActiveRelatoinServiceImpl implements ILarkUserActiveRelatoi
private LarkUserActiveRelatoinMapper larkUserActiveRelatoinMapper; private LarkUserActiveRelatoinMapper larkUserActiveRelatoinMapper;
@Autowired @Autowired
private LarkActiveMapper larkActiveMapper; private LarkActiveMapper larkActiveMapper;
@Autowired
private CosHelper cosHelper;
@Autowired
private LarkUserActiveImageMapper larkUserActiveImageMapper;
private static final String BUCKET_NAME = "ruoyi-1308275795";
/** /**
* *
@ -58,17 +73,17 @@ public class LarkUserActiveRelatoinServiceImpl implements ILarkUserActiveRelatoi
int userCount = larkUserActiveRelatoinMapper.queryUserCount(larkUserActiveRelatoin); int userCount = larkUserActiveRelatoinMapper.queryUserCount(larkUserActiveRelatoin);
larkActiveCountVo.setTotalUserQty(userCount); larkActiveCountVo.setTotalUserQty(userCount);
List<LarkActiveVo> larkActiveCountVos = larkUserActiveRelatoinMapper.queryUserCountGroupByActive(larkUserActiveRelatoin); List<LarkActiveVo> larkActiveCountVos = larkUserActiveRelatoinMapper.queryUserCountGroupByActive(larkUserActiveRelatoin);
if (CollectionUtils.isNotEmpty(larkActiveCountVos)){ if (CollectionUtils.isNotEmpty(larkActiveCountVos)) {
List<Long> activeIdList = larkActiveCountVos.stream().map(LarkActiveVo::getId).distinct().collect(Collectors.toList()); List<Long> activeIdList = larkActiveCountVos.stream().map(LarkActiveVo::getId).distinct().collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(activeIdList)){ if (CollectionUtils.isNotEmpty(activeIdList)) {
LarkActiveRequest query = new LarkActiveRequest(); LarkActiveRequest query = new LarkActiveRequest();
query.setFlag(FlagStatus.OK.getCode()); query.setFlag(FlagStatus.OK.getCode());
query.setLarkActiveIdList(activeIdList); query.setLarkActiveIdList(activeIdList);
Map<Long, LarkActive> activeMap = larkActiveMapper.queryCompleteActive(query).stream().collect(Collectors.toMap(LarkActive::getId, Function.identity(), (k1, k2) -> k1)); Map<Long, LarkActive> activeMap = larkActiveMapper.queryCompleteActive(query).stream().collect(Collectors.toMap(LarkActive::getId, Function.identity(), (k1, k2) -> k1));
for (LarkActiveVo activeCountVo : larkActiveCountVos) { for (LarkActiveVo activeCountVo : larkActiveCountVos) {
LarkActive larkActive = activeMap.get(activeCountVo.getId()); LarkActive larkActive = activeMap.get(activeCountVo.getId());
if (larkActive != null){ if (larkActive != null) {
BeanUtils.copyProperties(larkActive,activeCountVo); BeanUtils.copyProperties(larkActive, activeCountVo);
} }
} }
} }
@ -90,18 +105,71 @@ public class LarkUserActiveRelatoinServiceImpl implements ILarkUserActiveRelatoi
@Override @Override
public ResponseVo<LarkUserActiveRelatoin> queryPage(LarkActiveUserRelationRequest request) { public ResponseVo<LarkUserActiveRelatoin> queryPage(LarkActiveUserRelationRequest request) {
if (request == null || StringUtils.isBlank(request.getCompanyName())){ if (request == null || StringUtils.isBlank(request.getCompanyName())) {
return new ResponseVo(request.getCurrentPage(),request.getPageSize()); return new ResponseVo(request.getCurrentPage(), request.getPageSize());
} }
request.setFlag(FlagStatus.OK.getCode()); request.setFlag(FlagStatus.OK.getCode());
LarkUserActiveRelatoin larkActive = new LarkUserActiveRelatoin(); LarkUserActiveRelatoin larkActive = new LarkUserActiveRelatoin();
BeanUtils.copyProperties(request,larkActive); BeanUtils.copyProperties(request, larkActive);
Integer count = larkUserActiveRelatoinMapper.count(larkActive); Integer count = larkUserActiveRelatoinMapper.count(larkActive);
if (count > 0){ if (count > 0) {
List<LarkUserActiveRelatoin> larkUserActiveRelatoins = larkUserActiveRelatoinMapper.queryPage(request); List<LarkUserActiveRelatoin> larkUserActiveRelatoins = larkUserActiveRelatoinMapper.queryPage(request);
return new ResponseVo(request.getCurrentPage(),request.getPageSize(),larkUserActiveRelatoins,count); return new ResponseVo(request.getCurrentPage(), request.getPageSize(), larkUserActiveRelatoins, count);
}
return new ResponseVo(request.getCurrentPage(), request.getPageSize(), null, count);
}
@Override
public ResponseVo<LarkUserActiveRelatoin> commitFile(LarkActiveUserRelationRequest request) {
MultipartFile multipartFile = request.getFile();
File file = FileUtils.multipartFile2File(multipartFile);
String name = file.getName();
String[] split = name.split("\\.");
String key = String.format("%s_%s", split[0], System.currentTimeMillis());
split[0] = key;
key = String.join(".", split);
LarkUserActiveRelatoin relatoin = queryUserActiveRelation(request.getUserName(), request.getLarkActiveId());
if (relatoin == null) {
return new ResponseVo();
}
Integer totalCount = userActiveCount(relatoin) + 1;
LarkActive larkActive = larkActiveMapper.selectLarkActiveById(relatoin.getActiveId());
cosHelper.upload(BUCKET_NAME, key, file);
buildUserActiveImage(relatoin, key);
if (totalCount >= larkActive.getActiveImageCount()) {
relatoin.setActiveStage(LarkActiveStageEnum.ADJUST.getCode());
}
return new ResponseVo();
}
private void buildUserActiveImage(LarkUserActiveRelatoin relatoin, String key) {
LarkUserActiveImage larkUserActiveImage = new LarkUserActiveImage();
larkUserActiveImage.setCreateTime(new Date());
larkUserActiveImage.setCreateBy("System");
larkUserActiveImage.setUserActiveRelatoin(relatoin.getId());
larkUserActiveImage.setFlag(FlagStatus.OK.getCode());
larkUserActiveImage.setBucketName(BUCKET_NAME);
larkUserActiveImage.setFileKey(key);
larkUserActiveImageMapper.insertLarkUserActiveImage(larkUserActiveImage);
}
private Integer userActiveCount(LarkUserActiveRelatoin relatoin) {
LarkUserActiveImage larkUserActiveImage = new LarkUserActiveImage();
larkUserActiveImage.setUserActiveRelatoin(relatoin.getId());
larkUserActiveImage.setFlag(FlagStatus.OK.getCode());
return larkUserActiveImageMapper.selectLarkUserActiveImageList(larkUserActiveImage).size();
}
private LarkUserActiveRelatoin queryUserActiveRelation(String userName, Long activeId) {
LarkUserActiveRelatoin relatoin = new LarkUserActiveRelatoin();
relatoin.setUserName(userName);
relatoin.setActiveId(activeId);
relatoin.setFlag(FlagStatus.OK.getCode());
List<LarkUserActiveRelatoin> larkUserActiveRelatoins = larkUserActiveRelatoinMapper.selectLarkUserActiveRelatoinList(relatoin);
if (CollectionUtils.isNotEmpty(larkUserActiveRelatoins)) {
return larkUserActiveRelatoins.get(0);
} }
return new ResponseVo(request.getCurrentPage(),request.getPageSize(),null,count); return null;
} }
/** /**

@ -14,6 +14,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="activeImageUrl" column="active_image_url" /> <result property="activeImageUrl" column="active_image_url" />
<result property="activeType" column="active_type" /> <result property="activeType" column="active_type" />
<result property="activeScore" column="active_score" /> <result property="activeScore" column="active_score" />
<result property="activeImageCount" column="active_image_count" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
@ -23,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectLarkActiveVo"> <sql id="selectLarkActiveVo">
select id, company_id, company_name, active_name, active_desc, active_content, active_image_url, active_type, active_score, create_by, create_time, update_by, update_time, flag, remark from lark_active select id, company_id, company_name, active_name, active_desc, active_content, active_image_url, active_type, active_score,active_image_count, create_by, create_time, update_by, update_time, flag, remark from lark_active
</sql> </sql>
<select id="selectLarkActiveList" parameterType="com.ruoyi.flyingbook.domain.LarkActive" resultMap="LarkActiveResult"> <select id="selectLarkActiveList" parameterType="com.ruoyi.flyingbook.domain.LarkActive" resultMap="LarkActiveResult">
@ -37,6 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="activeImageUrl != null and activeImageUrl != ''"> and active_image_url = #{activeImageUrl}</if> <if test="activeImageUrl != null and activeImageUrl != ''"> and active_image_url = #{activeImageUrl}</if>
<if test="activeType != null and activeType != ''"> and active_type = #{activeType}</if> <if test="activeType != null and activeType != ''"> and active_type = #{activeType}</if>
<if test="activeScore != null and activeScore != ''"> and active_score = #{activeScore}</if> <if test="activeScore != null and activeScore != ''"> and active_score = #{activeScore}</if>
<if test="activeImageCount != null "> and active_image_count = #{activeImageCount}</if>
<if test="flag != null "> and flag = #{flag}</if> <if test="flag != null "> and flag = #{flag}</if>
</where> </where>
</select> </select>
@ -52,6 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="activeImageUrl != null and activeImageUrl != ''"> and active_image_url = #{activeImageUrl}</if> <if test="activeImageUrl != null and activeImageUrl != ''"> and active_image_url = #{activeImageUrl}</if>
<if test="activeType != null and activeType != ''"> and active_type = #{activeType}</if> <if test="activeType != null and activeType != ''"> and active_type = #{activeType}</if>
<if test="activeScore != null and activeScore != ''"> and active_score = #{activeScore}</if> <if test="activeScore != null and activeScore != ''"> and active_score = #{activeScore}</if>
<if test="activeImageCount != null "> and active_image_count = #{activeImageCount}</if>
<if test="flag != null "> and flag = #{flag}</if> <if test="flag != null "> and flag = #{flag}</if>
</where> </where>
</select> </select>
@ -67,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="activeImageUrl != null and activeImageUrl != ''"> and active_image_url = #{activeImageUrl}</if> <if test="activeImageUrl != null and activeImageUrl != ''"> and active_image_url = #{activeImageUrl}</if>
<if test="activeType != null and activeType != ''"> and active_type = #{activeType}</if> <if test="activeType != null and activeType != ''"> and active_type = #{activeType}</if>
<if test="activeScore != null and activeScore != ''"> and active_score = #{activeScore}</if> <if test="activeScore != null and activeScore != ''"> and active_score = #{activeScore}</if>
<if test="activeImageCount != null "> and active_image_count = #{activeImageCount}</if>
<if test="flag != null "> and flag = #{flag}</if> <if test="flag != null "> and flag = #{flag}</if>
</where> </where>
limit #{offset},{pageSize} limit #{offset},{pageSize}
@ -83,6 +87,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="activeImageUrl != null and activeImageUrl != ''"> and active_image_url = #{activeImageUrl}</if> <if test="activeImageUrl != null and activeImageUrl != ''"> and active_image_url = #{activeImageUrl}</if>
<if test="activeType != null and activeType != ''"> and active_type = #{activeType}</if> <if test="activeType != null and activeType != ''"> and active_type = #{activeType}</if>
<if test="activeScore != null and activeScore != ''"> and active_score = #{activeScore}</if> <if test="activeScore != null and activeScore != ''"> and active_score = #{activeScore}</if>
<if test="activeImageCount != null "> and active_image_count = #{activeImageCount}</if>
<if test="flag != null "> and flag = #{flag}</if> <if test="flag != null "> and flag = #{flag}</if>
<if test="larkActiveIdList != null "> <if test="larkActiveIdList != null ">
and id in <foreach collection="larkActiveIdList" item="item" open="(" separator="," close=")"> and id in <foreach collection="larkActiveIdList" item="item" open="(" separator="," close=")">
@ -108,6 +113,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="activeImageUrl != null">active_image_url,</if> <if test="activeImageUrl != null">active_image_url,</if>
<if test="activeType != null">active_type,</if> <if test="activeType != null">active_type,</if>
<if test="activeScore != null">active_score,</if> <if test="activeScore != null">active_score,</if>
<if test="activeScore != null">active_image_count,</if>
<if test="createBy != null and createBy != ''">create_by,</if> <if test="createBy != null and createBy != ''">create_by,</if>
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
@ -124,6 +130,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="activeImageUrl != null">#{activeImageUrl},</if> <if test="activeImageUrl != null">#{activeImageUrl},</if>
<if test="activeType != null">#{activeType},</if> <if test="activeType != null">#{activeType},</if>
<if test="activeScore != null">#{activeScore},</if> <if test="activeScore != null">#{activeScore},</if>
<if test="activeImageCount != null">#{activeImageCount},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if> <if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
@ -144,6 +151,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="activeImageUrl != null">active_image_url = #{activeImageUrl},</if> <if test="activeImageUrl != null">active_image_url = #{activeImageUrl},</if>
<if test="activeType != null">active_type = #{activeType},</if> <if test="activeType != null">active_type = #{activeType},</if>
<if test="activeScore != null">active_score = #{activeScore},</if> <if test="activeScore != null">active_score = #{activeScore},</if>
<if test="activeImageCount != null">active_image_count = #{activeImageCount},</if>
<if test="createBy != null and createBy != ''">create_by = #{createBy},</if> <if test="createBy != null and createBy != ''">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if> <if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.flyingbook.mapper.LarkUserActiveImageMapper">
<resultMap type="com.ruoyi.flyingbook.domain.LarkUserActiveImage" id="LarkUserActiveImageResult">
<result property="id" column="id" />
<result property="userActiveRelatoin" column="user_active_relatoin" />
<result property="bucketName" column="bucket_name" />
<result property="fileKey" column="file_key" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="flag" column="flag" />
<result property="remark" column="remark" />
</resultMap>
<sql id="selectLarkUserActiveImageVo">
select id, user_active_relatoin, bucket_name, file_key, create_by, create_time, update_by, update_time, flag, remark from lark_user_active_image
</sql>
<select id="selectLarkUserActiveImageList" parameterType="com.ruoyi.flyingbook.domain.LarkUserActiveImage" resultMap="LarkUserActiveImageResult">
<include refid="selectLarkUserActiveImageVo"/>
<where>
<if test="userActiveRelatoin != null "> and user_active_relatoin = #{userActiveRelatoin}</if>
<if test="bucketName != null and bucketName != ''"> and bucket_name like concat('%', #{bucketName}, '%')</if>
<if test="fileKey != null and fileKey != ''"> and file_key = #{fileKey}</if>
<if test="flag != null "> and flag = #{flag}</if>
</where>
</select>
<select id="selectLarkUserActiveImageById" parameterType="Long" resultMap="LarkUserActiveImageResult">
<include refid="selectLarkUserActiveImageVo"/>
where id = #{id}
</select>
<insert id="insertLarkUserActiveImage" parameterType="com.ruoyi.flyingbook.domain.LarkUserActiveImage" useGeneratedKeys="true" keyProperty="id">
insert into lark_user_active_image
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userActiveRelatoin != null">user_active_relatoin,</if>
<if test="bucketName != null">bucket_name,</if>
<if test="fileKey != null">file_key,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="flag != null">flag,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userActiveRelatoin != null">#{userActiveRelatoin},</if>
<if test="bucketName != null">#{bucketName},</if>
<if test="fileKey != null">#{fileKey},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="flag != null">#{flag},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateLarkUserActiveImage" parameterType="com.ruoyi.flyingbook.domain.LarkUserActiveImage">
update lark_user_active_image
<trim prefix="SET" suffixOverrides=",">
<if test="userActiveRelatoin != null">user_active_relatoin = #{userActiveRelatoin},</if>
<if test="bucketName != null">bucket_name = #{bucketName},</if>
<if test="fileKey != null">file_key = #{fileKey},</if>
<if test="createBy != null and createBy != ''">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="flag != null">flag = #{flag},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteLarkUserActiveImageById" parameterType="Long">
delete from lark_user_active_image where id = #{id}
</delete>
<delete id="deleteLarkUserActiveImageByIds" parameterType="String">
delete from lark_user_active_image where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

@ -97,8 +97,13 @@
group by user_name group by user_name
</select> </select>
<resultMap type="com.ruoyi.flyingbook.domain.larkactive.LarkActiveCountVo" id="CountGroupResult">
<result property="id" column="id"/>
<result property="qty" column="qty"/>
</resultMap>
<select id="queryUserCountGroupByActive" parameterType="com.ruoyi.flyingbook.domain.LarkUserActiveRelatoin" <select id="queryUserCountGroupByActive" parameterType="com.ruoyi.flyingbook.domain.LarkUserActiveRelatoin"
resultMap="com.ruoyi.flyingbook.domain.larkactive.LarkActiveCountVo"> resultMap="CountGroupResult">
select active_id as id ,count(id) as qty from lark_user_active_relatoin select active_id as id ,count(id) as qty from lark_user_active_relatoin
<where> <where>
<if test="companyId != null ">and company_id = #{companyId}</if> <if test="companyId != null ">and company_id = #{companyId}</if>

@ -98,7 +98,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.authorizeRequests() .authorizeRequests()
// 对于登录login 验证码captchaImage 允许匿名访问 // 对于登录login 验证码captchaImage 允许匿名访问
.antMatchers("/login", "/captchaImage", "/approval","/syncEmail","/scheduledReminders", .antMatchers("/login", "/captchaImage", "/approval","/syncEmail","/scheduledReminders",
"/robot/callback", "/sync2Table", "/createPdf", "/cjtTicket").anonymous() "/robot/callback", "/sync2Table", "/createPdf", "/cjtTicket", "/lark/active/**").anonymous()
.antMatchers( .antMatchers(
HttpMethod.GET, HttpMethod.GET,
"/*.html", "/*.html",

Loading…
Cancel
Save