提交 1eca46e2 编写于 作者: S sunxiwang

1、员工活码列表查询sql调整2、添加批量生成员工二维码接口3、员工二维码详情接口返回参数新增素材数据4、生成员工二维码校验,不可重复新增

上级 7e8b677f
......@@ -5,8 +5,10 @@ import com.linkwechat.common.core.controller.BaseController;
import com.linkwechat.common.core.domain.AjaxResult;
import com.linkwechat.common.core.page.TableDataInfo;
import com.linkwechat.common.enums.BusinessType;
import com.linkwechat.common.exception.wecom.WeComException;
import com.linkwechat.common.utils.StringUtils;
import com.linkwechat.wecom.domain.WeEmpleCode;
import com.linkwechat.wecom.domain.WeEmpleCodeUseScop;
import com.linkwechat.wecom.service.IWeEmpleCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
......@@ -14,18 +16,18 @@ import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* 员工活码Controller
*
*
* @author ruoyi
* @date 2020-10-04
*/
@RestController
@RequestMapping("/wecom/code")
public class WeEmpleCodeController extends BaseController
{
public class WeEmpleCodeController extends BaseController {
@Autowired
private IWeEmpleCodeService weEmpleCodeService;
......@@ -34,8 +36,7 @@ public class WeEmpleCodeController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('wecom:code:list')")
@GetMapping("/list")
public TableDataInfo list(WeEmpleCode weEmpleCode)
{
public TableDataInfo list(WeEmpleCode weEmpleCode) {
startPage();
List<WeEmpleCode> list = weEmpleCodeService.selectWeEmpleCodeList(weEmpleCode);
return getDataTable(list);
......@@ -47,8 +48,7 @@ public class WeEmpleCodeController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('wecom:code:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
public AjaxResult getInfo(@PathVariable("id") Long id) {
return AjaxResult.success(weEmpleCodeService.selectWeEmpleCodeById(id));
}
......@@ -58,10 +58,39 @@ public class WeEmpleCodeController extends BaseController
@PreAuthorize("@ss.hasPermi('wecom:code:add')")
@Log(title = "员工活码", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody WeEmpleCode weEmpleCode)
{
weEmpleCodeService.insertWeEmpleCode(weEmpleCode);
return AjaxResult.success();
public AjaxResult add(@RequestBody WeEmpleCode weEmpleCode) {
try {
weEmpleCodeService.insertWeEmpleCode(weEmpleCode);
return AjaxResult.success();
} catch (Exception e) {
e.printStackTrace();
if (e instanceof WeComException){
return AjaxResult.error(e.getMessage());
}else {
return AjaxResult.error("请求接口异常!");
}
}
}
/**
* 批量新增员工活码
*/
@PreAuthorize("@ss.hasPermi('wecom:code:add')")
@Log(title = "批量新增员工活码", businessType = BusinessType.INSERT)
@PostMapping("/batchAdd")
public AjaxResult batchAdd(@RequestBody List<WeEmpleCodeUseScop> weEmpleCodeUseScops) {
try {
weEmpleCodeService.insertWeEmpleCodeBatch(weEmpleCodeUseScops);
return AjaxResult.success();
} catch (Exception e) {
e.printStackTrace();
if (e instanceof WeComException){
return AjaxResult.error(e.getMessage());
}else {
return AjaxResult.error("请求接口异常!");
}
}
}
/**
......@@ -70,8 +99,7 @@ public class WeEmpleCodeController extends BaseController
@PreAuthorize("@ss.hasPermi('wecom:code:edit')")
@Log(title = "员工活码", businessType = BusinessType.UPDATE)
@PutMapping("/update")
public AjaxResult edit(@RequestBody WeEmpleCode weEmpleCode)
{
public AjaxResult edit(@RequestBody WeEmpleCode weEmpleCode) {
weEmpleCodeService.updateWeEmpleCode(weEmpleCode);
return AjaxResult.success();
......@@ -82,9 +110,8 @@ public class WeEmpleCodeController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('wecom:code:remove')")
@Log(title = "员工活码", businessType = BusinessType.DELETE)
@DeleteMapping("/delete/{ids}")
public AjaxResult remove(@PathVariable String ids)
{
@DeleteMapping("/delete/{ids}")
public AjaxResult remove(@PathVariable String ids) {
List<String> idList = Arrays.stream(StringUtils.split(ids, ",")).collect(Collectors.toList());
return toAjax(weEmpleCodeService.batchRemoveWeEmpleCodeIds(idList));
}
......
......@@ -129,6 +129,20 @@ public class WeConstans {
*/
public static final Integer QR_CODE_EMPLE_CODE_SCENE = 2;
/**
* 客户添加时无需经过确认自动成为好友,是
*/
public static final Boolean IS_JOIN_CONFIR_MFRIENDS = true;
/**
* 客户添加时无需经过确认自动成为好友,否
*/
public static final Boolean NOT_IS_JOIN_CONFIR_MFRIENDS = false;
/**
* 批量生成的单人码 活动场景
*/
public static final String ONE_PERSON_CODE_GENERATED_BATCH="批量生成的单人码";
/**
* 微信接口相应端错误字段
......@@ -179,6 +193,12 @@ public class WeConstans {
public static final String CORPID = "CORP_ID";
/**
* 业务id类型1:组织机构id,2:成员id
*/
public static final Integer USE_SCOP_BUSINESSID_TYPE_USER = 2;
public static final Integer USE_SCOP_BUSINESSID_TYPE_ORG = 1;
/**
* 企微回调事件类型路由
*/
......
......@@ -53,6 +53,10 @@ public class WeEmpleCode extends BaseEntity
@TableField(exist = false)
private List<WeEmpleCodeTag> weEmpleCodeTags;
/** 扫码标签 */
@TableField(exist = false)
private WeMaterial weMaterial;
/** 新增联系方式的配置id */
private String configId;
......
......@@ -8,10 +8,6 @@ public class WeEmpleCodeDto {
* 欢迎语
*/
private String welcomeMsg;
/**
* 欢迎语模板类型:1:员工欢迎语;2:部门员工欢迎语;3:客户群欢迎语
*/
private Integer welcomeMsgTplType;
/**
* 分类id
*/
......
......@@ -108,7 +108,7 @@ public class WeEventChangeExternalContactImpl implements WeCallBackEventFactory
if (message.getState() != null && message.getWelcomeCode() != null) {
log.info("执行发送欢迎语>>>>>>>>>>>>>>>");
WeWelcomeMsg.WeWelcomeMsgBuilder weWelcomeMsgBuilder = WeWelcomeMsg.builder().welcome_code(message.getWelcomeCode());
WeEmpleCodeDto messageMap = weEmpleCodeService.selectWelcomeMsgByActivityScene(message.getState());
WeEmpleCodeDto messageMap = weEmpleCodeService.selectWelcomeMsgByActivityScene(message.getState(),message.getUserId());
if (messageMap != null) {
if (StringUtils.isNotEmpty(messageMap.getWelcomeMsg())){
Text text = new Text();
......
......@@ -84,5 +84,5 @@ public interface WeEmpleCodeMapper extends BaseMapper<WeEmpleCode>
* @param activityScene 活动场景
* @return
*/
public WeEmpleCodeDto selectWelcomeMsgByActivityScene(@Param("activityScene") String activityScene);
public WeEmpleCodeDto selectWelcomeMsgByActivityScene(@Param("activityScene") String activityScene, @Param("userId") String userId);
}
......@@ -2,6 +2,7 @@ package com.linkwechat.wecom.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.linkwechat.wecom.domain.WeEmpleCode;
import com.linkwechat.wecom.domain.WeEmpleCodeUseScop;
import com.linkwechat.wecom.domain.dto.WeEmpleCodeDto;
import java.util.List;
......@@ -75,7 +76,16 @@ public interface IWeEmpleCodeService extends IService<WeEmpleCode>
/**
* 通过活动场景获取客户欢迎语
* @param activityScene 活动场景
* @param userId 成员id
* @return
*/
public WeEmpleCodeDto selectWelcomeMsgByActivityScene(String activityScene);
public WeEmpleCodeDto selectWelcomeMsgByActivityScene(String activityScene, String userId);
/**
* 批量新增员工活码
*
* @param weEmpleCodeUseScops 员工信息
* @return 结果
*/
public void insertWeEmpleCodeBatch(List<WeEmpleCodeUseScop> weEmpleCodeUseScops);
}
......@@ -2,24 +2,29 @@ package com.linkwechat.wecom.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linkwechat.common.constant.WeConstans;
import com.linkwechat.common.exception.wecom.WeComException;
import com.linkwechat.common.utils.SecurityUtils;
import com.linkwechat.common.utils.StringUtils;
import com.linkwechat.wecom.client.WeExternalContactClient;
import com.linkwechat.wecom.domain.WeEmpleCode;
import com.linkwechat.wecom.domain.WeEmpleCodeUseScop;
import com.linkwechat.wecom.domain.WeMaterial;
import com.linkwechat.wecom.domain.dto.WeEmpleCodeDto;
import com.linkwechat.wecom.domain.dto.WeExternalContactDto;
import com.linkwechat.wecom.mapper.WeEmpleCodeMapper;
import com.linkwechat.wecom.service.IWeEmpleCodeService;
import com.linkwechat.wecom.service.IWeEmpleCodeTagService;
import com.linkwechat.wecom.service.IWeEmpleCodeUseScopService;
import com.linkwechat.wecom.service.IWeMaterialService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
......@@ -42,6 +47,9 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl<WeEmpleCodeMapper, WeEmp
@Autowired
private WeExternalContactClient weExternalContactClient;
@Autowired
private IWeMaterialService materialService;
/**
* 查询员工活码
*
......@@ -50,7 +58,15 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl<WeEmpleCodeMapper, WeEmp
*/
@Override
public WeEmpleCode selectWeEmpleCodeById(Long id) {
return this.baseMapper.selectWeEmpleCodeById(id);
WeEmpleCode weEmpleCode = this.baseMapper.selectWeEmpleCodeById(id);
//查询活码详情中素材信息
Optional.ofNullable(weEmpleCode).map(WeEmpleCode::getMediaId).ifPresent(mediaId -> {
WeMaterial weMaterialInfo = materialService.findWeMaterialById(mediaId);
if (weMaterialInfo != null) {
weEmpleCode.setWeMaterial(weMaterialInfo);
}
});
return weEmpleCode;
}
/**
......@@ -62,10 +78,10 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl<WeEmpleCodeMapper, WeEmp
@Override
public List<WeEmpleCode> selectWeEmpleCodeList(WeEmpleCode weEmpleCode) {
List<WeEmpleCode> weEmpleCodeList = this.baseMapper.selectWeEmpleCodeList(weEmpleCode);
if (weEmpleCodeList !=null){
weEmpleCodeList.forEach(empleCode ->{
if (weEmpleCodeList != null) {
weEmpleCodeList.forEach(empleCode -> {
List<WeEmpleCodeUseScop> weEmpleCodeUseScopList = empleCode.getWeEmpleCodeUseScops();
if (CollectionUtil.isNotEmpty(weEmpleCodeUseScopList)){
if (CollectionUtil.isNotEmpty(weEmpleCodeUseScopList)) {
String useUserName = weEmpleCodeUseScopList.stream().map(WeEmpleCodeUseScop::getBusinessName)
.filter(StringUtils::isNotEmpty).collect(Collectors.joining(","));
empleCode.setUseUserName(useUserName);
......@@ -86,31 +102,10 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl<WeEmpleCodeMapper, WeEmp
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void insertWeEmpleCode(WeEmpleCode weEmpleCode) {
public void insertWeEmpleCode(WeEmpleCode weEmpleCode){
weEmpleCode.setCreateTime(new Date());
weEmpleCode.setCreateBy(SecurityUtils.getUsername());
WeExternalContactDto.WeContactWay weContactWay = getWeContactWay(weEmpleCode);
try {
WeExternalContactDto weExternalContactDto = weExternalContactClient.addContactWay(weContactWay);
//新增联系方式的配置id
String configId = weExternalContactDto.getConfig_id();
//联系我二维码链接
String qrCode = weExternalContactDto.getQr_code();
weEmpleCode.setConfigId(configId);
weEmpleCode.setQrCode(qrCode);
} catch (Exception e) {
e.printStackTrace();
}
if (this.baseMapper.insertWeEmpleCode(weEmpleCode) == 1) {
if (CollectionUtil.isNotEmpty(weEmpleCode.getWeEmpleCodeUseScops())) {
weEmpleCode.getWeEmpleCodeUseScops().forEach(item -> item.setEmpleCodeId(weEmpleCode.getId()));
iWeEmpleCodeUseScopService.saveBatch(weEmpleCode.getWeEmpleCodeUseScops());
}
if (CollectionUtil.isNotEmpty(weEmpleCode.getWeEmpleCodeTags())) {
weEmpleCode.getWeEmpleCodeTags().forEach(item -> item.setEmpleCodeId(weEmpleCode.getId()));
weEmpleCodeTagService.saveBatch(weEmpleCode.getWeEmpleCodeTags());
}
}
addWeEmplCode(weEmpleCode);
}
/**
......@@ -120,6 +115,7 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl<WeEmpleCodeMapper, WeEmp
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void updateWeEmpleCode(WeEmpleCode weEmpleCode) {
WeExternalContactDto.WeContactWay weContactWay = getWeContactWay(weEmpleCode);
try {
......@@ -159,6 +155,7 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl<WeEmpleCodeMapper, WeEmp
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteWeEmpleCodeById(Long id) {
WeEmpleCode weEmpleCode = getById(id);
if (weEmpleCode != null && weEmpleCode.getConfigId() != null) {
......@@ -175,13 +172,73 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl<WeEmpleCodeMapper, WeEmp
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int batchRemoveWeEmpleCodeIds(List<String> ids) {
return this.baseMapper.batchRemoveWeEmpleCodeIds(ids);
}
@Override
public WeEmpleCodeDto selectWelcomeMsgByActivityScene(String activityScene) {
return this.baseMapper.selectWelcomeMsgByActivityScene(activityScene);
public WeEmpleCodeDto selectWelcomeMsgByActivityScene(String activityScene, String userId) {
return this.baseMapper.selectWelcomeMsgByActivityScene(activityScene, userId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void insertWeEmpleCodeBatch(List<WeEmpleCodeUseScop> weEmpleCodeUseScops){
Optional.ofNullable(weEmpleCodeUseScops).orElseGet(ArrayList::new).forEach(useScops -> {
//机构类型数据返回不执行生成二维码业务
if (WeConstans.USE_SCOP_BUSINESSID_TYPE_ORG.equals(useScops.getBusinessIdType())) {
return;
}
List<WeEmpleCodeUseScop> weEmpleCodeUseScopList = new ArrayList<>();
weEmpleCodeUseScopList.add(useScops);
WeEmpleCode weEmpleCode = new WeEmpleCode();
weEmpleCode.setCreateTime(new Date());
weEmpleCode.setCreateBy(SecurityUtils.getUsername());
weEmpleCode.setCodeType(WeConstans.SINGLE_EMPLE_CODE_TYPE);
weEmpleCode.setIsJoinConfirmFriends(WeConstans.IS_JOIN_CONFIR_MFRIENDS);
weEmpleCode.setActivityScene(WeConstans.ONE_PERSON_CODE_GENERATED_BATCH);
weEmpleCode.setWeEmpleCodeUseScops(weEmpleCodeUseScopList);
addWeEmplCode(weEmpleCode);
});
}
/**
* 新增员工活码
*
* @param weEmpleCode
*/
private void addWeEmplCode(WeEmpleCode weEmpleCode){
List<WeEmpleCodeUseScop> weEmpleCodeUseScops = weEmpleCode.getWeEmpleCodeUseScops();
List<String> businessIdList = Optional.ofNullable(weEmpleCodeUseScops).orElseGet(ArrayList::new)
.stream().map(WeEmpleCodeUseScop::getBusinessId)
.collect(Collectors.toList());
List<WeEmpleCodeUseScop> weEmpleCodeUseScopList = iWeEmpleCodeUseScopService.listByIds(businessIdList);
if (weEmpleCodeUseScopList != null) {
throw new WeComException("该员工或部门已经创建,无法重复创建");
}
WeExternalContactDto.WeContactWay weContactWay = getWeContactWay(weEmpleCode);
try {
WeExternalContactDto weExternalContactDto = weExternalContactClient.addContactWay(weContactWay);
//新增联系方式的配置id
String configId = weExternalContactDto.getConfig_id();
//联系我二维码链接
String qrCode = weExternalContactDto.getQr_code();
weEmpleCode.setConfigId(configId);
weEmpleCode.setQrCode(qrCode);
} catch (Exception e) {
e.printStackTrace();
}
if (this.baseMapper.insertWeEmpleCode(weEmpleCode) == 1) {
if (CollectionUtil.isNotEmpty(weEmpleCode.getWeEmpleCodeUseScops())) {
weEmpleCode.getWeEmpleCodeUseScops().forEach(item -> item.setEmpleCodeId(weEmpleCode.getId()));
iWeEmpleCodeUseScopService.saveBatch(weEmpleCode.getWeEmpleCodeUseScops());
}
if (CollectionUtil.isNotEmpty(weEmpleCode.getWeEmpleCodeTags())) {
weEmpleCode.getWeEmpleCodeTags().forEach(item -> item.setEmpleCodeId(weEmpleCode.getId()));
weEmpleCodeTagService.saveBatch(weEmpleCode.getWeEmpleCodeTags());
}
}
}
private WeExternalContactDto.WeContactWay getWeContactWay(WeEmpleCode weEmpleCode) {
......@@ -194,12 +251,15 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl<WeEmpleCodeMapper, WeEmp
weContactWay.setSkip_verify(weEmpleCode.getIsJoinConfirmFriends());
weContactWay.setState(weEmpleCode.getActivityScene());
if (CollectionUtil.isNotEmpty(weEmpleCodeUseScops)) {
String[] userIdArr = weEmpleCodeUseScops.stream().filter(itme -> 2 == itme.getBusinessIdType())
String[] userIdArr = weEmpleCodeUseScops.stream().filter(itme -> 2 == itme.getBusinessIdType() && itme.getBusinessId() != null)
.map(WeEmpleCodeUseScop::getBusinessId).toArray(String[]::new);
weContactWay.setUser(userIdArr);
Long[] partyArr = weEmpleCodeUseScops.stream().filter(itme -> 1 == itme.getBusinessIdType())
.map(WeEmpleCodeUseScop::getBusinessId).toArray(Long[]::new);
weContactWay.setParty(partyArr);
if (!WeConstans.SINGLE_EMPLE_CODE_TYPE.equals(weEmpleCode.getCodeType())) {
Long[] partyArr = weEmpleCodeUseScops.stream().filter(itme -> 1 == itme.getBusinessIdType() && itme.getBusinessId() != null)
.map(item -> Long.valueOf(item.getBusinessId())).collect(Collectors.toList()).toArray(new Long[]{});
weContactWay.setParty(partyArr);
}
}
return weContactWay;
}
......
......@@ -15,6 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="delFlag" column="del_flag" />
<result property="configId" column="config_id" />
<result property="qrCode" column="qr_code" />
<result property="mediaId" column="media_id" />
<collection property="weEmpleCodeUseScops" ofType="com.linkwechat.wecom.domain.WeEmpleCodeUseScop">
<result property="businessId" column="business_id" />
<result property="businessName" column="business_name" />
......@@ -34,6 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select
wecode.id,
wecode.code_type,
wecode.media_id,
wecode.is_join_confirm_friends,
wecode.activity_scene,
wecode.welcome_msg,
......@@ -123,6 +125,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="delFlag != null">del_flag,</if>
<if test="configId != null">config_id,</if>
<if test="qrCode != null">qr_code,</if>
<if test="mediaId != null">media_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
......@@ -135,6 +138,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="delFlag != null">#{delFlag},</if>
<if test="configId != null">#{configId},</if>
<if test="qrCode != null">#{qrCode},</if>
<if test="mediaId != null">#{mediaId},</if>
</trim>
</insert>
......@@ -150,6 +154,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="configId != null">config_id = #{configId},</if>
<if test="qrCode != null">qr_code = #{qrCode},</if>
<if test="mediaId != null">media_id = #{mediaId},</if>
</trim>
where id = #{id}
</update>
......@@ -179,8 +184,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectWelcomeMsgByActivityScene" parameterType="String" resultType="com.linkwechat.wecom.domain.dto.WeEmpleCodeDto">
select
wmt.welcome_msg ,
wmt.welcome_msg_tpl_type,
wecode.welcome_msg ,
wm.category_id,
wm.material_url,
wm.content,
......@@ -189,14 +193,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
wm.cover_url
from
we_emple_code wecode
left join
we_msg_tlp_scope wmts on wecode.welcome_msg = wmts .msg_tlp_id
left join we_msg_tlp wmt on wmt.id = wmts .msg_tlp_id
left join we_material wm on wm .id = wmt.media_id
where wmt.del_flag =0
left join we_emple_code_use_scop wecus on
wecode.id = wecus.emple_code_id
left join we_material wm on
wm .id = wecode.media_id
where
wecode.del_flag = 0
<if test="activityScene != null and activityScene != ''">
and wecode.activity_scene = #{activityScene}
</if>
<if test="userId != null and userId != ''">
and wecus.business_id = #{userId}
</if>
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册