bug
jiangqs
2023-08-21 c93e76c57a98e35abbf62d2f514d9ba51efd3243
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java
@@ -1,19 +1,39 @@
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>
@@ -29,6 +49,19 @@
    @Resource
    private MemberSuggestMapper memberSuggestMapper;
    @Resource
    private RemoteShopService remoteShopService;
    @Resource
    private RemoteUserService remoteUserService;
    @Resource
    private RemoteConfigService remoteConfigService;
    @Resource
    private MemberService memberService;
    /**
     *
     * @param page
@@ -41,7 +74,7 @@
    }
    /**
     *
     * 用户建议
     * @param appUserSuggestDto
     */
    @Override
@@ -51,6 +84,172 @@
        memberSuggest.setCreateUserId(appUserSuggestDto.getUserId());
        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);
    }
    /**
     * @description
     * @author  jqs
     * @date    2023/6/9 10:02
     * @param suggestTag
     * @return  void
     */
    @Override
    public void deleteMemberSuggestTag(String suggestTag){
        memberSuggestMapper.deleteMemberSuggestTag(suggestTag);
    }
    /**
     * @description  分页获取用户建议
     * @author  jqs
     * @date    2023/6/9 17:26
     * @param memberSuggestPageDto
     * @return  List<MgtMemberSuggestPageVo>
     */
    @Override
    public List<MgtMemberSuggestPageVo> pageMgtMemberSuggest(Page page,MgtMemberSuggestPageDto memberSuggestPageDto){
        //如果区域代码不为null获取对应的商户id
        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();
            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());
                }
            }
        }
        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);
    }
}