| | |
| | | package com.ruoyi.member.service.impl.member; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.core.utils.DateUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.member.domain.dto.MgtMemberSuggestPageDto; |
| | | import com.ruoyi.member.domain.dto.MgtReplayMemberSuggestDto; |
| | | import com.ruoyi.member.domain.dto.MgtTagMemberSuggestDto; |
| | | import com.ruoyi.member.domain.pojo.member.MemberSuggest; |
| | | import com.ruoyi.member.domain.vo.AppSuggestPageVo; |
| | | import com.ruoyi.member.domain.vo.MgtMemberSuggestPageVo; |
| | | import com.ruoyi.member.domain.vo.MgtMemberSuggestTagVo; |
| | | import com.ruoyi.member.mapper.member.MemberSuggestMapper; |
| | | import com.ruoyi.member.service.member.MemberService; |
| | | import com.ruoyi.member.service.member.MemberSuggestService; |
| | | import com.ruoyi.system.api.domain.dto.AppSuggestPageDto; |
| | | import com.ruoyi.system.api.domain.dto.AppUserSuggestDto; |
| | | import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; |
| | | import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; |
| | | import com.ruoyi.system.api.domain.poji.config.SysTag; |
| | | import com.ruoyi.system.api.domain.poji.member.Member; |
| | | import com.ruoyi.system.api.domain.poji.sys.SysUser; |
| | | import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo; |
| | | import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; |
| | | import com.ruoyi.system.api.service.RemoteConfigService; |
| | | import com.ruoyi.system.api.service.RemoteShopService; |
| | | import com.ruoyi.system.api.service.RemoteUserService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Resource |
| | | private RemoteShopService remoteShopService; |
| | | |
| | | @Resource |
| | | private RemoteUserService remoteUserService; |
| | | |
| | | @Resource |
| | | private RemoteConfigService remoteConfigService; |
| | | |
| | | @Resource |
| | | private MemberService memberService; |
| | | |
| | | /** |
| | | * |
| | |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * 用户建议 |
| | | * @param appUserSuggestDto |
| | | */ |
| | | @Override |
| | |
| | | memberSuggest.setSuggestContent(appUserSuggestDto.getSuggestContent()); |
| | | memberSuggest.setCreateTime(new Date()); |
| | | memberSuggest.setSuggestType(appUserSuggestDto.getSuggestType()); |
| | | if(appUserSuggestDto.getSuggestType()==2){ |
| | | Member member = memberService.getByUserId(appUserSuggestDto.getUserId()); |
| | | memberSuggest.setShopId(member.getRelationShopId()); |
| | | } |
| | | memberSuggest.setReplayFlag(0); |
| | | this.saveOrUpdate(memberSuggest); |
| | | } |
| | | |
| | |
| | | @Override |
| | | public List<MgtMemberSuggestPageVo> pageMgtMemberSuggest(Page page,MgtMemberSuggestPageDto memberSuggestPageDto){ |
| | | //如果区域代码不为null获取对应的商户id |
| | | if(StringUtils.isNotBlank(memberSuggestPageDto.getShopProvinceCode())||StringUtils.isNotBlank(memberSuggestPageDto.getShopCityCode())||StringUtils.isNotBlank(memberSuggestPageDto.getShopAreaCode())){ |
| | | List<MgtMemberSuggestPageVo> mgtMemberSuggestPageVoList = new ArrayList<>(); |
| | | if(StringUtils.isNotBlank(memberSuggestPageDto.getKeyword())||StringUtils.isNotBlank(memberSuggestPageDto.getShopProvinceCode())||StringUtils.isNotBlank(memberSuggestPageDto.getShopCityCode())||StringUtils.isNotBlank(memberSuggestPageDto.getShopAreaCode())){ |
| | | MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto(); |
| | | mgtShopIdByCodeDto.setShopName(memberSuggestPageDto.getKeyword()); |
| | | mgtShopIdByCodeDto.setShopProvinceCode(memberSuggestPageDto.getShopProvinceCode()); |
| | | mgtShopIdByCodeDto.setShopCityCode(memberSuggestPageDto.getShopCityCode()); |
| | | mgtShopIdByCodeDto.setShopAreaCode(memberSuggestPageDto.getShopAreaCode()); |
| | | MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); |
| | | if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){ |
| | | memberSuggestPageDto.setShopIds(mgtShopIdByCodeVo.getShopIds()); |
| | | memberSuggestPageDto.setShopIds(mgtShopIdByCodeVo.getShopIds()); |
| | | } |
| | | //处理标签为正则方便sql判断 |
| | | if(StringUtils.isNotBlank(memberSuggestPageDto.getTags())){ |
| | | memberSuggestPageDto.setTags(memberSuggestPageDto.getTags().replace(",","|")); |
| | | } |
| | | if(memberSuggestPageDto.getSuggestStatus()!=null&&memberSuggestPageDto.getSuggestStatus()!=1){ |
| | | memberSuggestPageDto.setSuggestStatus(0); |
| | | } |
| | | //获取返回结果 |
| | | mgtMemberSuggestPageVoList = memberSuggestMapper.pageMgtMemberSuggest(page, memberSuggestPageDto); |
| | | if(mgtMemberSuggestPageVoList!=null&&!mgtMemberSuggestPageVoList.isEmpty()){ |
| | | HashSet<Long> shopIdSet = new HashSet<>(); |
| | | for(MgtMemberSuggestPageVo mgtMemberSuggestPageVo : mgtMemberSuggestPageVoList){ |
| | | if(mgtMemberSuggestPageVo.getShopId()!=null){ |
| | | shopIdSet.add(mgtMemberSuggestPageVo.getShopId()); |
| | | } |
| | | } |
| | | String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(shopJoinedString); |
| | | List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); |
| | | for(MgtMemberSuggestPageVo mgtMemberSuggestPageVo : mgtMemberSuggestPageVoList){ |
| | | if(mgtMemberSuggestPageVo.getShopId()!=null){ |
| | | mgtMemberSuggestPageVo.setShopName(shopMap.get(mgtMemberSuggestPageVo.getShopId()).getShopName()); |
| | | } |
| | | } |
| | | } |
| | | List<MgtMemberSuggestPageVo> mgtMemberSuggestPageVoList = memberSuggestMapper.pageMgtMemberSuggest(page, memberSuggestPageDto); |
| | | return mgtMemberSuggestPageVoList; |
| | | } |
| | | |
| | | /** |
| | | * @description 平台回复会员建议 |
| | | * @param mgtReplayMemberSuggestDto |
| | | * @return void |
| | | * @author jqs34 |
| | | * @date 2023/6/11 16:03 |
| | | */ |
| | | @Override |
| | | public void mgtReplayMemberSuggest(MgtReplayMemberSuggestDto mgtReplayMemberSuggestDto){ |
| | | Long userId = mgtReplayMemberSuggestDto.getUserId(); |
| | | SysUser sysUser = remoteUserService.getSysUser(userId).getData(); |
| | | MemberSuggest memberSuggest = this.getById(mgtReplayMemberSuggestDto.getSuggestId()); |
| | | memberSuggest.setReplayContent(mgtReplayMemberSuggestDto.getReplayContent()); |
| | | memberSuggest.setReplayTime(new Date()); |
| | | memberSuggest.setReplayUserId(userId); |
| | | memberSuggest.setReplayUserName(sysUser.getNickName()); |
| | | memberSuggest.setReplayFlag(1); |
| | | String responseTime = DateUtils.formatDuration(memberSuggest.getCreateTime(), memberSuggest.getReplayTime()); |
| | | memberSuggest.setResponseTime(responseTime); |
| | | long responseTimestamp = DateUtils.diffTime(memberSuggest.getCreateTime(), memberSuggest.getReplayTime()); |
| | | memberSuggest.setResponseTimestamp(responseTimestamp); |
| | | this.saveOrUpdate(memberSuggest); |
| | | } |
| | | |
| | | /** |
| | | * @description 获取建议标签列表 |
| | | * @param suggestId |
| | | * @return List<MgtMemberSuggestTagVo> |
| | | * @author jqs34 |
| | | * @date 2023/6/11 16:12 |
| | | */ |
| | | @Override |
| | | public List<MgtMemberSuggestTagVo> listMgtMemberSuggestTag(Long suggestId){ |
| | | MemberSuggest memberSuggest = this.getById(suggestId); |
| | | String suggestTags = memberSuggest.getSuggestTags(); |
| | | Long[] tagIdLongArr = null; |
| | | if(StringUtils.isNotBlank(suggestTags)){ |
| | | String[] tagIdArr = suggestTags.split(","); |
| | | tagIdLongArr = new Long[tagIdArr.length]; |
| | | for (int i = 0; i < tagIdArr.length; i++) { |
| | | try { |
| | | tagIdLongArr[i] = Long.parseLong(tagIdArr[i]); |
| | | } catch (NumberFormatException e) { |
| | | tagIdLongArr[i] = null; |
| | | } |
| | | } |
| | | } |
| | | List<SysTag> sysTagsList = remoteConfigService.listSysTag(4).getData(); |
| | | //生成返回结果 |
| | | List<MgtMemberSuggestTagVo> mgtMemberSuggestTagVoList = new ArrayList<>(); |
| | | for(SysTag sysTag : sysTagsList){ |
| | | MgtMemberSuggestTagVo mgtMemberSuggestTagVo = new MgtMemberSuggestTagVo(); |
| | | mgtMemberSuggestTagVo.setTagId(sysTag.getTagId()); |
| | | mgtMemberSuggestTagVo.setTagName(sysTag.getTagName()); |
| | | //判断是否选择 |
| | | if(tagIdLongArr!=null && tagIdLongArr.length>0){ |
| | | for(Long tagId : tagIdLongArr){ |
| | | if(tagId!=null && tagId.equals(sysTag.getTagId())){ |
| | | mgtMemberSuggestTagVo.setSelectFlag(1); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | mgtMemberSuggestTagVoList.add(mgtMemberSuggestTagVo); |
| | | } |
| | | return mgtMemberSuggestTagVoList; |
| | | } |
| | | |
| | | /** |
| | | * @description 平台编辑会员建议标签 |
| | | * @param mgtTagMemberSuggestDto |
| | | * @return void |
| | | * @author jqs34 |
| | | * @date 2023/6/11 16:28 |
| | | */ |
| | | @Override |
| | | public void mgtEditMemberSuggestTag(MgtTagMemberSuggestDto mgtTagMemberSuggestDto){ |
| | | MemberSuggest memberSuggest = this.getById(mgtTagMemberSuggestDto.getSuggestId()); |
| | | memberSuggest.setSuggestTags(mgtTagMemberSuggestDto.getSuggestTags()); |
| | | this.saveOrUpdate(memberSuggest); |
| | | } |
| | | |
| | | /** |
| | | * @description 获取会员未回复建议数量 |
| | | * @author jqs |
| | | * @date 2023/7/5 12:46 |
| | | * @param |
| | | * @return Integer |
| | | */ |
| | | @Override |
| | | public Integer getUnReplaySuggestVo(){ |
| | | LambdaQueryWrapper<MemberSuggest> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(MemberSuggest::getDelFlag,0); |
| | | queryWrapper.eq(MemberSuggest::getReplayFlag,0); |
| | | return this.count(queryWrapper); |
| | | } |
| | | } |