cloudroam
2024-09-11 5c2efa49ab86d6fa9dbba3fb658d05d594fd513d
add:会员成长值统计和明细功能
已修改7个文件
已添加2个文件
107 ■■■■■ 文件已修改
src/main/java/com/mzl/flower/dto/request/menber/MemberRecordQueryDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/menber/UserMemberRecordQueryDTO.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/member/MemberGrowthRecordVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/member/UserGrowthRecordVO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/mapper/member/MemberGrowthRecordMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/menber/MemberGrowthRecordService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/member/MemberController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/member/MemberGrowthRecordMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/menber/MemberRecordQueryDTO.java
@@ -15,4 +15,6 @@
    private Date startRecordDate;
    @ApiModelProperty(value = "记录结束日期")
    private Date endRecordDate;
    @ApiModelProperty("用户ID")
    private String userId;
}
src/main/java/com/mzl/flower/dto/request/menber/UserMemberRecordQueryDTO.java
对比新文件
@@ -0,0 +1,13 @@
package com.mzl.flower.dto.request.menber;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserMemberRecordQueryDTO {
    @ApiModelProperty(value = "用户名称")
    private String nickName;
    @ApiModelProperty(value = "联系方式")
    private String tel;
}
src/main/java/com/mzl/flower/dto/response/member/MemberGrowthRecordVO.java
@@ -1,9 +1,11 @@
package com.mzl.flower.dto.response.member;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mzl.flower.base.AbstractTransDTO;
import com.mzl.flower.base.annotation.DictTrans;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigInteger;
import java.time.LocalDateTime;
@@ -14,6 +16,8 @@
    private Long id;
    @ApiModelProperty("记录日期")
    @JsonFormat(pattern="yyyy-MM-dd" ,timezone="GMT+8")
    @DateTimeFormat
    private Date recordDate;
    @ApiModelProperty("成长值")
src/main/java/com/mzl/flower/dto/response/member/UserGrowthRecordVO.java
对比新文件
@@ -0,0 +1,28 @@
package com.mzl.flower.dto.response.member;
import com.mzl.flower.base.AbstractTransDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserGrowthRecordVO extends AbstractTransDTO {
    private Long id;
    @ApiModelProperty("用户名称")
    private String nickName;
    @ApiModelProperty("联系方式")
    private String tel;
    @ApiModelProperty("当前成长值")
    private int sumGrowthValue;
    @ApiModelProperty("当前会员等级ID")
    private Long levelId;
    @ApiModelProperty("当前会员等级名称")
    private String levelName;
    @ApiModelProperty("用户ID")
    private String userId;
}
src/main/java/com/mzl/flower/mapper/member/MemberGrowthRecordMapper.java
@@ -3,7 +3,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.dto.request.menber.MemberRecordQueryDTO;
import com.mzl.flower.dto.request.menber.UserMemberRecordQueryDTO;
import com.mzl.flower.dto.response.member.MemberGrowthRecordVO;
import com.mzl.flower.dto.response.member.UserGrowthRecordVO;
import com.mzl.flower.entity.menber.MemberGrowthRecord;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@@ -28,4 +30,6 @@
    List<MemberGrowthRecordVO> queryPage(@Param("dto") MemberRecordQueryDTO dto, Page page);
    List<UserGrowthRecordVO> queryUserPage(@Param("dto") UserMemberRecordQueryDTO dto, Page page);
}
src/main/java/com/mzl/flower/service/menber/MemberGrowthRecordService.java
@@ -6,7 +6,9 @@
import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO;
import com.mzl.flower.dto.request.menber.MemberRecordQueryDTO;
import com.mzl.flower.dto.request.menber.UserGrowthRecordDTO;
import com.mzl.flower.dto.request.menber.UserMemberRecordQueryDTO;
import com.mzl.flower.dto.response.member.MemberGrowthRecordVO;
import com.mzl.flower.dto.response.member.UserGrowthRecordVO;
import com.mzl.flower.entity.menber.Member;
import com.mzl.flower.entity.menber.MemberGrowthRecord;
import com.mzl.flower.entity.payment.Order;
@@ -24,4 +26,7 @@
    Member getMemberByUserId(String userId);
    void growthValueDeduct(Order order);
    Page<UserGrowthRecordVO> queryUserPage(UserMemberRecordQueryDTO userMemberRecordQueryDTO, Page page);
}
src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java
@@ -5,12 +5,10 @@
import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.config.security.SecurityUtils;
import com.mzl.flower.constant.Constants;
import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO;
import com.mzl.flower.dto.request.menber.MemberRecordQueryDTO;
import com.mzl.flower.dto.request.menber.TargetMemberDTO;
import com.mzl.flower.dto.request.menber.UserGrowthRecordDTO;
import com.mzl.flower.dto.request.menber.*;
import com.mzl.flower.dto.response.customer.CustomerDTO;
import com.mzl.flower.dto.response.member.MemberGrowthRecordVO;
import com.mzl.flower.dto.response.member.UserGrowthRecordVO;
import com.mzl.flower.entity.customer.Customer;
import com.mzl.flower.entity.menber.Member;
import com.mzl.flower.entity.menber.MemberGrowthRecord;
@@ -205,4 +203,11 @@
        saveMemberGrowthRecord(memberGrowthRecordDTO);
        }
    }
    @Override
    public Page<UserGrowthRecordVO> queryUserPage(UserMemberRecordQueryDTO userMemberRecordQueryDTO, Page page) {
        List<UserGrowthRecordVO> list = memberGrowthRecordMapper.queryUserPage(userMemberRecordQueryDTO, page);
        page.setRecords(list);
        return page;
    }
}
src/main/java/com/mzl/flower/web/member/MemberController.java
@@ -8,13 +8,12 @@
import com.mzl.flower.dto.request.menber.*;
import com.mzl.flower.dto.response.member.MemberGrowthRecordVO;
import com.mzl.flower.dto.response.member.MemberVO;
import com.mzl.flower.entity.menber.Member;
import com.mzl.flower.dto.response.member.UserGrowthRecordVO;
import com.mzl.flower.service.menber.MemberGrowthRecordService;
import com.mzl.flower.service.menber.MemberService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -72,6 +71,12 @@
        return returnData(R.SUCCESS.getCode(), memberGrowthRecordService.queryPage(dto, page));
    }
    @GetMapping("/getmemberGrowthRecord/list")
    @ApiOperation(value = "会员记录列表", httpMethod = "GET")
    public ResponseEntity<ReturnDataDTO<Page<MemberGrowthRecordVO>>> getmemberGrowthRecord(Page page, MemberRecordQueryDTO dto) {
        return returnData(R.SUCCESS.getCode(), memberGrowthRecordService.queryPage(dto, page));
    }
    @GetMapping(value = "/memberGrowthRecord/delete")
    @ApiOperation(value = "删除会员记录 ", httpMethod = "GET", notes = "ID")
    public ResponseEntity deleteGrowthRecord(@NotNull(message = "id不能为空") Long id) {
@@ -106,5 +111,11 @@
        UserGrowthRecordDTO userGrowthRecordDTO = memberGrowthRecordService.getInfoByUserId(SecurityUtils.getUserId());
        return returnData(R.SUCCESS.getCode(), userGrowthRecordDTO);
    }
    @GetMapping("/userGrowthRecord/list")
    @ApiOperation(value = "会员用户记录列表", httpMethod = "GET")
    public ResponseEntity<ReturnDataDTO<Page<UserGrowthRecordVO>>> getUserMemberRecordList(Page page, UserMemberRecordQueryDTO dto) {
        return returnData(R.SUCCESS.getCode(), memberGrowthRecordService.queryUserPage(dto, page));
    }
}
src/main/resources/mapper/member/MemberGrowthRecordMapper.xml
@@ -20,6 +20,29 @@
               AND t.create_time <= #{dto.endRecordDate}
            ]]>
        </if>
        <if test="dto.userId != null and dto.userId != ''">
            and t.user_id = #{dto.userId}
        </if>
        order by t.update_time desc
    </select>
    <select id="queryUserPage" resultType="com.mzl.flower.dto.response.member.UserGrowthRecordVO">
        SELECT c.name as nickName, c.level_id as levelId, t.tel, t.id as userId, m.name AS levelName, IFNULL(SUM(mg.growth), 0) AS sumGrowthValue
        FROM t_customer_info c
                 LEFT JOIN t_user t ON c.user_id = t.id
                 LEFT JOIN t_member m ON c.level_id = m.id
                 LEFT JOIN (SELECT user_id, SUM(growth) AS growth
                            FROM t_member_growth_record
                            WHERE deleted = 0
                            GROUP BY user_id) mg ON c.user_id = mg.user_id
        WHERE c.deleted = 0
        <if test="dto.nickName!= null and dto.nickName != ''">
            AND c.name LIKE CONCAT('%',#{dto.nickName},'%')
        </if>
        <if test="dto.tel!= null and dto.tel != ''">
            and t.tel like CONCAT('%',#{dto.tel},'%')
        </if>
        GROUP BY c.id
        order by c.update_time desc
    </select>
</mapper>