From 962e7325d72222a4ffd4d74a1fc5612f95326e98 Mon Sep 17 00:00:00 2001 From: jiangqs <343695869@qq.com> Date: 星期日, 11 六月 2023 18:49:39 +0800 Subject: [PATCH] 建议管理 --- ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java | 48 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtReplayStaffSuggestDto.java | 24 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestTagVo.java | 25 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopSuggestPageDto.java | 42 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java | 26 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java | 75 +++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java | 107 ++++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/StaffSuggest.java | 21 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopRelTagServiceImpl.java | 5 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtShopIdByCodeDto.java | 2 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopSuggestMapper.xml | 42 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtReplayShopSuggestDto.java | 24 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtReplayMemberSuggestDto.java | 24 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/StaffSuggestMapper.java | 15 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtMemberSuggestPageDto.java | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java | 4 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtTagShopSuggestDto.java | 22 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml | 39 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtTagMemberSuggestDto.java | 22 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopSuggest.java | 20 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml | 3 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/StaffSuggestServiceImpl.java | 124 +++++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberSuggestService.java | 32 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopSuggestService.java | 42 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestTagVo.java | 25 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTaskController.java | 17 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopSuggestMapper.java | 12 ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/StaffSuggestMapper.xml | 45 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtTagStaffSuggestDto.java | 22 /dev/null | 46 -- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java | 3 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java | 53 ++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffSuggestPageDto.java | 44 + ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java | 39 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopSuggestServiceImpl.java | 122 +++++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java | 12 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestTagVo.java | 25 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/StaffSuggestService.java | 45 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java | 56 ++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java | 2 40 files changed, 1,283 insertions(+), 75 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtShopIdByCodeDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtShopIdByCodeDto.java index 6c83f6a..9150a5c 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtShopIdByCodeDto.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtShopIdByCodeDto.java @@ -22,4 +22,6 @@ @ApiModelProperty(value = "店铺地址区code") private String shopAreaCode; + @ApiModelProperty(value = "店铺名称") + private String shopName; } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java index b4eacc3..edd9d34 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java @@ -1,15 +1,12 @@ package com.ruoyi.common.core.utils; +import org.apache.commons.lang3.time.DateFormatUtils; + import java.lang.management.ManagementFactory; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; -import java.time.ZonedDateTime; +import java.time.*; import java.util.Date; -import org.apache.commons.lang3.time.DateFormatUtils; /** * 时间工具类 @@ -33,8 +30,12 @@ "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; - public static void main(String[] args) { - System.out.println(getNowDate()); + public static void main(String[] args) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date start = sdf.parse("2021-10-01 10:00:00"); + Date end = sdf.parse("2021-10-01 12:30:00"); + String time = formatDuration(start,end); + System.out.println(time); } /** @@ -184,4 +185,26 @@ ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } + + public static String formatDuration(Date start, Date end) { + long duration = end.getTime() - start.getTime(); + long days = duration / (24 * 60 * 60 * 1000); + long hours = (duration % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000); + long minutes = (duration % (60 * 60 * 1000)) / (60 * 1000); + long seconds = (duration % (60 * 1000)) / 1000; + StringBuilder sb = new StringBuilder(); + if (days > 0) { + sb.append(days).append("天"); + } + if (hours > 0) { + sb.append(hours).append("小时"); + } + if (minutes > 0) { + sb.append(minutes).append("分"); + } + if (seconds > 0) { + sb.append(seconds).append("秒"); + } + return sb.toString(); + } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java index 864c5c2..dfb24b3 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java @@ -129,7 +129,7 @@ @RequestMapping(value = "/pageMgtMemberSuggest", method = RequestMethod.POST) - @ApiOperation(value = "平台获取用户建议") + @ApiOperation(value = "平台获取用户建议列表") public R<Page<MgtMemberSuggestPageVo>> pageMgtMemberSuggest(@RequestBody MgtMemberSuggestPageDto memberSuggestPageDto) { Long userId = SecurityUtils.getUserId(); memberSuggestPageDto.setUserId(userId); @@ -140,5 +140,29 @@ return R.ok(page.setRecords(mgtMemberSuggestPageVoList)); } + @RequestMapping(value = "/mgtReplayMemberSuggest", method = RequestMethod.POST) + @ApiOperation(value = "平台回复会员建议") + public R mgtReplayMemberSuggest(@RequestBody MgtReplayMemberSuggestDto mgtReplayMemberSuggestDto) { + Long userId = SecurityUtils.getUserId(); + mgtReplayMemberSuggestDto.setUserId(userId); + memberSuggestService.mgtReplayMemberSuggest(mgtReplayMemberSuggestDto); + return R.ok(); + } + + @RequestMapping(value = "/listMgtMemberSuggestTag", method = RequestMethod.POST) + @ApiOperation(value = "获取会员建议标签") + public R<List<MgtMemberSuggestTagVo>> listMgtMemberSuggestTag(@RequestBody MgtBaseGetDto mgtBaseGetDto) { + List<MgtMemberSuggestTagVo> mgtMemberSuggestTagVoList = memberSuggestService.listMgtMemberSuggestTag(Long.valueOf(mgtBaseGetDto.getId())); + return R.ok(mgtMemberSuggestTagVoList); + } + + @RequestMapping(value = "/mgtEditMemberSuggestTag", method = RequestMethod.POST) + @ApiOperation(value = "平台编辑会员建议标签") + public R mgtEditMemberSuggestTag(@RequestBody MgtTagMemberSuggestDto mgtTagMemberSuggestDto) { + Long userId = SecurityUtils.getUserId(); + mgtTagMemberSuggestDto.setUserId(userId); + memberSuggestService.mgtEditMemberSuggestTag(mgtTagMemberSuggestDto); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java index b1ec2a8..53684eb 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java @@ -71,7 +71,7 @@ } @RequestMapping(value = "/userSuggest", method = RequestMethod.POST) - @ApiOperation(value = "发起建议") + @ApiOperation(value = "用户发起建议") public R userSuggest(@RequestBody AppUserSuggestDto appUserSuggestDto) { Long userId = SecurityUtils.getUserId(); appUserSuggestDto.setUserId(userId); diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtMemberSuggestPageDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtMemberSuggestPageDto.java index f07ccc5..955b091 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtMemberSuggestPageDto.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtMemberSuggestPageDto.java @@ -25,7 +25,7 @@ @ApiModelProperty(value = "提交结束时间") private Date createEndTime; - @ApiModelProperty(value = "建议状态1未回复2已回复") + @ApiModelProperty(value = "建议状态0未回复1已回复") private Integer suggestStatus; @ApiModelProperty(value = "性别0男1女") diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtReplayMemberSuggestDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtReplayMemberSuggestDto.java new file mode 100644 index 0000000..f61cf5c --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtReplayMemberSuggestDto.java @@ -0,0 +1,24 @@ +package com.ruoyi.member.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtReplayMemberSuggestDto + * @description: TODO + * @date 2023 2023/6/11 16:04 + */ +@Data +public class MgtReplayMemberSuggestDto extends MgtBaseDto { + + @ApiModelProperty(value = "建议id") + private Long suggestId; + + @ApiModelProperty(value = "平台回复内容") + private String replayContent; + + +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtTagMemberSuggestDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtTagMemberSuggestDto.java new file mode 100644 index 0000000..8fa15f4 --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtTagMemberSuggestDto.java @@ -0,0 +1,22 @@ +package com.ruoyi.member.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtTagMemberSuggestDto + * @description: TODO + * @date 2023 2023/6/11 16:26 + */ +@Data +public class MgtTagMemberSuggestDto extends MgtBaseDto { + + @ApiModelProperty(value = "建议id") + private Long suggestId; + + @ApiModelProperty(value = "标签 多个,隔开") + private String suggestTags; +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java index 25ed0ef..f4d20cb 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java @@ -73,6 +73,9 @@ */ @TableField("replay_time") private Date replayTime; + + @TableField("response_time") + private String responseTime; /** * 商户id */ @@ -109,6 +112,15 @@ @TableField("shop_replay_time") private Date shopReplayTime; + @TableField("shop_response_time") + private String shopResponseTime; + + /** + * 回复标记 + */ + @TableField("replay_flag") + private Integer replayFlag; + @Override protected Serializable pkVal() { diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java index 9634fd9..59ac840 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java @@ -1,5 +1,6 @@ package com.ruoyi.member.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -47,12 +48,14 @@ private String suggestStatus; @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; @ApiModelProperty(value = "回复人姓名") private String replayUserName; @ApiModelProperty(value = "回复时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date replayTime; @ApiModelProperty(value = "平台响应时间") @@ -62,6 +65,7 @@ private String shopReplayUserName; @ApiModelProperty(value = "商户回复时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date shopReplayTime; @ApiModelProperty(value = "商户响应时间") diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestTagVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestTagVo.java new file mode 100644 index 0000000..b54b8e7 --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestTagVo.java @@ -0,0 +1,25 @@ +package com.ruoyi.member.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @ClassName MgtShopTagVo + * @description: TODO + * @date 2023年04月21日 + * @version: 1.0 + */ +@Data +public class MgtMemberSuggestTagVo { + + @ApiModelProperty(value = "标签id") + private Long tagId; + + @ApiModelProperty(value = "标签名称") + private String tagName; + + @ApiModelProperty(value = "是否选择0否1是") + private Integer selectFlag; + +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java index f3beae9..cd9ec00 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java @@ -3,21 +3,30 @@ 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.MemberSuggestService; import com.ruoyi.system.api.domain.dto.AppSuggestPageDto; import com.ruoyi.system.api.domain.dto.AppUserSuggestDto; import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; +import com.ruoyi.system.api.domain.poji.config.SysTag; +import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo; +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.ArrayList; import java.util.Date; import java.util.List; @@ -39,7 +48,11 @@ @Resource private RemoteShopService remoteShopService; + @Resource + private RemoteUserService remoteUserService; + @Resource + private RemoteConfigService remoteConfigService; /** * @@ -53,7 +66,7 @@ } /** - * + * 用户建议 * @param appUserSuggestDto */ @Override @@ -64,6 +77,7 @@ memberSuggest.setSuggestContent(appUserSuggestDto.getSuggestContent()); memberSuggest.setCreateTime(new Date()); memberSuggest.setSuggestType(appUserSuggestDto.getSuggestType()); + memberSuggest.setReplayFlag(0); this.saveOrUpdate(memberSuggest); } @@ -89,8 +103,9 @@ @Override public List<MgtMemberSuggestPageVo> pageMgtMemberSuggest(Page page,MgtMemberSuggestPageDto memberSuggestPageDto){ //如果区域代码不为null获取对应的商户id - if(StringUtils.isNotBlank(memberSuggestPageDto.getShopProvinceCode())||StringUtils.isNotBlank(memberSuggestPageDto.getShopCityCode())||StringUtils.isNotBlank(memberSuggestPageDto.getShopAreaCode())){ + 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()); @@ -99,7 +114,95 @@ 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); + } + //获取返回结果 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); + 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); + } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberSuggestService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberSuggestService.java index 90611e3..ae4560c 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberSuggestService.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberSuggestService.java @@ -3,9 +3,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; 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.system.api.domain.dto.AppSuggestPageDto; import com.ruoyi.system.api.domain.dto.AppUserSuggestDto; @@ -31,7 +34,7 @@ List<AppSuggestPageVo> pageAppUserSuggest(Page page, AppSuggestPageDto appSuggestPageDto); /** - * + * 用户建议 * @param appUserSuggestDto */ void userSuggest(AppUserSuggestDto appUserSuggestDto); @@ -54,4 +57,31 @@ * @return List<MgtMemberSuggestPageVo> */ List<MgtMemberSuggestPageVo> pageMgtMemberSuggest(Page page, MgtMemberSuggestPageDto memberSuggestPageDto); + + /** + * @description 平台回复会员建议 + * @param mgtReplayMemberSuggestDto + * @return void + * @author jqs34 + * @date 2023/6/11 16:04 + */ + void mgtReplayMemberSuggest(MgtReplayMemberSuggestDto mgtReplayMemberSuggestDto); + + /** + * @description 获取建议标签列表 + * @param suggestId + * @return List<MgtMemberSuggestTagVo> + * @author jqs34 + * @date 2023/6/11 16:12 + */ + List<MgtMemberSuggestTagVo> listMgtMemberSuggestTag(Long suggestId); + + /** + * @description 平台编辑会员建议标签 + * @param mgtTagMemberSuggestDto + * @return void + * @author jqs34 + * @date 2023/6/11 16:28 + */ + void mgtEditMemberSuggestTag(MgtTagMemberSuggestDto mgtTagMemberSuggestDto); } diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml index 8864543..ec256b6 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml @@ -30,19 +30,54 @@ tms.suggest_content suggestContent, tms.replay_content replayContent, tms.shop_replay_content shopReplayContent, - CASE WHEN replay_content IS NOT NULL THEN "已回复" WHEN shop_replay_content IS NOT NULL THEN "已回复" ELSE "未回复" END suggestStatus, + CASE tms.replay_flag WHEN 1 THEN "已回复" ELSE "未回复" END suggestStatus, tms.create_time createTime, tms.replay_user_name replayUserName, tms.replay_time replayTime, + tms.response_time responseTime, tms.shop_replay_user_name shopReplayUserName, tms.shop_replay_time shopReplayTime, + tms.shop_response_time shopResponseTime, tms.suggest_tags suggestTags FROM t_member_suggest tms INNER JOIN t_member tm ON tms.create_user_id = tm.user_id WHERE del_flag = 0 <if test="param.keyword!=null and param.keyword !=''"> - + AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tms.replay_user_name LIKE CONCAT('%',#{param.keyword},'%') OR tms.shop_replay_user_name LIKE CONCAT('%',#{param.keyword},'%')) + </if> + <if test="param.createStartTime!=null and param.createStartTime!=''"> + AND tms.create_time >= #{param.createStartTime} + </if> + <if test="param.createEndTime!=null and param.createEndTime!=''"> + AND tms.create_time <= #{param.createEndTime} + </if> + <if test="param.suggestStatus!=null and param.suggestStatus!=''"> + AND tms.replay_flag = #{param.suggestStatus} + </if> + <if test="param.gender!=null and param.gender!=''"> + AND tm.gender = #{param.gender} + </if> + <if test="param.tags!=null and param.tags!=''"> + AND tm.suggest_tags REGEXP #{param.tags} + </if> + <if test="param.shopReplayStartTime!=null and param.shopReplayStartTime!=''"> + AND tms.shop_replay_time >= #{param.shopReplayStartTime} + </if> + <if test="param.shopReplayEndTime!=null and param.shopReplayEndTime!=''"> + AND tms.shop_replay_time <= #{param.shopReplayEndTime} + </if> + <if test="param.replayStartTime!=null and param.replayStartTime!=''"> + AND tms.replay_time >= #{param.replayStartTime} + </if> + <if test="param.replayEndTime!=null and param.replayEndTime!=''"> + AND tms.replay_time <= #{param.replayEndTime} + </if> + <if test="param.suggestType!=null and param.suggestType!=''"> + AND tms.suggest_type = #{param.suggestType} + </if> + <if test="param.shopIds!=null and param.shopIds!=''"> + AND tms.shop_id IN CONCAT('(',#{param.shopIds},')') </if> </select> </mapper> diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtMemberController.java deleted file mode 100644 index 4cc9131..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtMemberController.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ruoyi.shop.controller.management; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.shop.domain.dto.MgtMemberTaskPageDto; -import com.ruoyi.shop.domain.vo.MgtMemberFollowPageVo; -import com.ruoyi.shop.service.task.MemberTaskRecordService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.List; - -/** - * @author jqs34 - * @ClassName MgtMemberController - * @description: TODO - * @date 2023年05月31日 - * @version: 1.0 - */ -@Api(value = "管理台用户相关接口", tags = "管理台用户相关接口", description = "管理台用户相关接口") -@RestController -@RequestMapping("/mgt/member") -public class MgtMemberController { - - - @Resource - private MemberTaskRecordService memberTaskRecordService; - - @RequestMapping(value = "/pageMgtMemberFollow", method = RequestMethod.POST) - @ApiOperation(value = "平台获取用户跟进列表") - public R<Page<MgtMemberFollowPageVo>> pageMgtMemberFollow(@RequestBody MgtMemberTaskPageDto mgtMemberTaskPageDto) { - Long userId = SecurityUtils.getUserId(); - mgtMemberTaskPageDto.setUserId(userId); - Page<MgtMemberFollowPageVo> page = new Page<>(); - page.setSize(mgtMemberTaskPageDto.getPageSize()); - page.setCurrent(mgtMemberTaskPageDto.getPageNum()); - List<MgtMemberFollowPageVo> mgtMemberFollowPageVoList = memberTaskRecordService.pageMgtMemberFollow(page, mgtMemberTaskPageDto); - return R.ok(page.setRecords(mgtMemberFollowPageVoList)); - } -} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java index 82dec4b..6c405aa 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java @@ -4,17 +4,18 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.shop.domain.dto.*; -import com.ruoyi.shop.domain.vo.MgtShopInfoVo; -import com.ruoyi.shop.domain.vo.MgtShopPageVo; -import com.ruoyi.shop.domain.vo.MgtShopProportionPageVo; -import com.ruoyi.shop.domain.vo.MgtShopTagVo; +import com.ruoyi.shop.domain.vo.*; import com.ruoyi.shop.service.shop.ShopProportionService; import com.ruoyi.shop.service.shop.ShopRelTagService; import com.ruoyi.shop.service.shop.ShopService; +import com.ruoyi.shop.service.shop.ShopSuggestService; import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; @@ -39,6 +40,9 @@ @Resource private ShopProportionService shopProportionService; + + @Resource + private ShopSuggestService shopSuggestService; @RequestMapping(value = "/pageMgtShop", method = RequestMethod.POST) @ApiOperation(value = "分页获取商户列表") @@ -107,6 +111,40 @@ return R.ok(); } + @RequestMapping(value = "/pageMgtShopSuggest", method = RequestMethod.POST) + @ApiOperation(value = "平台获取商户建议列表") + public R<Page<MgtShopSuggestPageVo>> pageMgtShopSuggest(@RequestBody MgtShopSuggestPageDto mgtShopSuggestPageDto) { + Long userId = SecurityUtils.getUserId(); + mgtShopSuggestPageDto.setUserId(userId); + Page<MgtShopSuggestPageVo> page = new Page<>(); + page.setSize(mgtShopSuggestPageDto.getPageSize()); + page.setCurrent(mgtShopSuggestPageDto.getPageNum()); + List<MgtShopSuggestPageVo> mgtShopSuggestPageVoList = shopSuggestService.pageMgtShopSuggest(page,mgtShopSuggestPageDto); + return R.ok(page.setRecords(mgtShopSuggestPageVoList)); + } + @RequestMapping(value = "/mgtReplayShopSuggest", method = RequestMethod.POST) + @ApiOperation(value = "平台回复会员建议") + public R mgtReplayShopSuggest(@RequestBody MgtReplayShopSuggestDto mgtReplayShopSuggestDto) { + Long userId = SecurityUtils.getUserId(); + mgtReplayShopSuggestDto.setUserId(userId); + shopSuggestService.mgtReplayShopSuggest(mgtReplayShopSuggestDto); + return R.ok(); + } + @RequestMapping(value = "/listMgtShopSuggestTag", method = RequestMethod.POST) + @ApiOperation(value = "获取商户建议标签") + public R<List<MgtShopSuggestTagVo>> listMgtShopSuggestTag(@RequestBody MgtBaseGetDto mgtBaseGetDto) { + List<MgtShopSuggestTagVo> mgtShopSuggestTagVoList = shopSuggestService.listMgtShopSuggestTag(Long.valueOf(mgtBaseGetDto.getId())); + return R.ok(mgtShopSuggestTagVoList); + } + + @RequestMapping(value = "/mgtEditShopSuggestTag", method = RequestMethod.POST) + @ApiOperation(value = "平台编辑会员建议标签") + public R mgtEditShopSuggestTag(@RequestBody MgtTagShopSuggestDto mgtTagShopSuggestDto) { + Long userId = SecurityUtils.getUserId(); + mgtTagShopSuggestDto.setUserId(userId); + shopSuggestService.mgtEditShopSuggestTag(mgtTagShopSuggestDto); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTaskController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTaskController.java index 536d4d5..ef5c37d 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTaskController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTaskController.java @@ -4,10 +4,13 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.shop.domain.dto.MgtFollowShopTaskDto; +import com.ruoyi.shop.domain.dto.MgtMemberTaskPageDto; import com.ruoyi.shop.domain.dto.MgtShopTaskPageDto; import com.ruoyi.shop.domain.vo.MgtAgencyTaskRecordPageVo; +import com.ruoyi.shop.domain.vo.MgtMemberFollowPageVo; import com.ruoyi.shop.domain.vo.MgtShopTaskRecordPageVo; import com.ruoyi.shop.service.task.AgencyTaskRecordService; +import com.ruoyi.shop.service.task.MemberTaskRecordService; import com.ruoyi.shop.service.task.ShopTaskRecordService; import com.ruoyi.shop.service.task.ShopTaskService; import io.swagger.annotations.Api; @@ -40,6 +43,9 @@ @Resource private ShopTaskRecordService shopTaskRecordService; + + @Resource + private MemberTaskRecordService memberTaskRecordService; @RequestMapping(value = "/followShopTask", method = RequestMethod.POST) @ApiOperation(value = "商户跟进") @@ -74,4 +80,15 @@ return R.ok(page.setRecords(mgtMemberFollowPageVoList)); } + @RequestMapping(value = "/pageMgtMemberFollow", method = RequestMethod.POST) + @ApiOperation(value = "平台获取用户跟进列表") + public R<Page<MgtMemberFollowPageVo>> pageMgtMemberFollow(@RequestBody MgtMemberTaskPageDto mgtMemberTaskPageDto) { + Long userId = SecurityUtils.getUserId(); + mgtMemberTaskPageDto.setUserId(userId); + Page<MgtMemberFollowPageVo> page = new Page<>(); + page.setSize(mgtMemberTaskPageDto.getPageSize()); + page.setCurrent(mgtMemberTaskPageDto.getPageNum()); + List<MgtMemberFollowPageVo> mgtMemberFollowPageVoList = memberTaskRecordService.pageMgtMemberFollow(page, mgtMemberTaskPageDto); + return R.ok(page.setRecords(mgtMemberFollowPageVoList)); + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtReplayShopSuggestDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtReplayShopSuggestDto.java new file mode 100644 index 0000000..68eb58f --- /dev/null +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtReplayShopSuggestDto.java @@ -0,0 +1,24 @@ +package com.ruoyi.shop.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtReplayMemberSuggestDto + * @description: TODO + * @date 2023 2023/6/11 16:04 + */ +@Data +public class MgtReplayShopSuggestDto extends MgtBaseDto { + + @ApiModelProperty(value = "建议id") + private Long suggestId; + + @ApiModelProperty(value = "平台回复内容") + private String replayContent; + + +} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopSuggestPageDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopSuggestPageDto.java new file mode 100644 index 0000000..fbb59cf --- /dev/null +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopSuggestPageDto.java @@ -0,0 +1,42 @@ +package com.ruoyi.shop.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtPageDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtShopSuggestPageDto + * @description: TODO + * @date 2023 2023/6/11 16:47 + */ +@Data +public class MgtShopSuggestPageDto extends MgtPageDto { + + + @ApiModelProperty(value = "搜索关键词") + private String keyword; + + @ApiModelProperty(value = "提交开始时间") + private Date createStartTime; + + @ApiModelProperty(value = "提交结束时间") + private Date createEndTime; + + @ApiModelProperty(value = "建议状态0未回复1已回复") + private Integer suggestStatus; + + @ApiModelProperty(value = "标签 多个,隔开") + private String tags; + + @ApiModelProperty(value = "复开始时间") + private Date replayStartTime; + + @ApiModelProperty(value = "回复结束时间") + private Date replayEndTime; + + +} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtTagShopSuggestDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtTagShopSuggestDto.java new file mode 100644 index 0000000..0aa153f --- /dev/null +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtTagShopSuggestDto.java @@ -0,0 +1,22 @@ +package com.ruoyi.shop.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtTagShopSuggestDto + * @description: TODO + * @date 2023 2023/6/11 16:26 + */ +@Data +public class MgtTagShopSuggestDto extends MgtBaseDto { + + @ApiModelProperty(value = "建议id") + private Long suggestId; + + @ApiModelProperty(value = "标签 多个,隔开") + private String suggestTags; +} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopSuggest.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopSuggest.java index 9ce17f3..61ec3d8 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopSuggest.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopSuggest.java @@ -39,7 +39,7 @@ @TableField("del_flag") private Integer delFlag; - @TableField("Shop_id") + @TableField("shop_id") private Long shopId; /** * 建议内容 @@ -66,6 +66,12 @@ */ @TableField("replay_user_id") private Long replayUserId; + + /** + * 回复人姓名 + */ + @TableField("replay_user_name") + private String replayUserName; /** * 回复时间 */ @@ -73,11 +79,23 @@ private Date replayTime; /** + * 响应时间 + */ + @TableField("response_time") + private String responseTime; + + /** * 商品标签 */ @TableField("suggest_tags") private String suggestTags; + /** + * 回复标记 + */ + @TableField("replay_flag") + private Integer replayFlag; + @Override protected Serializable pkVal() { return this.suggestId; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java new file mode 100644 index 0000000..1495b0b --- /dev/null +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java @@ -0,0 +1,56 @@ +package com.ruoyi.shop.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtShopSuggestPageVo + * @description: TODO + * @date 2023 2023/6/11 16:48 + */ +@Data +public class MgtShopSuggestPageVo { + + @ApiModelProperty(value = "建议id") + private Long suggestId; + + @ApiModelProperty(value = "店铺名称") + private String shopName; + + @ApiModelProperty(value = "商户类型1.经销商2.代理商") + private String shopType; + + @ApiModelProperty("店主姓名") + private String shopownerName; + + @ApiModelProperty("店主联系方式") + private String shopownerPhone; + + @ApiModelProperty(value = "建议内容") + private String suggestContent; + + @ApiModelProperty(value = "回复内容") + private String replayContent; + + @ApiModelProperty(value = "建议状态") + private String suggestStatus; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "回复人姓名") + private String replayUserName; + + @ApiModelProperty(value = "回复时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date replayTime; + + @ApiModelProperty(value = "平台响应时间") + private String responseTime; +} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestTagVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestTagVo.java new file mode 100644 index 0000000..b6ab7a5 --- /dev/null +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestTagVo.java @@ -0,0 +1,25 @@ +package com.ruoyi.shop.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @ClassName MgtShopSuggestTagVo + * @description: TODO + * @date 2023年04月21日 + * @version: 1.0 + */ +@Data +public class MgtShopSuggestTagVo { + + @ApiModelProperty(value = "标签id") + private Long tagId; + + @ApiModelProperty(value = "标签名称") + private String tagName; + + @ApiModelProperty(value = "是否选择0否1是") + private Integer selectFlag; + +} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopSuggestMapper.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopSuggestMapper.java index e8bc4ec..6595f7a 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopSuggestMapper.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopSuggestMapper.java @@ -2,8 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.shop.domain.dto.MgtShopSuggestPageDto; import com.ruoyi.shop.domain.pojo.shop.ShopSuggest; import com.ruoyi.shop.domain.vo.MerShopSuggestVo; +import com.ruoyi.shop.domain.vo.MgtShopSuggestPageVo; import com.ruoyi.system.api.domain.dto.MerPageDto; import org.apache.ibatis.annotations.Param; @@ -35,5 +37,13 @@ */ void deleteShopSuggestTag(String suggestTag); - + /** + * @description 平台获取商户建议列表 + * @param page + * @param mgtShopSuggestPageDto + * @return List<MgtShopSuggestPageVo> + * @author jqs34 + * @date 2023/6/11 16:56 + */ + List<MgtShopSuggestPageVo> pageMgtShopSuggest(Page page, @Param("param")MgtShopSuggestPageDto mgtShopSuggestPageDto); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopRelTagServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopRelTagServiceImpl.java index 27a00be..f0f8f4f 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopRelTagServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopRelTagServiceImpl.java @@ -2,12 +2,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ruoyi.common.core.utils.uuid.IdUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.shop.domain.pojo.shop.ShopRelTag; import com.ruoyi.shop.domain.vo.MgtShopTagVo; import com.ruoyi.shop.mapper.shop.ShopRelTagMapper; import com.ruoyi.shop.service.shop.ShopRelTagService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.service.RemoteConfigService; import org.apache.commons.lang3.ArrayUtils; @@ -16,7 +15,6 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; /** * <p> @@ -83,6 +81,7 @@ }else{ mgtShopTagVo.setSelectFlag(0); } + mgtShopTagVoList.add(mgtShopTagVo); } return mgtShopTagVoList; } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopSuggestServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopSuggestServiceImpl.java index 5351957..b748074 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopSuggestServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopSuggestServiceImpl.java @@ -3,15 +3,27 @@ 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.shop.domain.dto.MerShopSuggestDto; +import com.ruoyi.shop.domain.dto.MgtReplayShopSuggestDto; +import com.ruoyi.shop.domain.dto.MgtShopSuggestPageDto; +import com.ruoyi.shop.domain.dto.MgtTagShopSuggestDto; import com.ruoyi.shop.domain.pojo.shop.ShopSuggest; import com.ruoyi.shop.domain.vo.MerShopSuggestVo; +import com.ruoyi.shop.domain.vo.MgtShopSuggestPageVo; +import com.ruoyi.shop.domain.vo.MgtShopSuggestTagVo; import com.ruoyi.shop.mapper.shop.ShopSuggestMapper; import com.ruoyi.shop.service.shop.ShopSuggestService; import com.ruoyi.system.api.domain.dto.MerPageDto; +import com.ruoyi.system.api.domain.poji.config.SysTag; +import com.ruoyi.system.api.domain.poji.sys.SysUser; +import com.ruoyi.system.api.service.RemoteConfigService; +import com.ruoyi.system.api.service.RemoteUserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -28,6 +40,13 @@ @Resource private ShopSuggestMapper shopSuggestMapper; + + @Resource + private RemoteUserService remoteUserService; + + @Resource + private RemoteConfigService remoteConfigService; + /** * @@ -52,6 +71,7 @@ shopSuggest.setShopId(merShopSuggestDto.getShopId()); shopSuggest.setSuggestContent(merShopSuggestDto.getSuggestContent()); shopSuggest.setCreateTime(new Date()); + shopSuggest.setReplayFlag(0); this.save(shopSuggest); } @@ -64,6 +84,108 @@ */ @Override public void deleteShopSuggestTag(String suggestTag){ + shopSuggestMapper.deleteShopSuggestTag(suggestTag); + } + /** + * @description 平台获取商户建议列表 + * @param page + * @param mgtShopSuggestPageDto + * @return List<MgtShopSuggestPageVo> + * @author jqs34 + * @date 2023/6/11 16:56 + */ + @Override + public List<MgtShopSuggestPageVo> pageMgtShopSuggest(Page page, MgtShopSuggestPageDto mgtShopSuggestPageDto){ + //处理标签为正则方便sql判断 + if(StringUtils.isNotBlank(mgtShopSuggestPageDto.getTags())){ + mgtShopSuggestPageDto.setTags(mgtShopSuggestPageDto.getTags().replace(",","|")); + } + if(mgtShopSuggestPageDto.getSuggestStatus()!=null&&mgtShopSuggestPageDto.getSuggestStatus()!=1){ + mgtShopSuggestPageDto.setSuggestStatus(0); + } + //获取返回结果 + List<MgtShopSuggestPageVo> mgtShopSuggestPageVoList = shopSuggestMapper.pageMgtShopSuggest(page, mgtShopSuggestPageDto); + return mgtShopSuggestPageVoList; + } + + /** + * @description 平台回复会员建议 + * @param mgtReplayShopSuggestDto + * @return void + * @author jqs34 + * @date 2023/6/11 17:09 + */ + @Override + public void mgtReplayShopSuggest(MgtReplayShopSuggestDto mgtReplayShopSuggestDto){ + Long userId = mgtReplayShopSuggestDto.getUserId(); + SysUser sysUser = remoteUserService.getSysUser(userId).getData(); + ShopSuggest shopSuggest = this.getById(mgtReplayShopSuggestDto.getSuggestId()); + shopSuggest.setReplayContent(mgtReplayShopSuggestDto.getReplayContent()); + shopSuggest.setReplayTime(new Date()); + shopSuggest.setReplayUserId(userId); + shopSuggest.setReplayUserName(sysUser.getNickName()); + shopSuggest.setReplayFlag(1); + String responseTime = DateUtils.formatDuration(shopSuggest.getCreateTime(), shopSuggest.getReplayTime()); + shopSuggest.setResponseTime(responseTime); + this.saveOrUpdate(shopSuggest); + } + + /** + * @description listMgtShopSuggestTag + * @param suggestId + * @return List<MgtShopSuggestTagVo> + * @author jqs34 + * @date 2023/6/11 17:29 + */ + @Override + public List<MgtShopSuggestTagVo> listMgtShopSuggestTag(Long suggestId){ + ShopSuggest shopSuggest = this.getById(suggestId); + String suggestTags = shopSuggest.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<MgtShopSuggestTagVo> mgtShopSuggestTagVoList = new ArrayList<>(); + for(SysTag sysTag : sysTagsList){ + MgtShopSuggestTagVo mgtShopSuggestTagVo = new MgtShopSuggestTagVo(); + mgtShopSuggestTagVo.setTagId(sysTag.getTagId()); + mgtShopSuggestTagVo.setTagName(sysTag.getTagName()); + //判断是否选择 + if(tagIdLongArr!=null && tagIdLongArr.length>0){ + for(Long tagId : tagIdLongArr){ + if(tagId!=null && tagId.equals(sysTag.getTagId())){ + mgtShopSuggestTagVo.setSelectFlag(1); + break; + } + } + } + mgtShopSuggestTagVoList.add(mgtShopSuggestTagVo); + } + return mgtShopSuggestTagVoList; + } + + /** + * @description 平台编辑会员建议标签 + * @param mgtTagShopSuggestDto + * @return void + * @author jqs34 + * @date 2023/6/11 17:34 + */ + @Override + public void mgtEditShopSuggestTag(MgtTagShopSuggestDto mgtTagShopSuggestDto){ + ShopSuggest shopSuggest = this.getById(mgtTagShopSuggestDto.getSuggestId()); + shopSuggest.setSuggestTags(mgtTagShopSuggestDto.getSuggestTags()); + this.saveOrUpdate(shopSuggest); } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopSuggestService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopSuggestService.java index 97565e9..c32fb28 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopSuggestService.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopSuggestService.java @@ -3,8 +3,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.shop.domain.dto.MerShopSuggestDto; +import com.ruoyi.shop.domain.dto.MgtReplayShopSuggestDto; +import com.ruoyi.shop.domain.dto.MgtShopSuggestPageDto; +import com.ruoyi.shop.domain.dto.MgtTagShopSuggestDto; import com.ruoyi.shop.domain.pojo.shop.ShopSuggest; import com.ruoyi.shop.domain.vo.MerShopSuggestVo; +import com.ruoyi.shop.domain.vo.MgtShopSuggestPageVo; +import com.ruoyi.shop.domain.vo.MgtShopSuggestTagVo; import com.ruoyi.system.api.domain.dto.MerPageDto; import java.util.List; @@ -41,4 +46,41 @@ * @return void */ void deleteShopSuggestTag(String suggestTag); + + /** + * @description 平台获取商户建议列表 + * @param page + * @param mgtShopSuggestPageDto + * @return List<MgtShopSuggestPageVo> + * @author jqs34 + * @date 2023/6/11 16:56 + */ + List<MgtShopSuggestPageVo> pageMgtShopSuggest (Page page, MgtShopSuggestPageDto mgtShopSuggestPageDto); + + /** + * @description 平台回复会员建议 + * @param mgtReplayShopSuggestDto + * @return void + * @author jqs34 + * @date 2023/6/11 17:09 + */ + void mgtReplayShopSuggest(MgtReplayShopSuggestDto mgtReplayShopSuggestDto); + + /** + * @description 获取商户建议标签 + * @param suggestId + * @return List<MgtShopSuggestTagVo> + * @author jqs34 + * @date 2023/6/11 17:31 + */ + List<MgtShopSuggestTagVo> listMgtShopSuggestTag(Long suggestId); + + /** + * @description 平台编辑会员建议标签 + * @param mgtTagShopSuggestDto + * @return void + * @author jqs34 + * @date 2023/6/11 17:34 + */ + void mgtEditShopSuggestTag(MgtTagShopSuggestDto mgtTagShopSuggestDto); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml index 1e6eeb2..94b7045 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml @@ -449,6 +449,9 @@ shop_id FROM t_shop WHERE del_flag = 0 + <if test="param.shopName!=null and param.shopName!=''"> + AND ts.shop_name LIKE CONCAT('%',#{param.shopName},'%') + </if> <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''"> AND ts.shop_province_code = #{param.shopProvinceCode} </if> diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopSuggestMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopSuggestMapper.xml index 83d279e..f310c5d 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopSuggestMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopSuggestMapper.xml @@ -16,4 +16,46 @@ UPDATE t_shop_suggest SET suggest_tags = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', suggest_tags, ','), CONCAT(',',#{suggestTag},','), ',')) WHERE FIND_IN_SET(#{suggestTag}, suggest_tags) > 0 </update> + + <select id="pageMgtShopSuggest" resultType="com.ruoyi.shop.domain.vo.MgtShopSuggestPageVo"> + SELECT + tss.suggest_id suggestId, + ts.shop_name shopName, + ts.shop_type shopType, + ts.shopowner_name shopownerName, + ts.shopowner_phone shopownerPhone, + tss.suggest_content suggestContent, + tss.replay_content replayContent, + CASE tss.replay_flag WHEN 1 THEN "已回复" ELSE "未回复" END suggestStatus, + tss.create_time createTime, + tss.replay_user_name replayUserName, + tss.replay_time replayTime, + tss.response_time responseTime, + tss.suggest_tags suggestTags + FROM + t_shop_suggest tss + INNER JOIN t_shop ts ON tss.shop_id = ts.shop_id + WHERE del_flag = 0 + <if test="param.keyword!=null and param.keyword !=''"> + AND (ts.shop_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_phone LIKE CONCAT('%',#{param.keyword},'%') OR tss.replay_user_name LIKE CONCAT('%',#{param.keyword},'%')) + </if> + <if test="param.createStartTime!=null and param.createStartTime!=''"> + AND tss.create_time >= #{param.createStartTime} + </if> + <if test="param.createEndTime!=null and param.createEndTime!=''"> + AND tss.create_time <= #{param.createEndTime} + </if> + <if test="param.suggestStatus!=null"> + AND tss.replay_flag = #{param.suggestStatus} + </if> + <if test="param.tags!=null and param.tags!=''"> + AND tm.suggest_tags REGEXP #{param.tags} + </if> + <if test="param.replayStartTime!=null and param.replayStartTime!=''"> + AND tss.replay_time >= #{param.replayStartTime} + </if> + <if test="param.replayEndTime!=null and param.replayEndTime!=''"> + AND tss.replay_time <= #{param.replayEndTime} + </if> + </select> </mapper> diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java index bff57c4..980057f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java @@ -63,6 +63,7 @@ @Resource private ArticleService articleService; + @RequestMapping(value = "/getCustomConfig", method = RequestMethod.POST) @ApiOperation(value = "获取单个配置") public R<MgtCustomConfigVo> getCustomConfig(@RequestBody MgtCustomConfigDto mgtCustomConfigDto) { @@ -357,4 +358,6 @@ } + + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java new file mode 100644 index 0000000..1f303a2 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java @@ -0,0 +1,75 @@ +package com.ruoyi.system.controller.management; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; +import com.ruoyi.system.domain.dto.MgtReplayStaffSuggestDto; +import com.ruoyi.system.domain.dto.MgtStaffSuggestPageDto; +import com.ruoyi.system.domain.dto.MgtTagStaffSuggestDto; +import com.ruoyi.system.domain.vo.MgtStaffSuggestPageVo; +import com.ruoyi.system.domain.vo.MgtStaffSuggestTagVo; +import com.ruoyi.system.service.config.StaffSuggestService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtStaffController + * @description: TODO + * @date 2023 2023/6/11 18:36 + */ +@Api(value = "平台端员工相关接口", tags = "平台端员工相关接口", description = "平台端员工相关接口") +@RestController +@RequestMapping("/mgt/staff") +public class MgtStaffController { + + + @Resource + private StaffSuggestService staffSuggestService; + + @RequestMapping(value = "/pageMgtStaffSuggest", method = RequestMethod.POST) + @ApiOperation(value = "平台获取员工建议列表") + public R<Page<MgtStaffSuggestPageVo>> pageMgtStaffSuggest(@RequestBody MgtStaffSuggestPageDto mgtStaffSuggestPageDto) { + Long userId = SecurityUtils.getUserId(); + mgtStaffSuggestPageDto.setUserId(userId); + Page<MgtStaffSuggestPageVo> page = new Page<>(); + page.setSize(mgtStaffSuggestPageDto.getPageSize()); + page.setCurrent(mgtStaffSuggestPageDto.getPageNum()); + List<MgtStaffSuggestPageVo> mgtShopSuggestPageVoList = staffSuggestService.pageMgtStaffSuggest(page,mgtStaffSuggestPageDto); + return R.ok(page.setRecords(mgtShopSuggestPageVoList)); + } + + @RequestMapping(value = "/mgtReplayStaffSuggest", method = RequestMethod.POST) + @ApiOperation(value = "平台回复会员建议") + public R mgtReplayStaffSuggest(@RequestBody MgtReplayStaffSuggestDto mgtReplayStaffSuggestDto) { + Long userId = SecurityUtils.getUserId(); + mgtReplayStaffSuggestDto.setUserId(userId); + staffSuggestService.mgtReplayStaffSuggest(mgtReplayStaffSuggestDto); + return R.ok(); + } + + @RequestMapping(value = "/listMgtStaffSuggestTag", method = RequestMethod.POST) + @ApiOperation(value = "获取员工建议标签") + public R<List<MgtStaffSuggestTagVo>> listMgtStaffSuggestTag(@RequestBody MgtBaseGetDto mgtBaseGetDto) { + List<MgtStaffSuggestTagVo> mgtStaffSuggestTagVoList= staffSuggestService.listMgtStaffSuggestTag(Long.valueOf(mgtBaseGetDto.getId())); + return R.ok(mgtStaffSuggestTagVoList); + } + + @RequestMapping(value = "/mgtEditStaffSuggestTag", method = RequestMethod.POST) + @ApiOperation(value = "平台编辑会员建议标签") + public R mgtEditStaffSuggestTag(@RequestBody MgtTagStaffSuggestDto mgtTagStaffSuggestDto) { + Long userId = SecurityUtils.getUserId(); + mgtTagStaffSuggestDto.setUserId(userId); + staffSuggestService.mgtEditStaffSuggestTag(mgtTagStaffSuggestDto); + return R.ok(); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtReplayStaffSuggestDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtReplayStaffSuggestDto.java new file mode 100644 index 0000000..e323520 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtReplayStaffSuggestDto.java @@ -0,0 +1,24 @@ +package com.ruoyi.system.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtReplayStaffSuggestDto + * @description: TODO + * @date 2023 2023/6/11 16:04 + */ +@Data +public class MgtReplayStaffSuggestDto extends MgtBaseDto { + + @ApiModelProperty(value = "建议id") + private Long suggestId; + + @ApiModelProperty(value = "平台回复内容") + private String replayContent; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffSuggestPageDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffSuggestPageDto.java new file mode 100644 index 0000000..1474b8f --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffSuggestPageDto.java @@ -0,0 +1,44 @@ +package com.ruoyi.system.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtPageDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtStaffSuggestPageDto + * @description: TODO + * @date 2023 2023/6/11 18:09 + */ +@Data +public class MgtStaffSuggestPageDto extends MgtPageDto { + + + @ApiModelProperty(value = "搜索关键词") + private String keyword; + + @ApiModelProperty(value = "部门id") + private Long deptId; + + @ApiModelProperty(value = "提交开始时间") + private Date createStartTime; + + @ApiModelProperty(value = "提交结束时间") + private Date createEndTime; + + @ApiModelProperty(value = "建议状态0未回复1已回复") + private Integer suggestStatus; + + @ApiModelProperty(value = "标签 多个,隔开") + private String tags; + + @ApiModelProperty(value = "回复开始时间") + private Date replayStartTime; + + @ApiModelProperty(value = "回复结束时间") + private Date replayEndTime; + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtTagStaffSuggestDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtTagStaffSuggestDto.java new file mode 100644 index 0000000..0af6198 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtTagStaffSuggestDto.java @@ -0,0 +1,22 @@ +package com.ruoyi.system.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtTagStaffSuggestDto + * @description: TODO + * @date 2023 2023/6/11 16:26 + */ +@Data +public class MgtTagStaffSuggestDto extends MgtBaseDto { + + @ApiModelProperty(value = "建议id") + private Long suggestId; + + @ApiModelProperty(value = "标签 多个,隔开") + private String suggestTags; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/StaffSuggest.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/StaffSuggest.java index 27fc504..0a802b5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/StaffSuggest.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/StaffSuggest.java @@ -62,17 +62,28 @@ * 回复用户id */ @TableField("replay_user_id") - private Integer replayUserId; + private Long replayUserId; + /** + * 回复人姓名 + */ + @TableField("replay_user_name") + private String replayUserName; + /** * 回复时间 */ @TableField("replay_time") private Date replayTime; /** + * 响应时间 + */ + @TableField("response_time") + private String responseTime; + /** * 商户id */ @TableField("shop_id") - private Integer shopId; + private Long shopId; /** * 商品标签 @@ -80,6 +91,12 @@ @TableField("suggest_tags") private String suggestTags; + /** + * 回复标记 + */ + @TableField("replay_flag") + private Integer replayFlag; + @Override protected Serializable pkVal() { return this.suggestId; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java new file mode 100644 index 0000000..ff5649f --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java @@ -0,0 +1,53 @@ +package com.ruoyi.system.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author jqs34 + * @version 1.0 + * @classname MgtStaffSuggestPageVo + * @description: TODO + * @date 2023 2023/6/11 16:48 + */ +@Data +public class MgtStaffSuggestPageVo { + + @ApiModelProperty(value = "建议id") + private Long suggestId; + + @ApiModelProperty(value = "员工姓名") + private String staffName; + + @ApiModelProperty(value = "部门名称") + private String deptName; + + @ApiModelProperty("手机号") + private String mobile; + + @ApiModelProperty(value = "建议内容") + private String suggestContent; + + @ApiModelProperty(value = "回复内容") + private String replayContent; + + @ApiModelProperty(value = "建议状态") + private String suggestStatus; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "回复人姓名") + private String replayUserName; + + @ApiModelProperty(value = "回复时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date replayTime; + + @ApiModelProperty(value = "平台响应时间") + private String responseTime; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestTagVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestTagVo.java new file mode 100644 index 0000000..7283237 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestTagVo.java @@ -0,0 +1,25 @@ +package com.ruoyi.system.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @ClassName MgtStaffSuggestTagVo + * @description: TODO + * @date 2023年04月21日 + * @version: 1.0 + */ +@Data +public class MgtStaffSuggestTagVo { + + @ApiModelProperty(value = "标签id") + private Long tagId; + + @ApiModelProperty(value = "标签名称") + private String tagName; + + @ApiModelProperty(value = "是否选择0否1是") + private Integer selectFlag; + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/StaffSuggestMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/StaffSuggestMapper.java index 4c767f3..67a107a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/StaffSuggestMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/StaffSuggestMapper.java @@ -1,7 +1,12 @@ package com.ruoyi.system.mapper.config; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.system.domain.dto.MgtStaffSuggestPageDto; import com.ruoyi.system.domain.pojo.config.StaffSuggest; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.domain.vo.MgtStaffSuggestPageVo; + +import java.util.List; /** * <p> @@ -21,4 +26,14 @@ * @return void */ void deleteStaffSuggestTag(String suggestTag); + + /** + * @description 平台获取员工建议列表 + * @param page + * @param mgtStaffSuggestPageDto + * @return List<MgtStaffSuggestPageVo> + * @author jqs34 + * @date 2023/6/11 18:26 + */ + List<MgtStaffSuggestPageVo> pageMgtStaffSuggest(Page page, MgtStaffSuggestPageDto mgtStaffSuggestPageDto); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/StaffSuggestService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/StaffSuggestService.java index dac71c2..55174da 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/StaffSuggestService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/StaffSuggestService.java @@ -1,7 +1,15 @@ package com.ruoyi.system.service.config; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.system.domain.dto.MgtReplayStaffSuggestDto; +import com.ruoyi.system.domain.dto.MgtStaffSuggestPageDto; +import com.ruoyi.system.domain.dto.MgtTagStaffSuggestDto; import com.ruoyi.system.domain.pojo.config.StaffSuggest; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.system.domain.vo.MgtStaffSuggestPageVo; +import com.ruoyi.system.domain.vo.MgtStaffSuggestTagVo; + +import java.util.List; /** * <p> @@ -21,4 +29,41 @@ * @return void */ void deleteStaffSuggestTag(String suggestTag); + + /** + * @description 平台获取员工建议列表 + * @param page + * @param mgtStaffSuggestPageDto + * @return List<MgtStaffSuggestPageVo> + * @author jqs34 + * @date 2023/6/11 18:26 + */ + List<MgtStaffSuggestPageVo> pageMgtStaffSuggest(Page page, MgtStaffSuggestPageDto mgtStaffSuggestPageDto); + + /** + * @description 平台回复会员建议 + * @param mgtReplayStaffSuggestDto + * @return void + * @author jqs34 + * @date 2023/6/11 18:40 + */ + void mgtReplayStaffSuggest(MgtReplayStaffSuggestDto mgtReplayStaffSuggestDto); + + /** + * @description 获取员工建议标签 + * @param suggestId + * @return List<MgtStaffSuggestTagVo> + * @author jqs34 + * @date 2023/6/11 18:45 + */ + List<MgtStaffSuggestTagVo> listMgtStaffSuggestTag(Long suggestId); + + /** + * @description 平台编辑会员建议标签 + * @param mgtTagStaffSuggestDto + * @return void + * @author jqs34 + * @date 2023/6/11 18:49 + */ + void mgtEditStaffSuggestTag(MgtTagStaffSuggestDto mgtTagStaffSuggestDto); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/StaffSuggestServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/StaffSuggestServiceImpl.java index 10f42ff..3f52807 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/StaffSuggestServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/StaffSuggestServiceImpl.java @@ -1,12 +1,27 @@ package com.ruoyi.system.service.impl.config; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.system.api.domain.poji.config.SysTag; +import com.ruoyi.system.api.domain.poji.sys.SysUser; +import com.ruoyi.system.domain.dto.MgtReplayStaffSuggestDto; +import com.ruoyi.system.domain.dto.MgtStaffSuggestPageDto; +import com.ruoyi.system.domain.dto.MgtTagStaffSuggestDto; import com.ruoyi.system.domain.pojo.config.StaffSuggest; +import com.ruoyi.system.domain.vo.MgtStaffSuggestPageVo; +import com.ruoyi.system.domain.vo.MgtStaffSuggestTagVo; import com.ruoyi.system.mapper.config.StaffSuggestMapper; import com.ruoyi.system.service.config.StaffSuggestService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.system.service.config.SysTagService; +import com.ruoyi.system.service.sys.ISysUserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** * <p> @@ -22,6 +37,12 @@ @Resource private StaffSuggestMapper staffSuggestMapper; + @Resource + private ISysUserService sysUserService; + + @Resource + private SysTagService sysTagService; + /** * @description 删除员工建议标签 * @author jqs @@ -31,6 +52,109 @@ */ @Override public void deleteStaffSuggestTag(String suggestTag){ + staffSuggestMapper.deleteStaffSuggestTag(suggestTag); + } + + /** + * @description 平台获取员工建议列表 + * @param page + * @param mgtStaffSuggestPageDto + * @return List<MgtStaffSuggestPageVo> + * @author jqs34 + * @date 2023/6/11 18:26 + */ + @Override + public List<MgtStaffSuggestPageVo> pageMgtStaffSuggest(Page page, MgtStaffSuggestPageDto mgtStaffSuggestPageDto){ + //处理标签为正则方便sql判断 + if(StringUtils.isNotBlank(mgtStaffSuggestPageDto.getTags())){ + mgtStaffSuggestPageDto.setTags(mgtStaffSuggestPageDto.getTags().replace(",","|")); + } + if(mgtStaffSuggestPageDto.getSuggestStatus()!=null&&mgtStaffSuggestPageDto.getSuggestStatus()!=1){ + mgtStaffSuggestPageDto.setSuggestStatus(0); + } + //获取返回结果 + List<MgtStaffSuggestPageVo> mgtStaffSuggestPageVoList = staffSuggestMapper.pageMgtStaffSuggest(page, mgtStaffSuggestPageDto); + return mgtStaffSuggestPageVoList; + } + + /** + * @description 平台回复会员建议 + * @param mgtReplayStaffSuggestDto + * @return void + * @author jqs34 + * @date 2023/6/11 18:39 + */ + @Override + public void mgtReplayStaffSuggest(MgtReplayStaffSuggestDto mgtReplayStaffSuggestDto){ + Long userId = mgtReplayStaffSuggestDto.getUserId(); + SysUser sysUser = sysUserService.getById(userId); + StaffSuggest staffSuggest = this.getById(mgtReplayStaffSuggestDto.getSuggestId()); + staffSuggest.setReplayContent(mgtReplayStaffSuggestDto.getReplayContent()); + staffSuggest.setReplayTime(new Date()); + staffSuggest.setReplayUserId(userId); + staffSuggest.setReplayUserName(sysUser.getNickName()); + staffSuggest.setReplayFlag(1); + String responseTime = DateUtils.formatDuration(staffSuggest.getCreateTime(), staffSuggest.getReplayTime()); + staffSuggest.setResponseTime(responseTime); + this.saveOrUpdate(staffSuggest); + } + + /** + * @description 获取员工建议标签 + * @param suggestId + * @return List<MgtStaffSuggestTagVo> + * @author jqs34 + * @date 2023/6/11 18:44 + */ + @Override + public List<MgtStaffSuggestTagVo> listMgtStaffSuggestTag(Long suggestId){ + StaffSuggest staffSuggest = this.getById(suggestId); + String suggestTags = staffSuggest.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 = sysTagService.listByType(4); + //生成返回结果 + List<MgtStaffSuggestTagVo> mgtStaffSuggestTagVoList = new ArrayList<>(); + for(SysTag sysTag : sysTagsList){ + MgtStaffSuggestTagVo mgtStaffSuggestTagVo = new MgtStaffSuggestTagVo(); + mgtStaffSuggestTagVo.setTagId(sysTag.getTagId()); + mgtStaffSuggestTagVo.setTagName(sysTag.getTagName()); + //判断是否选择 + if(tagIdLongArr!=null && tagIdLongArr.length>0){ + for(Long tagId : tagIdLongArr){ + if(tagId!=null && tagId.equals(sysTag.getTagId())){ + mgtStaffSuggestTagVo.setSelectFlag(1); + break; + } + } + } + mgtStaffSuggestTagVoList.add(mgtStaffSuggestTagVo); + } + return mgtStaffSuggestTagVoList; + } + + /** + * @description 平台编辑会员建议标签 + * @param mgtTagStaffSuggestDto + * @return void + * @author jqs34 + * @date 2023/6/11 18:47 + */ + @Override + public void mgtEditStaffSuggestTag(MgtTagStaffSuggestDto mgtTagStaffSuggestDto){ + StaffSuggest staffSuggest = this.getById(mgtTagStaffSuggestDto.getSuggestId()); + staffSuggest.setSuggestTags(mgtTagStaffSuggestDto.getSuggestTags()); + this.saveOrUpdate(staffSuggest); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/StaffSuggestMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/StaffSuggestMapper.xml index eb872a5..5d5a72a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/StaffSuggestMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/StaffSuggestMapper.xml @@ -8,5 +8,48 @@ WHERE FIND_IN_SET(#{suggestTag}, suggest_tags) > 0 </update> - + <select id="pageMgtStaffSuggest" resultType="com.ruoyi.system.domain.vo.MgtStaffSuggestPageVo"> + SELECT + tss.suggest_id suggestId, + su.nick_name staffName, + sd.dept_name deptName, + su.phonenumber mobile, + tss.suggest_content suggestContent, + tss.replay_content replayContent, + CASE tss.replay_flag WHEN 1 THEN "已回复" ELSE "未回复" END suggestStatus, + tss.create_time createTime, + tss.replay_user_name replayUserName, + tss.replay_time replayTime, + tss.response_time responseTime, + tss.suggest_tags suggestTags + FROM + t_staff_suggest tss + INNER JOIN sys_user su ON su.user_id = tss.create_user_id + LEFT JOIN sys_dept sd ON sd.dept_id = su.dept_id + WHERE del_flag = 0 + <if test="param.keyword!=null and param.keyword !=''"> + AND (su.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR su.phonenumber LIKE CONCAT('%',#{param.keyword},'%') OR tss.replay_user_name LIKE CONCAT('%',#{param.keyword},'%')) + </if> + <if test="param.deptId!=null and param.deptId!=''"> + AND su.dept_id = #{param.deptId} + </if> + <if test="param.createStartTime!=null and param.createStartTime!=''"> + AND tss.create_time >= #{param.createStartTime} + </if> + <if test="param.createEndTime!=null and param.createEndTime!=''"> + AND tss.create_time <= #{param.createEndTime} + </if> + <if test="param.suggestStatus!=null"> + AND tss.replay_flag = #{param.suggestStatus} + </if> + <if test="param.tags!=null and param.tags!=''"> + AND tm.suggest_tags REGEXP #{param.tags} + </if> + <if test="param.replayStartTime!=null and param.replayStartTime!=''"> + AND tss.replay_time >= #{param.replayStartTime} + </if> + <if test="param.replayEndTime!=null and param.replayEndTime!=''"> + AND tss.replay_time <= #{param.replayEndTime} + </if> + </select> </mapper> -- Gitblit v1.7.1