rentaiming
2024-06-07 3d1c46677a3fb95a4d776735925047c08dee17a3
Merge remote-tracking branch 'origin/master'
15个文件已修改
10个文件已添加
578 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Logistics.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/MemberClient.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/ReplyStatusEnum.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsBrandController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsCategoryController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsFlavorTypeController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsInfoTitleController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsSeriesController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/LogisticsController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/LogisticsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/ILogisticsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/LogisticsServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/LogisticsMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionVideoController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionWishListController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionVideoDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionWishListDTO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionWishListQuery.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionWishListVO.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/PromotionWishList.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/IPromotionWishListService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionWishListServiceImpl.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Logistics.java
New file
@@ -0,0 +1,40 @@
package com.ruoyi.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 * 物流公司
 * </p>
 *
 * @author mitao
 * @since 2024-06-07
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_logistics")
@ApiModel(value = "Logistics对象", description = "物流公司")
public class Logistics implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @TableField("logistics_name")
    private String logisticsName;
    @TableField("logistics_num")
    private String logisticsNum;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/MemberClient.java
@@ -7,14 +7,12 @@
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.MemberAddress;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
import com.ruoyi.system.api.factory.MemberFallbackFactory;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -33,7 +31,7 @@
            @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    @PostMapping("/member/list-by-ids")
    R<List<Member>> getMemberListByIds(@RequestParam("memberIdList") Set<Long> memberIdList,
    R<List<Member>> getMemberListByIds(@RequestParam("memberIdList") Collection<Long> memberIdList,
            @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    @PostMapping("/forepart/member/miniLogin")
@@ -45,4 +43,7 @@
    @PostMapping("/member/updMembeOne")
    R<?> updMembeOne(@RequestBody updMembeOneDTO dMembeOneDTO);
    @PostMapping("/member/list-by-condition")
    R<List<Member>> getMemberListByCondition(@RequestBody MemberDTO memberDTO,
            @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/ReplyStatusEnum.java
New file
@@ -0,0 +1,31 @@
package com.ruoyi.common.core.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * @author mitao
 * @date 2024/6/7
 */
@Getter
@AllArgsConstructor
public enum ReplyStatusEnum {
    // 回复状态 0未回复 1已回复
    UN_REPLIED(0, "未回复"),
    REPLIED(1, "已回复");
    @EnumValue
    private final int code;
    @JsonValue
    private final String desc;
    public static ReplyStatusEnum fromCode(Integer code) {
        for (ReplyStatusEnum value : ReplyStatusEnum.values()) {
            if (value.getCode() == code) {
                return value;
            }
        }
        return null;
    }
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsBrandController.java
@@ -9,6 +9,7 @@
import com.ruoyi.goods.service.IGoodsBrandService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -71,7 +72,8 @@
     */
    @ApiOperation(value = "删除商品品牌", notes = "删除商品品牌")
    @DeleteMapping("/{id}")
    public R<Void> deleteGoodsBrand(@PathVariable("id") Long id) {
    public R<Void> deleteGoodsBrand(
            @ApiParam(name = "id", value = "品牌id", required = true) @PathVariable("id") Long id) {
        // 通过ID删除商品品牌
        goodsBrandService.removeById(id);
        return R.ok();
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsCategoryController.java
@@ -9,6 +9,7 @@
import com.ruoyi.goods.service.IGoodsCategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -70,7 +71,8 @@
     */
    @ApiOperation(value = "删除商品分类", notes = "删除商品分类")
    @DeleteMapping("/{id}")
    public R<Void> deleteGoodsCategory(@Validated @PathVariable("id") Long id) {
    public R<Void> deleteGoodsCategory(
            @ApiParam(name = "id", value = "商品分类id", required = true) @Validated @PathVariable("id") Long id) {
        goodsCategoryService.removeById(id);
        return R.ok();
    }
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsFlavorTypeController.java
@@ -9,6 +9,7 @@
import com.ruoyi.goods.service.IGoodsFlavorTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -70,7 +71,8 @@
     */
    @ApiOperation(value = "删除商品香型", notes = "删除商品香型")
    @DeleteMapping("/{id}")
    public R<Void> deleteGoodsFlavorType(@PathVariable("id") Long id) {
    public R<Void> deleteGoodsFlavorType(
            @ApiParam(name = "id", value = "商品香型id", required = true) @PathVariable("id") Long id) {
        goodsFlavorTypeService.removeById(id);
        return R.ok();
    }
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsInfoTitleController.java
@@ -9,6 +9,7 @@
import com.ruoyi.goods.service.IGoodsInfoTitleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -70,7 +71,8 @@
     */
    @ApiOperation("删除商品信息标题")
    @DeleteMapping("/{id}")
    public R<Void> deleteGoodsInfoTitle(@PathVariable("id") Long id) {
    public R<Void> deleteGoodsInfoTitle(
            @ApiParam(name = "id", value = "商品信息标题id", required = true) @PathVariable("id") Long id) {
        goodsInfoTitleService.removeById(id);
        return R.ok();
    }
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsSeriesController.java
@@ -9,6 +9,7 @@
import com.ruoyi.goods.service.IGoodsSeriesService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -70,7 +71,8 @@
     */
    @ApiOperation(value = "删除商品香型", notes = "删除商品香型")
    @DeleteMapping("/{id}")
    public R<Void> deleteGoodsSeries(@PathVariable("id") Long id) {
    public R<Void> deleteGoodsSeries(
            @ApiParam(name = "id", value = "商品香型id", required = true) @PathVariable("id") Long id) {
        goodsSeriesService.removeById(id);
        return R.ok();
    }
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberController.java
@@ -4,13 +4,16 @@
import com.ruoyi.common.security.annotation.InnerAuth;
import com.ruoyi.member.service.IMemberService;
import com.ruoyi.system.api.domain.Member;
import java.util.List;
import java.util.Set;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
import io.swagger.annotations.ApiOperation;
import java.util.Collection;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author mitao
@@ -25,7 +28,8 @@
    
    @InnerAuth
    @PostMapping("/list-by-ids")
    R<List<Member>> getMemberListByIds(@RequestParam("memberIdList") Set<Long> memberIdList) {
    R<List<Member>> getMemberListByIds(
            @RequestParam("memberIdList") Collection<Long> memberIdList) {
        return R.ok(memberService.getMemberListByIds(memberIdList));
    }
@@ -43,4 +47,9 @@
        return R.ok();
    }
    @InnerAuth
    @PostMapping("/member/list-by-condition")
    R<List<Member>> getMemberListByCondition(@RequestBody MemberDTO memberDTO) {
        return R.ok(memberService.getMemberListByCondition(memberDTO));
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java
@@ -11,11 +11,9 @@
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MobileDTO;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import org.springframework.web.bind.annotation.RequestBody;
/**
@@ -36,7 +34,7 @@
    void authentificationMembe(MemberDTO memberDTO);
    List<Member> getMemberListByIds(Set<Long> memberIdList);
    List<Member> getMemberListByIds(Collection<Long> memberIdList);
    void mobile(@RequestBody MobileDTO mobileDTO);
@@ -66,4 +64,6 @@
    PageDTO<MgtMemberPointsVO> getMemberPoints(MgtMemberPointsQuery query);
    void updMembeOne(@RequestBody updMembeOneDTO dMembeOneDTO);
    List<Member> getMemberListByCondition(MemberDTO memberDTO);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
@@ -32,8 +32,8 @@
import com.ruoyi.member.controller.management.vo.MgtMemberVO;
import com.ruoyi.member.domain.MemberLevel;
import com.ruoyi.member.mapper.MemberMapper;
import com.ruoyi.member.service.IMemberPointsService;
import com.ruoyi.member.service.IMemberLevelService;
import com.ruoyi.member.service.IMemberPointsService;
import com.ruoyi.member.service.IMemberService;
import com.ruoyi.member.util.HttpUtils;
import com.ruoyi.system.api.RemoteUserService;
@@ -42,22 +42,20 @@
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.MemberPoints;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MobileDTO;
import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import javax.annotation.Resource;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
@@ -374,7 +372,7 @@
    }
    @Override
    public List<Member> getMemberListByIds(Set<Long> memberIdList) {
    public List<Member> getMemberListByIds(Collection<Long> memberIdList) {
        return this.listByIds(memberIdList);
    }
@@ -588,6 +586,15 @@
        }
        return PageDTO.of(page, MgtMemberPointsVO.class);
    }
    @Override
    public List<Member> getMemberListByCondition(MemberDTO memberDTO) {
        return this.lambdaQuery()
                .like(StringUtils.isNotBlank(memberDTO.getNickname()), Member::getNickname,
                        memberDTO.getNickname())
                .like(StringUtils.isNotBlank(memberDTO.getPhone()), Member::getPhone,
                        memberDTO.getPhone()).list();
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/LogisticsController.java
New file
@@ -0,0 +1,19 @@
package com.ruoyi.order.controller.inner;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 * 物流公司 前端控制器
 * </p>
 *
 * @author mitao
 * @since 2024-06-07
 */
@RestController
@RequestMapping("/logistics")
public class LogisticsController {
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/LogisticsMapper.java
New file
@@ -0,0 +1,16 @@
package com.ruoyi.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.api.domain.Logistics;
/**
 * <p>
 * 物流公司 Mapper 接口
 * </p>
 *
 * @author mitao
 * @since 2024-06-07
 */
public interface LogisticsMapper extends BaseMapper<Logistics> {
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/ILogisticsService.java
New file
@@ -0,0 +1,16 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.api.domain.Logistics;
/**
 * <p>
 * 物流公司 服务类
 * </p>
 *
 * @author mitao
 * @since 2024-06-07
 */
public interface ILogisticsService extends IService<Logistics> {
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/LogisticsServiceImpl.java
New file
@@ -0,0 +1,21 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.order.mapper.LogisticsMapper;
import com.ruoyi.order.service.ILogisticsService;
import com.ruoyi.system.api.domain.Logistics;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 物流公司 服务实现类
 * </p>
 *
 * @author mitao
 * @since 2024-06-07
 */
@Service
public class LogisticsServiceImpl extends ServiceImpl<LogisticsMapper, Logistics> implements
        ILogisticsService {
}
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/LogisticsMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.order.mapper.LogisticsMapper">
</mapper>
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionVideoController.java
@@ -3,6 +3,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionVideoDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionVideoQuery;
import com.ruoyi.promotion.controller.management.vo.MgtPromotionVideoVO;
import com.ruoyi.promotion.service.IPromotionVideoService;
@@ -59,4 +60,16 @@
        promotionVideoService.removeById(id);
        return R.ok();
    }
    /**
     * 添加/编辑视频
     *
     * @param dto 大屏视频视图对象
     */
    @ApiOperation("添加/编辑视频")
    @PostMapping("/save")
    public R<?> saveOrUpdatePromotionVideo(@RequestBody MgtPromotionVideoDTO dto) {
        promotionVideoService.saveOrUpdatePromotionVideo(dto);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionWishListController.java
@@ -3,14 +3,19 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.promotion.domain.PromotionWishList;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionWishListDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionWishListQuery;
import com.ruoyi.promotion.controller.management.vo.MgtPromotionWishListVO;
import com.ruoyi.promotion.service.IPromotionWishListService;
import com.ruoyi.system.api.domain.dto.PromotionWishListDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import org.apache.poi.ss.formula.functions.T;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -25,37 +30,47 @@
 */
@RestController
@RequestMapping("/mgt/promotion-wish-list")
@Api(value = "用户端-心愿单相关接口", tags = "用户端-心愿单相关接口", description = "用户端-心愿单相关接口")
@RequiredArgsConstructor
@Api(value = "管理后台-心愿求购管理相关接口", tags = "管理后台-心愿求购管理相关接口")
public class MgtPromotionWishListController {
    @Resource
    private IPromotionWishListService iPromotionWishListService;
    private final IPromotionWishListService promotionWishListService;
    @PostMapping("/getPromotionWishList")
    @ApiOperation(value = "用户端-获取心愿单列表")
    public R<PageDTO<PromotionWishList>> getPromotionWishList(
            @RequestBody PromotionWishListDTO promotionWishListDTO) {
        return R.ok(iPromotionWishListService.getPromotionWishList(promotionWishListDTO));
    /**
     * 获取心愿求购列表的分页数据
     *
     * @param query 心愿求购管理查询对象
     * @return PageDTO<MgtPromotionWishListVO>
     */
    @ApiOperation("获取心愿求购列表的分页数据")
    @PostMapping("page")
    public R<PageDTO<MgtPromotionWishListVO>> getPromotionWishListPage(
            @Validated @RequestBody MgtPromotionWishListQuery query) {
        return R.ok(promotionWishListService.getPromotionWishListPage(query));
    }
    @PostMapping("/savePromotionWishList")
    @ApiOperation(value = "用户端-添加心愿单列表")
    public R<T> savePromotionWishList(@RequestBody PromotionWishListDTO promotionWishListDTO) {
        iPromotionWishListService.savePromotionWishList(promotionWishListDTO);
        return R.ok();
    /**
     * 查看详情
     *
     * @param id 心愿求购id
     * @return MgtPromotionWishListVO
     */
    @ApiOperation("查看详情")
    @GetMapping("/detail/{id}")
    public R<MgtPromotionWishListVO> getPromotionWishDetail(
            @ApiParam(value = "心愿求购id", required = true) @PathVariable("id") Long id) {
        return R.ok(promotionWishListService.getPromotionWishDetail(id));
    }
    @PostMapping("/getPromotionWishOne")
    @ApiOperation(value = "用户端-获取心愿单个")
    public R<PromotionWishList> getPromotionWishOne(
            @RequestBody PromotionWishListDTO promotionWishListDTO) {
        return R.ok(iPromotionWishListService.getPromotionWishOne(promotionWishListDTO));
    }
    @PostMapping("/delPromotionWishOne")
    @ApiOperation(value = "用户端-删除心愿单个")
    public R<T> delPromotionWishOne(@RequestBody PromotionWishListDTO promotionWishListDTO) {
        iPromotionWishListService.delPromotionWishOne(promotionWishListDTO);
    /**
     * 回复
     *
     * @param dto 心愿求购数据传输对象
     */
    @ApiOperation("回复")
    @PutMapping("/reply")
    public R<?> reply(@Validated @RequestBody MgtPromotionWishListDTO dto) {
        promotionWishListService.reply(dto);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionVideoDTO.java
@@ -11,7 +11,7 @@
 * @date 2024/6/3
 */
@Data
@ApiModel(value = "大屏视频视图对象", description = "大屏视频视图对象")
@ApiModel(value = "大屏视频数据传输对象", description = "大屏视频数据传输对象")
public class MgtPromotionVideoDTO implements Serializable {
    private static final long serialVersionUID = -1717120548273715375L;
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionWishListDTO.java
New file
@@ -0,0 +1,27 @@
package com.ruoyi.promotion.controller.management.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
 * @author mitao
 * @date 2024/6/7
 */
@Data
@ApiModel(value = "心愿求购数据传输对象", description = "心愿求购数据传输对象")
public class MgtPromotionWishListDTO implements Serializable {
    private static final long serialVersionUID = -3674827217986734987L;
    @ApiModelProperty(value = "心愿求购id")
    @NotNull(message = "心愿求购id不能为空")
    private Long id;
    @ApiModelProperty(value = "平台回复")
    @NotBlank(message = "平台回复不能为空")
    private String replies;
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionWishListQuery.java
New file
@@ -0,0 +1,29 @@
package com.ruoyi.promotion.controller.management.dto;
import com.ruoyi.common.core.enums.ReplyStatusEnum;
import com.ruoyi.common.core.web.page.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * @author mitao
 * @date 2024/6/7
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "心愿求购管理查询对象", description = "心愿求购管理查询对象")
public class MgtPromotionWishListQuery extends BasePage {
    private static final long serialVersionUID = -2289707074791860720L;
    @ApiModelProperty(value = "会员昵称")
    private String nickname;
    @ApiModelProperty(value = "联系电话")
    private String phone;
    @ApiModelProperty(value = "回复状态 未回复 已回复")
    private ReplyStatusEnum replyStatus;
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionWishListVO.java
New file
@@ -0,0 +1,62 @@
package com.ruoyi.promotion.controller.management.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.enums.ReplyStatusEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * <p>
 * 心愿求购表
 * </p>
 *
 * @author mitao
 * @since 2024-05-16
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "心愿求购视图对象", description = "心愿求购视图对象")
public class MgtPromotionWishListVO implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "心愿求购id")
    private Long id;
    @ApiModelProperty(value = "商品名称")
    private String goodsName;
    @ApiModelProperty(value = "期望价格")
    private BigDecimal expectedPrice;
    @ApiModelProperty(value = "商品图片 ['a','b','c','d','e']")
    private String goodsImageUrl;
    @ApiModelProperty(value = "备注")
    private String remark;
    @ApiModelProperty(value = "平台回复")
    private String replies;
    @ApiModelProperty(value = "回复状态 0未回复 1已回复")
    private ReplyStatusEnum replyStatus;
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "会员id")
    private Long memberId;
    @ApiModelProperty(value = "会员昵称")
    private String nickname;
    @ApiModelProperty(value = "联系电话")
    private String phone;
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/PromotionWishList.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.enums.ReplyStatusEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
@@ -51,6 +52,9 @@
    @ApiModelProperty(value = "平台回复")
    private String replies;
    @ApiModelProperty(value = "回复状态 0未回复 1已回复")
    private ReplyStatusEnum replyStatus;
    @ApiModelProperty(value = "创建者")
    @TableField(value = "create_by", fill = FieldFill.INSERT)
    private String createBy;
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/IPromotionWishListService.java
@@ -2,8 +2,11 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.dto.PromotionWishListDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionWishListDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionWishListQuery;
import com.ruoyi.promotion.controller.management.vo.MgtPromotionWishListVO;
import com.ruoyi.promotion.domain.PromotionWishList;
import com.ruoyi.system.api.domain.dto.PromotionWishListDTO;
/**
 * <p>
@@ -21,4 +24,26 @@
   void delPromotionWishOne(PromotionWishListDTO promotionWishListDTO);
    /**
     * 获取心愿求购列表的分页数据
     *
     * @param query 心愿求购管理查询对象
     * @return PageDTO<MgtPromotionWishListVO>
     */
    PageDTO<MgtPromotionWishListVO> getPromotionWishListPage(MgtPromotionWishListQuery query);
    /**
     * 查看详情
     *
     * @param id 心愿求购id
     * @return MgtPromotionWishListVO
     */
    MgtPromotionWishListVO getPromotionWishDetail(Long id);
    /**
     * 回复
     *
     * @param dto 心愿求购数据传输对象
     */
    void reply(MgtPromotionWishListDTO dto);
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionWishListServiceImpl.java
@@ -4,17 +4,28 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.dto.PromotionWishListDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionWishListDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionWishListQuery;
import com.ruoyi.promotion.controller.management.vo.MgtPromotionWishListVO;
import com.ruoyi.promotion.domain.PromotionWishList;
import com.ruoyi.promotion.mapper.PromotionWishListMapper;
import com.ruoyi.promotion.service.IPromotionWishListService;
import com.ruoyi.system.api.util.HuaWeiOBSUtil;
import java.io.IOException;
import java.util.ArrayList;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.PromotionWishListDTO;
import com.ruoyi.system.api.feignClient.MemberClient;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
/**
 * <p>
@@ -25,8 +36,10 @@
 * @since 2024-05-16
 */
@Service
@RequiredArgsConstructor
public class PromotionWishListServiceImpl extends ServiceImpl<PromotionWishListMapper, PromotionWishList> implements IPromotionWishListService {
    private final MemberClient memberClient;
    @Override
    public PageDTO<PromotionWishList> getPromotionWishList(PromotionWishListDTO promotionWishListDTO) {
@@ -62,4 +75,95 @@
        return this.getOne(wrapper);
    }
    /**
     * 获取心愿求购列表的分页数据
     *
     * @param query 心愿求购管理查询对象
     * @return PageDTO<MgtPromotionWishListVO>
     */
    @Override
    public PageDTO<MgtPromotionWishListVO> getPromotionWishListPage(
            MgtPromotionWishListQuery query) {
        // 封装会员条件查询对象
        MemberDTO memberDTO = new MemberDTO();
        if (StringUtils.isNotBlank(query.getNickname())) {
            memberDTO.setNickname(query.getNickname());
        }
        if (StringUtils.isNotBlank(query.getPhone())) {
            memberDTO.setPhone(query.getPhone());
        }
        // 远程调用会员服务进行条件查询
        List<Member> memberList = memberClient.getMemberListByCondition(memberDTO,
                SecurityConstants.INNER).getData();
        Set<Long> memberIdSet = memberList.stream().map(Member::getId).collect(Collectors.toSet());
        // 分页查询心愿求购列表
        Page<PromotionWishList> page = this.lambdaQuery()
                .eq(StringUtils.isNotNull(query.getReplyStatus()),
                        PromotionWishList::getReplyStatus, query.getReplyStatus())
                .in(StringUtils.isNotEmpty(memberIdSet), PromotionWishList::getMemberId,
                        memberIdSet).page(new Page<>(query.getPageCurr(), query
                        .getPageSize()));
        if (StringUtils.isEmpty(page.getRecords())) {
            return PageDTO.empty(page);
        }
        // 封装VO
        PageDTO<MgtPromotionWishListVO> pageVO = PageDTO.of(page,
                MgtPromotionWishListVO.class);
        List<MgtPromotionWishListVO> MgtPromotionWishListVOList = pageVO.getList();
        Set<Long> memberIdSets = MgtPromotionWishListVOList.stream()
                .map(MgtPromotionWishListVO::getMemberId)
                .collect(Collectors.toSet());
        if (StringUtils.isNotEmpty(memberIdSets)) {
            List<Member> data = memberClient.getMemberListByIds(memberIdSets,
                    SecurityConstants.INNER).getData();
            if (StringUtils.isNotEmpty(data)) {
                Map<Long, Member> memberMap = data.stream()
                        .collect(Collectors.toMap(Member::getId, member -> member));
                for (MgtPromotionWishListVO mgtPromotionWishListVO : MgtPromotionWishListVOList) {
                    Member member = memberMap.get(mgtPromotionWishListVO.getMemberId());
                    if (StringUtils.isNotNull(member)) {
                        mgtPromotionWishListVO.setNickname(member.getNickname());
                        mgtPromotionWishListVO.setPhone(member.getPhone());
                    }
                }
            }
        }
        return pageVO;
    }
    /**
     * 查看详情
     *
     * @param id 心愿求购id
     * @return MgtPromotionWishListVO
     */
    @Override
    public MgtPromotionWishListVO getPromotionWishDetail(Long id) {
        PromotionWishList promotionWishList = this.getById(id);
        if (StringUtils.isNull(promotionWishList)) {
            throw new ServiceException("该心愿求购不存在");
        }
        MgtPromotionWishListVO mgtPromotionWishListVO = BeanUtils.copyBean(promotionWishList,
                MgtPromotionWishListVO.class);
        List<Member> data = memberClient.getMemberListByIds(
                Lists.newArrayList(promotionWishList.getMemberId()),
                SecurityConstants.INNER).getData();
        if (StringUtils.isNotEmpty(data)) {
            mgtPromotionWishListVO.setPhone(data.get(0).getPhone());
            mgtPromotionWishListVO.setNickname(data.get(0).getNickname());
        }
        return mgtPromotionWishListVO;
    }
    /**
     * 回复
     *
     * @param dto 心愿求购数据传输对象
     */
    @Override
    public void reply(MgtPromotionWishListDTO dto) {
        PromotionWishList promotionWishList = this.getById(dto.getId());
        promotionWishList.setReplies(dto.getReplies());
        this.updateById(promotionWishList);
    }
}