导入活动信息
continuous-integration/drone/push Build is passing Details

飞书小程序
YXY 1 year ago
parent dc9a4bd689
commit 5d298ff008

@ -20,16 +20,16 @@ import com.ruoyi.flyingbook.domain.lark.LarkUserRequest;
import com.ruoyi.flyingbook.domain.larkactive.*;
import com.ruoyi.flyingbook.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@ -173,7 +173,7 @@ public class LarkActiveController extends BaseController {
*
*/
@ResponseBody
@GetMapping("/export")
@GetMapping("/exportActiveFile")
public void export(HttpServletResponse response) {
try {
LarkActiveCountVo larkActiveCountVo = larkUserActiveRelatoinService.queryCount();
@ -190,7 +190,7 @@ public class LarkActiveController extends BaseController {
}
}
@PostMapping("/import")
@PostMapping("/importActiveFile")
public void importActive(@RequestPart("file") MultipartFile file) {
try {
List<LarkActiveImportVo> list = EasyExcel.read(file.getInputStream())

@ -17,6 +17,11 @@ public class LarkActiveImportVo {
@ExcelProperty("填写者ID")
private String userId;
/**
* @see com.ruoyi.common.enums.LarkActiveEnum
*/
@ExcelProperty("活动编码")
private String activeCode;
}

@ -22,6 +22,7 @@ public interface LarkActiveMapper {
*/
public LarkActive selectLarkActiveById(Long id);
public List<LarkActive> selectLarkActiveByName(@Param("activeName") String activeName, @Param("flag") Long flag);
public List<LarkActive> selectLarkActiveByDesc(@Param("activeDesc") String activeDesc, @Param("flag") Long flag);
/**
*

@ -28,6 +28,7 @@ import com.ruoyi.flyingbook.service.ILarkUserActiveRelatoinService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -239,16 +240,42 @@ public class LarkUserActiveRelatoinServiceImpl implements ILarkUserActiveRelatoi
@Override
public void submit(List<LarkActiveImportVo> list, String appId, String appSecret) {
LarkUserRequest larkUserRequest = new LarkUserRequest(appId, appSecret);
Map<String, List<LarkActiveImportVo>> map = new HashMap<>();
for (LarkActiveImportVo larkActiveImportVo : list) {
String activeCode = larkActiveImportVo.getActiveCode();
if (StringUtils.isBlank(larkActiveImportVo.getUserId()) || StringUtils.isBlank(activeCode)) {
continue;
}
LarkActiveEnum active = LarkActiveEnum.getByCode(activeCode);
if (active == null){
continue;
}
List<LarkActiveImportVo> midList = map.getOrDefault(active.getCode(), new ArrayList<>());
midList.add(larkActiveImportVo);
map.put(active.getCode(),midList);
}
for (Map.Entry<String, List<LarkActiveImportVo>> entry : map.entrySet()) {
submitByActive(entry.getValue(),entry.getKey(),larkUserRequest);
}
}
private void submitByActive(List<LarkActiveImportVo> list,String activeCode,LarkUserRequest larkUserRequest){
Set<String> openIdSet = new HashSet<>();
for (LarkActiveImportVo larkActiveImportVo : list) {
if (StringUtils.isNotBlank(larkActiveImportVo.getUserId())) {
try {
larkUserRequest.setOpenId(larkActiveImportVo.getUserId());
GetUserRespBody userInfoDetail = larkUserHelper.getUserInfo(larkUserRequest);
openIdSet.add(userInfoDetail.getUser().getOpenId());
} catch (Exception e) {
log.info("import file error userId:{}", larkActiveImportVo.getUserId(), e);
}
if (StringUtils.isBlank(larkActiveImportVo.getUserId()) || StringUtils.isBlank(activeCode)) {
continue;
}
LarkActiveEnum active = LarkActiveEnum.getByCode(activeCode);
if (active == null){
continue;
}
try {
larkUserRequest.setOpenId(larkActiveImportVo.getUserId());
GetUserRespBody userInfoDetail = larkUserHelper.getUserInfo(larkUserRequest);
openIdSet.add(userInfoDetail.getUser().getOpenId());
} catch (Exception e) {
log.info("import file error userId:{}", larkActiveImportVo.getUserId(), e);
}
}
if (CollectionUtils.isEmpty(openIdSet)) {
@ -264,14 +291,19 @@ public class LarkUserActiveRelatoinServiceImpl implements ILarkUserActiveRelatoi
if (CollectionUtils.isEmpty(openIdList)) {
return;
}
//todo yxy 任务id
Long activeId = null;
Map<String, LarkUserActiveRelatoin> relationMap = larkUserActiveRelatoinMapper.queryByOpenIdList(openIdList,activeId).stream()
.collect(Collectors.toMap(LarkUserActiveRelatoin::getUserName, Function.identity(),(k1,k2)->k1));
List<LarkActive> larkActives = larkActiveMapper.selectLarkActiveByDesc(activeCode, FlagStatus.OK.getCode());
if (CollectionUtils.isEmpty(larkActives)) {
return;
}
Long activeId = larkActives.get(0).getId();
Map<String, LarkUserActiveRelatoin> relationMap = larkUserActiveRelatoinMapper.queryByOpenIdList(openIdList, activeId).stream()
.collect(Collectors.toMap(LarkUserActiveRelatoin::getUserName, Function.identity(), (k1, k2) -> k1));
List<Long> waitUpdateList = new ArrayList<>();
Set<String> inviteOpenIdSet = new HashSet<>();
for (LarkLoginLog larkLoginLog : larkLoginLogs) {
LarkUserActiveRelatoin activeRelatoin = relationMap.get(larkLoginLog.getOpenId());
if (activeRelatoin == null){
inviteOpenIdSet.add(larkLoginLog.getOpenId());
if (activeRelatoin == null) {
LarkUserActiveRelatoin relatoin = new LarkUserActiveRelatoin();
relatoin.setCreateTime(new Date());
relatoin.setCreateBy("system");
@ -281,14 +313,17 @@ public class LarkUserActiveRelatoinServiceImpl implements ILarkUserActiveRelatoi
relatoin.setUserName(larkLoginLog.getOpenId());
relatoin.setCompanyName(larkLoginLog.getCompanyName());
larkUserActiveRelatoinMapper.insertLarkUserActiveRelatoin(relatoin);
}else {
if (!LarkActiveStageEnum.ADJUST.getCode().equals(activeRelatoin.getActiveStage())){
} else {
if (!LarkActiveStageEnum.ADJUST.getCode().equals(activeRelatoin.getActiveStage())) {
waitUpdateList.add(activeRelatoin.getActiveId());
}
}
}
if (CollectionUtils.isNotEmpty(waitUpdateList)){
larkUserActiveRelatoinMapper.updateByIdList(waitUpdateList,LarkActiveStageEnum.ADJUST.getCode());
if (CollectionUtils.isNotEmpty(inviteOpenIdSet)) {
larkUserActiveInviteRelatoinService.inviteSuccess(new ArrayList<>(inviteOpenIdSet));
}
if (CollectionUtils.isNotEmpty(waitUpdateList)) {
larkUserActiveRelatoinMapper.updateByIdList(waitUpdateList, LarkActiveStageEnum.ADJUST.getCode());
}
}

@ -144,6 +144,11 @@
where active_name = #{activeName} and flag = #{flag}
</select>
<select id="selectLarkActiveByDesc" resultMap="LarkActiveResult">
<include refid="selectLarkActiveVo"/>
where active_desc = #{activeDesc} and flag = #{flag}
</select>
<insert id="insertLarkActive" parameterType="com.ruoyi.flyingbook.domain.LarkActive" useGeneratedKeys="true"
keyProperty="id">
insert into lark_active

@ -60,7 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="queryByInviteList" resultType="com.ruoyi.flyingbook.domain.LarkUserActiveInviteRelatoin">
<include refid="selectLarkUserActiveInviteRelatoinVo"/>
WHERE invite_stage = #{inviteStage} and flag = #{flag}
and invite_stage in (<foreach collection="inviteList" open="(" separator="," close=")" item="item">#{item}</foreach>)
and invite_user_name in (<foreach collection="inviteList" open="(" separator="," close=")" item="item">#{item}</foreach>)
</select>
<insert id="insertLarkUserActiveInviteRelatoin" parameterType="com.ruoyi.flyingbook.domain.LarkUserActiveInviteRelatoin" useGeneratedKeys="true" keyProperty="id">

@ -62,7 +62,7 @@
<select id="queryByOpenIdList"
resultMap="LarkUserActiveRelatoinResult">
<include refid="selectLarkUserActiveRelatoinVo"/>
where activeId = #{activeId} and userName in
where active_id = #{activeId} and user_name in
<foreach collection="openIdList" open="(" separator="," close=")" item="item">
#{item}
</foreach>

@ -112,7 +112,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
, "/lark/active/comment"
, "/lark/active/queryComment"
, "/lark/active/submit"
, "/lark/active/export").anonymous()
, "/lark/active/exportActiveFile"
, "/lark/active/importActiveFile").anonymous()
.antMatchers(
HttpMethod.GET,
"/*.html",

Loading…
Cancel
Save