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

@ -17,6 +17,11 @@ public class LarkActiveImportVo {
@ExcelProperty("填写者ID") @ExcelProperty("填写者ID")
private String userId; 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 LarkActive selectLarkActiveById(Long id);
public List<LarkActive> selectLarkActiveByName(@Param("activeName") String activeName, @Param("flag") Long flag); 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 lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
import org.apache.commons.lang3.StringUtils; 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;
@ -239,16 +240,42 @@ public class LarkUserActiveRelatoinServiceImpl implements ILarkUserActiveRelatoi
@Override @Override
public void submit(List<LarkActiveImportVo> list, String appId, String appSecret) { public void submit(List<LarkActiveImportVo> list, String appId, String appSecret) {
LarkUserRequest larkUserRequest = new LarkUserRequest(appId, 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<>(); Set<String> openIdSet = new HashSet<>();
for (LarkActiveImportVo larkActiveImportVo : list) { for (LarkActiveImportVo larkActiveImportVo : list) {
if (StringUtils.isNotBlank(larkActiveImportVo.getUserId())) { if (StringUtils.isBlank(larkActiveImportVo.getUserId()) || StringUtils.isBlank(activeCode)) {
try { continue;
larkUserRequest.setOpenId(larkActiveImportVo.getUserId()); }
GetUserRespBody userInfoDetail = larkUserHelper.getUserInfo(larkUserRequest); LarkActiveEnum active = LarkActiveEnum.getByCode(activeCode);
openIdSet.add(userInfoDetail.getUser().getOpenId()); if (active == null){
} catch (Exception e) { continue;
log.info("import file error userId:{}", larkActiveImportVo.getUserId(), e); }
} 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)) { if (CollectionUtils.isEmpty(openIdSet)) {
@ -264,14 +291,19 @@ public class LarkUserActiveRelatoinServiceImpl implements ILarkUserActiveRelatoi
if (CollectionUtils.isEmpty(openIdList)) { if (CollectionUtils.isEmpty(openIdList)) {
return; return;
} }
//todo yxy 任务id List<LarkActive> larkActives = larkActiveMapper.selectLarkActiveByDesc(activeCode, FlagStatus.OK.getCode());
Long activeId = null; if (CollectionUtils.isEmpty(larkActives)) {
Map<String, LarkUserActiveRelatoin> relationMap = larkUserActiveRelatoinMapper.queryByOpenIdList(openIdList,activeId).stream() return;
.collect(Collectors.toMap(LarkUserActiveRelatoin::getUserName, Function.identity(),(k1,k2)->k1)); }
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<>(); List<Long> waitUpdateList = new ArrayList<>();
Set<String> inviteOpenIdSet = new HashSet<>();
for (LarkLoginLog larkLoginLog : larkLoginLogs) { for (LarkLoginLog larkLoginLog : larkLoginLogs) {
LarkUserActiveRelatoin activeRelatoin = relationMap.get(larkLoginLog.getOpenId()); LarkUserActiveRelatoin activeRelatoin = relationMap.get(larkLoginLog.getOpenId());
if (activeRelatoin == null){ inviteOpenIdSet.add(larkLoginLog.getOpenId());
if (activeRelatoin == null) {
LarkUserActiveRelatoin relatoin = new LarkUserActiveRelatoin(); LarkUserActiveRelatoin relatoin = new LarkUserActiveRelatoin();
relatoin.setCreateTime(new Date()); relatoin.setCreateTime(new Date());
relatoin.setCreateBy("system"); relatoin.setCreateBy("system");
@ -281,14 +313,17 @@ public class LarkUserActiveRelatoinServiceImpl implements ILarkUserActiveRelatoi
relatoin.setUserName(larkLoginLog.getOpenId()); relatoin.setUserName(larkLoginLog.getOpenId());
relatoin.setCompanyName(larkLoginLog.getCompanyName()); relatoin.setCompanyName(larkLoginLog.getCompanyName());
larkUserActiveRelatoinMapper.insertLarkUserActiveRelatoin(relatoin); larkUserActiveRelatoinMapper.insertLarkUserActiveRelatoin(relatoin);
}else { } else {
if (!LarkActiveStageEnum.ADJUST.getCode().equals(activeRelatoin.getActiveStage())){ if (!LarkActiveStageEnum.ADJUST.getCode().equals(activeRelatoin.getActiveStage())) {
waitUpdateList.add(activeRelatoin.getActiveId()); waitUpdateList.add(activeRelatoin.getActiveId());
} }
} }
} }
if (CollectionUtils.isNotEmpty(waitUpdateList)){ if (CollectionUtils.isNotEmpty(inviteOpenIdSet)) {
larkUserActiveRelatoinMapper.updateByIdList(waitUpdateList,LarkActiveStageEnum.ADJUST.getCode()); 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} where active_name = #{activeName} and flag = #{flag}
</select> </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" <insert id="insertLarkActive" parameterType="com.ruoyi.flyingbook.domain.LarkActive" useGeneratedKeys="true"
keyProperty="id"> keyProperty="id">
insert into lark_active 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"> <select id="queryByInviteList" resultType="com.ruoyi.flyingbook.domain.LarkUserActiveInviteRelatoin">
<include refid="selectLarkUserActiveInviteRelatoinVo"/> <include refid="selectLarkUserActiveInviteRelatoinVo"/>
WHERE invite_stage = #{inviteStage} and flag = #{flag} 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> </select>
<insert id="insertLarkUserActiveInviteRelatoin" parameterType="com.ruoyi.flyingbook.domain.LarkUserActiveInviteRelatoin" useGeneratedKeys="true" keyProperty="id"> <insert id="insertLarkUserActiveInviteRelatoin" parameterType="com.ruoyi.flyingbook.domain.LarkUserActiveInviteRelatoin" useGeneratedKeys="true" keyProperty="id">

@ -62,7 +62,7 @@
<select id="queryByOpenIdList" <select id="queryByOpenIdList"
resultMap="LarkUserActiveRelatoinResult"> resultMap="LarkUserActiveRelatoinResult">
<include refid="selectLarkUserActiveRelatoinVo"/> <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"> <foreach collection="openIdList" open="(" separator="," close=")" item="item">
#{item} #{item}
</foreach> </foreach>

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

Loading…
Cancel
Save