jiangqs
2023-06-27 1ffb6c7910cfb4d55b4c169142b67ea872fcf614
BUG联调
1 文件已重命名
28个文件已修改
6个文件已添加
1004 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberCoupon.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerCouponGoodsListVo.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerVerifyCouponGetVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapBigTotalVo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteCouponFallbackFactory.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteCouponService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityListDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/CouponController.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyCouponVo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalDataTotalVo.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/ShopTotal.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberCoupon.java
File was renamed from ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberCoupon.java
@@ -1,4 +1,4 @@
package com.ruoyi.member.domain.pojo.member;
package com.ruoyi.system.api.domain.poji.member;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableField;
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerCouponGoodsListVo.java
New file
@@ -0,0 +1,26 @@
package com.ruoyi.system.api.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName MerCouponGoodsListVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/27 14:02
 * @Version 1.0
 */
@Data
public class MerCouponGoodsListVo {
    @ApiModelProperty(value = "商品id")
    private String goodsId;
    @ApiModelProperty(value = "商品名称")
    private String goodsName;
    @ApiModelProperty(value = "商品数量")
    private String goodsNum;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerVerifyCouponGetVo.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.api.domain.vo;
import com.ruoyi.system.api.domain.poji.goods.Goods;
import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -20,6 +21,9 @@
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @ApiModelProperty(value = "优惠券")
    private MemberCoupon memberCoupon;
    @ApiModelProperty(value = "商品列表")
    private List<Goods> goodsList;
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapBigTotalVo.java
New file
@@ -0,0 +1,24 @@
package com.ruoyi.system.api.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @ClassName MgtNurseTotalVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/19 18:06
 * @Version 1.0
 */
@Data
public class MgtMapBigTotalVo {
    @ApiModelProperty(value = "mapKey")
    private String mapKey;
    @ApiModelProperty(value = "mapValue")
    private BigDecimal mapValue;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java
@@ -3,6 +3,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @ClassName MgtPlTotalMemberTotalVo
 * @Description TODO
@@ -34,47 +36,26 @@
    @ApiModelProperty(value = "会员年龄value")
    private Integer[] ageValue;
    @ApiModelProperty(value = "会员调理key")
    private String[] nurseKey;
    @ApiModelProperty(value = "会员调理")
    private List<MgtMapTotalVo> nurseTotalVos;
    @ApiModelProperty(value = "会员调理value")
    private Integer[] nurseValue;
    @ApiModelProperty(value = "商品类型")
    private List<MgtMapTotalVo> goodsTypeTotalVos;
    @ApiModelProperty(value = "商品类型key")
    private String[] goodsTypeKey;
    @ApiModelProperty(value = "活跃度")
    private List<MgtMapTotalVo> activenessList;
    @ApiModelProperty(value = "商品类型value")
    private Integer[] goodsTypeValue;
    @ApiModelProperty(value = "来源渠道")
    private List<MgtMapTotalVo> customerSourceList;
    @ApiModelProperty(value = "活跃度key")
    private String[] activenessKey;
    @ApiModelProperty(value = "消费排行")
    private List<MgtMapTotalVo> memberPayList;
    @ApiModelProperty(value = "活跃度value")
    private Integer[] activenessValue;
    @ApiModelProperty(value = "商品排行")
    private List<MgtMapTotalVo> memberGoodsRankList;
    @ApiModelProperty(value = "来源渠道key")
    private String[] customerSourceKey;
    @ApiModelProperty(value = "来源渠道value")
    private Integer[] customerSourceValue;
    @ApiModelProperty(value = "消费排行key")
    private String[] orderRankKey;
    @ApiModelProperty(value = "消费排行value")
    private Integer[] orderRankValue;
    @ApiModelProperty(value = "商品排行key")
    private String[] goodsRankKey;
    @ApiModelProperty(value = "商品排行value")
    private Integer[] goodsRankValue;
    @ApiModelProperty(value = "店铺会员key")
    private String[] memberRankKey;
    @ApiModelProperty(value = "店铺会员value")
    private Integer[] memberRankValue;
    @ApiModelProperty(value = "店铺会员")
    private List<MgtMapTotalVo> shopMemberRankList;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteCouponFallbackFactory.java
New file
@@ -0,0 +1,47 @@
package com.ruoyi.system.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
import com.ruoyi.system.api.service.RemoteCouponService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * @ClassName RemoteCouponFallbackFactory
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/27 14:58
 * @Version 1.0
 */
@Component
public class RemoteCouponFallbackFactory implements FallbackFactory<RemoteCouponService> {
    private static final Logger log = LoggerFactory.getLogger(RemoteMemberFallbackFactory.class);
    @Override
    public RemoteCouponService create(Throwable throwable) {
        log.error("优惠券服务调用失败:{}", throwable.getMessage());
        return new RemoteCouponService() {
            @Override
            public R<List<AppMemberCouponVo>> listVoMemberCouponByUserId(Long userId) {
                return R.fail("获取优惠券列表失败:" + throwable.getMessage());
            }
            @Override
            public R<MerVerifyCouponGetVo> getVerifyCoupon(String verifyCoupon) {
                return R.fail("获取核销优惠券失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
@@ -45,12 +45,7 @@
            @Override
            public R<AppMiniRegisterVo> miniRegister(AppMiniRegisterDto appUserRegisterDto) {
                return R.fail("注册用户失败:" + throwable.getMessage());            }
            @Override
            public R<List<AppMemberCouponVo>> listVoMemberCouponByUserId(Long userId) {
                return R.fail("获取用户优惠券失败:" + throwable.getMessage());
            }
            @Override
            public R updateMemberBinding(AppMemberBindingDto appMemberBindingDto) {
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteCouponService.java
New file
@@ -0,0 +1,41 @@
package com.ruoyi.system.api.service;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
import com.ruoyi.system.api.factory.RemoteCouponFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
 * @ClassName RemoteCouponService
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/27 14:56
 * @Version 1.0
 */
@FeignClient(contextId = "remoteCouponService", value = ServiceNameConstants.MEMBER_SERVICE, fallbackFactory = RemoteCouponFallbackFactory.class)
public interface RemoteCouponService {
    /**
     * 通过userid获取用户优惠
     * @param userId
     * @return
     */
    @PostMapping("/coupon/listVoMemberCouponByUserId")
    public R<List<AppMemberCouponVo>> listVoMemberCouponByUserId(@RequestBody Long userId);
    /**
     * @description  获取核销优惠券
     * @author  jqs
     * @date    2023/6/27 14:54
     * @param verifyCoupon
     * @return  R<MerVerifyCouponGetVo>
     */
    @PostMapping("/coupon/getVerifyCoupon")
    public R<MerVerifyCouponGetVo> getVerifyCoupon(@RequestBody String verifyCoupon);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
@@ -36,13 +36,7 @@
    @PostMapping("/member/miniRegister")
    public R<AppMiniRegisterVo> miniRegister(@RequestBody AppMiniRegisterDto appUserRegisterDto);
    /**
     * 通过userid获取用户优惠
     * @param userId
     * @return
     */
    @PostMapping("/member/listVoMemberCouponByUserId")
    public R<List<AppMemberCouponVo>> listVoMemberCouponByUserId(@RequestBody Long userId);
    /**
     * 更新绑定
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityListDto.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.goods.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName MgtActivityListDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/27 19:45
 * @Version 1.0
 */
@Data
public class MgtActivityListDto {
    @ApiModelProperty("活动来源1平台2商户")
    private Integer activityFrom;
    @ApiModelProperty("活动类型1秒杀")
    private Integer activityType;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/CouponController.java
New file
@@ -0,0 +1,58 @@
package com.ruoyi.member.controller.console;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.member.service.member.MemberCouponService;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
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.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @ClassName CouponController
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/27 15:00
 * @Version 1.0
 */
@RestController
@RequestMapping("/coupon")
public class CouponController extends BaseController {
    @Resource
    private MemberCouponService memberCouponService;
    /**
     * @description: 获取用户优惠券
     * @author jqs34
     * @date 2023/5/3 1:45
     * @version 1.0
     */
    @PostMapping("/listVoMemberCouponByUserId")
    public R<List<AppMemberCouponVo>> listVoMemberCouponByUserId(@RequestBody Long userId){
        List<AppMemberCouponVo> appMemberCouponVoList = memberCouponService.listVoMemberCouponByUserId(userId);
        return R.ok(appMemberCouponVoList);
    }
    /**
     * @description  获取核销优惠券
     * @author  jqs
     * @date    2023/6/27 14:54
     * @param verifyCoupon
     * @return  R<MerVerifyCouponGetVo>
     */
    @PostMapping("/getVerifyCoupon")
    public R<MerVerifyCouponGetVo> getVerifyCoupon(@RequestBody String verifyCoupon)
    {
        MerVerifyCouponGetVo verifyCouponGetVo = memberCouponService.getVerifyCoupon(verifyCoupon);
        return R.ok(verifyCouponGetVo);
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
@@ -2,7 +2,6 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.member.service.member.MemberCouponService;
import com.ruoyi.member.service.member.MemberService;
import com.ruoyi.member.service.member.MemberSuggestService;
import com.ruoyi.system.api.domain.dto.*;
@@ -25,9 +24,6 @@
    @Resource
    private MemberService memberService;
    @Resource
    private MemberCouponService memberCouponService;
    @Resource
    private MemberSuggestService memberSuggestService;
@@ -75,17 +71,7 @@
        return R.ok(appUserRegisterVo);
    }
    /**
    * @description: 获取用户优惠券
    * @author jqs34
    * @date 2023/5/3 1:45
    * @version 1.0
    */
    @PostMapping("/listVoMemberCouponByUserId")
    public R<List<AppMemberCouponVo>> listVoMemberCouponByUserId(@RequestBody Long userId){
        List<AppMemberCouponVo> appMemberCouponVoList = memberCouponService.listVoMemberCouponByUserId(userId);
        return R.ok(appMemberCouponVoList);
    }
    /**
     * 更新会员绑定商户
@@ -248,10 +234,5 @@
        return R.ok(shopTotalMemberVo);
    }
    @PostMapping("/getVerifyCoupon")
    public R getVerifyCoupon(@RequestBody String verifyCoupon)
    {
        memberCouponService.verifyCoupon(verifyCoupon);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java
@@ -1,6 +1,6 @@
package com.ruoyi.member.mapper.member;
import com.ruoyi.member.domain.pojo.member.MemberCoupon;
import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -13,7 +13,7 @@
import com.ruoyi.member.domain.pojo.coupon.CouponRelGoods;
import com.ruoyi.member.domain.pojo.coupon.CouponRelUser;
import com.ruoyi.member.domain.pojo.coupon.CouponTotal;
import com.ruoyi.member.domain.pojo.member.MemberCoupon;
import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
import com.ruoyi.member.domain.vo.*;
import com.ruoyi.member.mapper.coupon.CouponMapper;
import com.ruoyi.member.service.coupon.CouponRelGoodsService;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -1,16 +1,18 @@
package com.ruoyi.member.service.impl.member;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.member.domain.pojo.member.MemberCoupon;
import com.ruoyi.member.mapper.member.MemberCouponMapper;
import com.ruoyi.member.service.member.MemberCouponService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.poji.goods.Goods;
import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
import com.ruoyi.system.api.service.RemoteGoodsService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
@@ -26,6 +28,9 @@
    @Resource
    private MemberCouponMapper memberCouponMapper;
    @Resource
    private RemoteGoodsService remoteGoodsService;
    /**
     * @description: TODO
@@ -47,7 +52,7 @@
     * @return  void
     */
    @Override
    public void verifyCoupon(String verifyCoupon){
    public MerVerifyCouponGetVo getVerifyCoupon(String verifyCoupon){
        MemberCoupon memberCoupon = this.getById(verifyCoupon);
        if(memberCoupon==null){
            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
@@ -62,9 +67,14 @@
        if(memberCoupon.getCouponType()!=4){
            throw new ServiceException(AppErrorConstant.COUPON_TYPE_ERROR);
        }
        //更新优惠券为已使用
        memberCoupon.setCouponStatus(2);
        memberCoupon.setUseTime(new Date());
        this.saveOrUpdate(memberCoupon);
        MerVerifyCouponGetVo merVerifyCouponGetVo = new MerVerifyCouponGetVo();
        merVerifyCouponGetVo.setUserId(memberCoupon.getUserId());
        merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
        String relGoodsIds = memberCoupon.getRelGoodsIds();
        List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData();
        if(goodsList!=null){
            merVerifyCouponGetVo.setGoodsList(goodsList);
        }
        return merVerifyCouponGetVo;
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -1096,8 +1096,14 @@
        //获取基础统计
        MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto);
        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto);
        plTotalMemberTotalVo.setManTotal(mgtAgeTotalVo.getManTotal());
        plTotalMemberTotalVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal());
        if(mgtAgeTotalVo!=null){
            plTotalMemberTotalVo.setManTotal(mgtAgeTotalVo.getManTotal());
            plTotalMemberTotalVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal());
        }else{
            plTotalMemberTotalVo.setManTotal(0);
            plTotalMemberTotalVo.setWomenTotal(0);
        }
        // 年龄段数组
        String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
        // 不同年龄段的会员数数组
@@ -1105,109 +1111,85 @@
        // 设置年龄段数组和不同年龄段的会员数数组
        plTotalMemberTotalVo.setAgeKey(ageKey);
        plTotalMemberTotalVo.setAgeValue(ageValue);
        // 获取不同护理类型的会员数
        // 获取不同调理类型的会员数
        List<MgtMapTotalVo> nurseTotalVos = memberMapper.getPlTotalMemberTotalNurse(mgtBasePlatformDto);
        if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
            String[] nurseKey = new String[nurseTotalVos.size()];
            Integer[] nurseValue = new Integer[nurseTotalVos.size()];
            // 遍历不同护理类型的会员数列表,设置护理类型数组和对应的会员数数组
            for (int i = 0; i < nurseTotalVos.size(); i++) {
                nurseKey[i] = nurseTotalVos.get(i).getMapKey();
                nurseValue[i] = nurseTotalVos.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setNurseKey(nurseKey);
            plTotalMemberTotalVo.setNurseValue(nurseValue);
            nurseTotalVos = listRemoveNull(nurseTotalVos);
            plTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos);
        }
        // 获取不同商品类型的会员数
        List<MgtMapTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto);
        if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
            String[] goodsTypeKey = new String[goodsTypeTotalVos.size()];
            Integer[] goodsTypeValue = new Integer[goodsTypeTotalVos.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < goodsTypeTotalVos.size(); i++) {
                goodsTypeKey[i] = goodsTypeTotalVos.get(i).getMapKey();
                goodsTypeValue[i] = goodsTypeTotalVos.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setGoodsTypeKey(goodsTypeKey);
            plTotalMemberTotalVo.setGoodsTypeValue(goodsTypeValue);
            goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos);
            plTotalMemberTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
        }
        // 获取不同活跃度的会员数
        List<Long> shopIdList = mgtBasePlatformDto.getShopIdList();
        List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
        if (activenessList != null && !activenessList.isEmpty()) {
            String[] activenessKey = new String[activenessList.size()];
            Integer[] activenessValue = new Integer[activenessList.size()];
            Activeness activeness;
            String actStartDate;
            String actEndDate;
            Integer count;
            List<MgtMapTotalVo> mgtMapTotalVoList = new ArrayList<>();
            MgtMapTotalVo mgtMapTotalVo;
            // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
            for (int i = 0; i < activenessList.size(); i++) {
                activeness = activenessList.get(i);
                actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
                actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
                count = memberMapper.getPlTotalMemberTotalActiveness(shopIdList, actStartDate, actEndDate);
                activenessKey[i] = activeness.getActivenessName();
                activenessValue[i] = count;
                if(StringUtils.isNotBlank(activeness.getActivenessName())){
                    mgtMapTotalVo = new MgtMapTotalVo();
                    mgtMapTotalVo.setMapKey(activeness.getActivenessName());
                    mgtMapTotalVo.setMapValue(count);
                }
            }
            plTotalMemberTotalVo.setActivenessKey(activenessKey);
            plTotalMemberTotalVo.setActivenessValue(activenessValue);
            plTotalMemberTotalVo.setActivenessList(mgtMapTotalVoList);
        }
        //获取会员消费排名
        List<MgtMapTotalVo> memberPayList = memberMapper.getPlTotalMemberRankPay(mgtBasePlatformDto);
        if (memberPayList != null && memberPayList.size() > 0) {
            String[] memberPayKey = new String[memberPayList.size()];
            Integer[] memberPayValue = new Integer[memberPayList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < memberPayList.size(); i++) {
                memberPayKey[i] = memberPayList.get(i).getMapKey();
                memberPayValue[i] = memberPayList.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setOrderRankKey(memberPayKey);
            plTotalMemberTotalVo.setOrderRankValue(memberPayValue);
            memberPayList = listRemoveNull(memberPayList);
            plTotalMemberTotalVo.setMemberPayList(memberPayList);
        }
        //获取来源渠道排名
        List<MgtMapTotalVo> customerSourceList = memberMapper.getPlTotalMemberRankCustomerSource(mgtBasePlatformDto);
        if (customerSourceList != null && customerSourceList.size() > 0) {
            String[] customerSourceKey = new String[customerSourceList.size()];
            Integer[] customerSourceValue = new Integer[customerSourceList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < customerSourceList.size(); i++) {
                customerSourceKey[i] = customerSourceList.get(i).getMapKey();
                customerSourceValue[i] = customerSourceList.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setCustomerSourceKey(customerSourceKey);
            plTotalMemberTotalVo.setCustomerSourceValue(customerSourceValue);
            customerSourceList = listRemoveNull(customerSourceList);
            plTotalMemberTotalVo.setCustomerSourceList(customerSourceList);
        }
        //获取商铺会员排名
        List<MgtMapTotalVo> shopMemberRankList = memberMapper.getPlTotalMemberRank(mgtBasePlatformDto);
        if (shopMemberRankList != null && shopMemberRankList.size() > 0) {
            String[] shopMemberRankKey = new String[shopMemberRankList.size()];
            Integer[] shopMemberRankValue = new Integer[shopMemberRankList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopMemberRankList.size(); i++) {
                shopMemberRankKey[i] = shopMemberRankList.get(i).getMapKey();
                shopMemberRankValue[i] = shopMemberRankList.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setMemberRankKey(shopMemberRankKey);
            plTotalMemberTotalVo.setMemberRankValue(shopMemberRankValue);
            shopMemberRankList = listRemoveNull(shopMemberRankList);
            plTotalMemberTotalVo.setShopMemberRankList(shopMemberRankList);
        }
        List<MgtMapTotalVo> memberGoodsRankList = remoteOrderService.listMemberGoodsRank(mgtBasePlatformDto).getData();
        if (memberGoodsRankList != null && memberGoodsRankList.size() > 0) {
            String[] shopMemberRankKey = new String[memberGoodsRankList.size()];
            Integer[] shopMemberRankValue = new Integer[memberGoodsRankList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < memberGoodsRankList.size(); i++) {
                shopMemberRankKey[i] = memberGoodsRankList.get(i).getMapKey();
                shopMemberRankValue[i] = memberGoodsRankList.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setGoodsRankKey(shopMemberRankKey);
            plTotalMemberTotalVo.setGoodsRankValue(shopMemberRankValue);
            memberGoodsRankList = listRemoveNull(memberGoodsRankList);
            plTotalMemberTotalVo.setMemberGoodsRankList(memberGoodsRankList);
        }
        return plTotalMemberTotalVo;
    }
    /**
     * @description  去除空字符串
     * @author  jqs
     * @date    2023/6/27 17:35
     * @param mgtMapTotalVos
     * @return  List<MgtMapTotalVo>
     */
    private List<MgtMapTotalVo> listRemoveNull(List<MgtMapTotalVo> mgtMapTotalVos){
        for (int i = 0; i < mgtMapTotalVos.size(); i++) {
            if(StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())){
                mgtMapTotalVos.remove(i);
            }
        }
        return mgtMapTotalVos;
    }
    /**
     * @description  通过shopId获取userId
     * @author  jqs
     * @date    2023/6/21 17:11
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
@@ -1,8 +1,9 @@
package com.ruoyi.member.service.member;
import com.ruoyi.member.domain.pojo.member.MemberCoupon;
import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
import java.util.List;
@@ -31,5 +32,5 @@
     * @param verifyCoupon
     * @return  void
     */
    void verifyCoupon(String verifyCoupon);
    MerVerifyCouponGetVo getVerifyCoupon(String verifyCoupon);
}
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml
@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.member.mapper.member.MemberCouponMapper">
    <resultMap type="MemberCoupon" id="MemberCouponResult">
    <resultMap type="com.ruoyi.system.api.domain.poji.member.MemberCoupon" id="MemberCouponResult">
        <result property="id"    column="id"    />
        <result property="delFlag"    column="del_flag"    />
        <result property="couponId"    column="coupon_id"    />
@@ -31,7 +31,7 @@
        select id, del_flag, coupon_id, user_id, coupon_type, coupon_status, coupon_name, send_type, send_time_type, send_time, money_threshold, discount_money, discount_percent, use_scope, valid_time_type, valid_start_time, valid_end_time, valid_day, receive_time, use_time, deadline_time, rel_goods_ids from t_member_coupon
    </sql>
    <select id="selectMemberCouponList" parameterType="MemberCoupon" resultMap="MemberCouponResult">
    <select id="selectMemberCouponList" parameterType="com.ruoyi.system.api.domain.poji.member.MemberCoupon" resultMap="MemberCouponResult">
        <include refid="selectMemberCouponVo"/>
        <where>
            <if test="couponId != null  and couponId != ''"> and coupon_id = #{couponId}</if>
@@ -62,7 +62,7 @@
        where id = #{id}
    </select>
    <insert id="insertMemberCoupon" parameterType="MemberCoupon" useGeneratedKeys="true" keyProperty="id">
    <insert id="insertMemberCoupon" parameterType="com.ruoyi.system.api.domain.poji.member.MemberCoupon" useGeneratedKeys="true" keyProperty="id">
        insert into t_member_coupon
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="delFlag != null">del_flag,</if>
@@ -112,7 +112,7 @@
        </trim>
    </insert>
    <update id="updateMemberCoupon" parameterType="MemberCoupon">
    <update id="updateMemberCoupon" parameterType="com.ruoyi.system.api.domain.poji.member.MemberCoupon">
        update t_member_coupon
        <trim prefix="SET" suffixOverrides=",">
            <if test="delFlag != null">del_flag = #{delFlag},</if>
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -442,8 +442,9 @@
        SELECT
        tm.nick_name mapKey,
        tmt.total_pay_count mapValue
        FROM t_member tm WHERE tm.del_flag = 0
        FROM t_member tm
        INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id
        WHERE tm.del_flag = 0
        <if test="param.shopId != null and param.shopId != ''">
            AND tm.relation_shop_id = #{param.shopId}
        </if>
@@ -603,8 +604,9 @@
        SELECT
        tm.nick_name mapKey,
        tmt.total_pay_count mapValue
        FROM t_member tm WHERE del_flag = 0
        FROM t_member tm
        INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id
        WHERE tm.del_flag = 0
        <if test="param.shopIdList != null and shopIdList != ''">
            AND tm.relation_shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
@@ -620,12 +622,12 @@
        ORDER BY tmt.total_pay_count DESC LIMIT 15
    </select>
    <select id="getTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
    <select id="getPlTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        tm.customer_source mapKey,
        COUNT(tm.user_id) mapValue
        FROM t_member tm WHERE tm.del_flag = 0
        <if test="shopIdList != null and shopIdList != ''">
        <if test="param.shopIdList != null and param.shopIdList != ''">
            AND tm.relation_shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
@@ -646,7 +648,7 @@
        tm.relation_shop_name mapKey,
        COUNT(tm.user_id) mapValue
        FROM t_member tm WHERE tm.del_flag = 0
        <if test="shopIdList != null and shopIdList != ''">
        <if test="param.shopIdList != null and param.shopIdList != ''">
            AND tm.relation_shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
@@ -667,7 +669,7 @@
        SELECT user_id
        FROM t_member
        WHERE del_flag = 0
        <if test="param.userIds != null">
        <if test="shopIdList != null">
            AND relation_shop_id IN
            <foreach collection="shopIdList" item="item" open="(" separator="," close=")">
                #{item}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java
@@ -53,7 +53,7 @@
                merVerifyCodeVo.setMerVerifyOrderVo(merVerifyOrderVo);
                break;
            case 2:
                MerVerifyCouponVo merVerifyCouponVo = null;
                MerVerifyCouponVo merVerifyCouponVo = orderService.verifyCoupon(verifyCode);
                merVerifyCodeVo.setMerVerifyCouponVo(merVerifyCouponVo);
                break;
            case 3:
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
@@ -2,10 +2,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.order.domain.vo.MgtPlTotalActivityTotalVo;
import com.ruoyi.order.domain.vo.MgtTotalActivityTotalVo;
import com.ruoyi.order.domain.vo.MgtTotalDataTotalVo;
import com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo;
import com.ruoyi.order.domain.vo.*;
import com.ruoyi.order.service.order.OrderService;
import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
@@ -100,11 +97,11 @@
    }
    @RequestMapping(value = "/getPlTotalActivityAgeRank", method = RequestMethod.POST)
    @ApiOperation(value = "获取商户活动年龄分布")
    public R<MgtPlTotalActivityTotalVo> getPlTotalActivityAgeRank(@RequestBody MgtPlActivityAgeDto mgtPlActivityAgeDto) {
    @ApiOperation(value = "获取平台商户活动年龄分布")
    public R<List<MgtMapTotalPlusVo>> getPlTotalActivityAgeRank(@RequestBody MgtPlActivityAgeDto mgtPlActivityAgeDto) {
        Long userId = SecurityUtils.getUserId();
        mgtPlActivityAgeDto.setUserId(userId);
        MgtPlTotalActivityTotalVo totalActivityTotal = orderService.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
        return R.ok(totalActivityTotal);
        List<MgtMapTotalPlusVo> ageRankList = orderService.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
        return R.ok(ageRankList);
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
@@ -1,12 +1,31 @@
package com.ruoyi.order.controller.miniapp;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.order.domain.dto.AppPlaceOrderDto;
import com.ruoyi.order.domain.dto.AppSureOrderDto;
import com.ruoyi.order.domain.dto.AppUserOrderPageDto;
import com.ruoyi.order.domain.pojo.order.Order;
import com.ruoyi.order.domain.vo.AppPlaceOrderVo;
import com.ruoyi.order.domain.vo.AppSureOrderVo;
import com.ruoyi.order.domain.vo.AppUserOrderGetVo;
import com.ruoyi.order.domain.vo.AppUserOrderPageVo;
import com.ruoyi.order.service.order.OrderService;
import com.ruoyi.system.api.domain.dto.AppBaseGetDto;
import com.ruoyi.system.api.domain.dto.AppMemberBindingDto;
import com.ruoyi.system.api.domain.poji.member.Member;
import com.ruoyi.system.api.service.RemoteMemberService;
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
@@ -20,13 +39,14 @@
@RequestMapping("/app/order")
public class AppOrderController extends BaseController {
    @Resource
    private RemoteMemberService memberService;
    @Resource
    private OrderService orderService;
    /*@RequestMapping(value = "/buyGoods", method = RequestMethod.POST)
    @RequestMapping(value = "/buyGoods", method = RequestMethod.POST)
    @ApiOperation(value = "购买商品")
    public R<AppSureOrderVo> buyGoods(@RequestBody AppSureOrderDto appSureOrderDto) {
        Long userId = SecurityUtils.getUserId();
@@ -123,6 +143,6 @@
        Long userId = SecurityUtils.getUserId();
        orderService.cancelOrder(appBaseGetDto.getId());
        return R.ok();
    }*/
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyCouponVo.java
@@ -1,6 +1,10 @@
package com.ruoyi.order.domain.vo;
import com.ruoyi.system.api.domain.vo.MerCouponGoodsListVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author jqs34
@@ -12,4 +16,15 @@
@Data
public class MerVerifyCouponVo {
    @ApiModelProperty(value = "用户姓名")
    private String userName;
    @ApiModelProperty(value = "用户电话")
    private String userMobile;
    @ApiModelProperty(value = "优惠券来源")
    private String couponFrom;
    @ApiModelProperty(value = "优惠券来源")
    private List<MerCouponGoodsListVo> goodsList;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalDataTotalVo.java
@@ -3,6 +3,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @ClassName MgtTotalDataTotalVo
 * @Description TODO
@@ -13,6 +15,12 @@
@Data
public class MgtTotalDataTotalVo {
    @ApiModelProperty(value = "商户名称")
    private String shopName;
    @ApiModelProperty(value = "营业额")
    private BigDecimal salesTotal;
    @ApiModelProperty(value = "总人数")
    private Integer orderPerson;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java
@@ -1,9 +1,12 @@
package com.ruoyi.order.domain.vo;
import com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * @author jqs34
@@ -63,27 +66,18 @@
    @ApiModelProperty(value = "订单数量value")
    private Integer[] orderTotalValue;
    @ApiModelProperty(value = "订单数量value")
    @ApiModelProperty(value = "订单金额value")
    private BigDecimal[] orderMoneyValue;
    @ApiModelProperty(value = "商品类型数量key")
    private String[] goodsTypeKey;
    @ApiModelProperty(value = "商品类型数量")
    private List<MgtMapTotalVo> goodsTypeTotalList;
    @ApiModelProperty(value = "商品类型数量value")
    private Integer[] goodsTypeTotalValue;
    @ApiModelProperty(value = "商品类型金额")
    private List<MgtMapBigTotalVo> goodsTypeMoneyList;
    @ApiModelProperty(value = "商品类型金额value")
    private BigDecimal[] goodsTypeMoneyValue;
    @ApiModelProperty(value = "商品排行")
    private List<MgtMapBigTotalVo> goodsRankList;
    @ApiModelProperty(value = "商品排行key")
    private String[] goodsRankKey;
    @ApiModelProperty(value = "商品排行value")
    private BigDecimal[] goodsRankValue;
    @ApiModelProperty(value = "来源排行key")
    private String[] orderFromRankKey;
    @ApiModelProperty(value = "来源排行value")
    private BigDecimal[] orderFromRankValue;
    @ApiModelProperty(value = "来源排行")
    private List<MgtMapBigTotalVo> orderFromRankList;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -11,9 +11,11 @@
import com.ruoyi.system.api.domain.dto.MgtPlActivityAgeDto;
import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -187,7 +189,7 @@
     * @author jqs34
     * @date 2023/6/19 22:48
     */
    List<MgtMapTotalPlusVo> listTotalOrderTotalGoodsRank(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    List<MgtMapBigTotalVo> listTotalOrderTotalGoodsRank(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    /**
     * @description listTotalOrderTotalOrderFrom
@@ -196,7 +198,7 @@
     * @author jqs34
     * @date 2023/6/19 22:48
     */
    List<MgtMapTotalPlusVo> listTotalOrderTotalOrderFrom(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    List<MgtMapBigTotalVo> listTotalOrderTotalOrderFrom(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    /**
@@ -327,7 +329,7 @@
     * @author jqs34
     * @date 2023/6/19 22:48
     */
    List<MgtMapTotalPlusVo> listPlTotalOrderTotalGoodsRank(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
    List<MgtMapBigTotalVo> listPlTotalOrderTotalGoodsRank(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description listTotalOrderTotalOrderFrom
@@ -336,7 +338,7 @@
     * @author jqs34
     * @date 2023/6/19 22:48
     */
    List<MgtMapTotalPlusVo> listPlTotalOrderTotalOrderFrom(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
    List<MgtMapBigTotalVo> listPlTotalOrderTotalOrderFrom(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description getTotalActivityTotal
@@ -383,7 +385,7 @@
     * @param mgtActivityAgeDto
     * @return  MgtTotalActivityTotalVo
     */
    MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(@Param("param")MgtPlActivityAgeDto mgtActivityAgeDto);
    List<MgtMapTotalPlusVo> getPlTotalActivityAgeRank(@Param("param")MgtPlActivityAgeDto mgtActivityAgeDto);
    /**
     * @description listPlTotalShopActivityRank
@@ -420,4 +422,13 @@
     * @return  MerHomeShopTotalVo
     */
    MerHomeShopTotalVo getMerHomeShopTotalVo(Long shopId);
    /**
     * @description  统计商户营业额
     * @author  jqs
     * @date    2023/6/27 19:13
     * @param mgtBaseShopDto
     * @return  BigDecimal
     */
    BigDecimal shopSalesTotal(@Param("param")MgtBaseShopDto mgtBaseShopDto);
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -80,6 +80,8 @@
    @Resource
    private UserServiceRecordService userServiceRecordService;
    @Resource
    private RemoteCouponService remoteCouponService;
    /**
@@ -104,7 +106,7 @@
        BigDecimal goodsPrice;
        BigDecimal goodsTotalPrice;
        BigDecimal goodsRealPrice;
        List<AppMemberCouponVo> appMemberCouponVoList = remoteMemberService.listVoMemberCouponByUserId(userId).getData();
        List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(userId).getData();
        List<AppMemberCouponVo> appGoodsMemberCouponVoList;
        Map<String, AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
        AppMemberCouponVo appMemberCouponVo;
@@ -229,7 +231,7 @@
        BigDecimal goodsPrice;
        BigDecimal goodsTotalPrice;
        BigDecimal goodsRealPrice;
        List<AppMemberCouponVo> appMemberCouponVoList = remoteMemberService.listVoMemberCouponByUserId(userId).getData();
        List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(userId).getData();
        Map<String, AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
        AppMemberCouponVo appMemberCouponVo;
        Integer couponType;
@@ -714,7 +716,7 @@
        BigDecimal goodsRealPrice;
        Long shopId = merNewOrderDto.getShopId();
        Shop shop = remoteShopService.getShop(shopId).getData();
        List<AppMemberCouponVo> appMemberCouponVoList = remoteMemberService.listVoMemberCouponByUserId(userId).getData();
        List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(userId).getData();
        Map<String, AppMemberCouponVo> appMemberCouponVoMap = new HashMap<>();
        if (null != appMemberCouponVoList) {
            appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
@@ -1315,63 +1317,86 @@
        }
        //获取商品分类销售数据
        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto);
        List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>();
        List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
        if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
            String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()];
            Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()];
            BigDecimal[] goodsTypeMoneyValue = new BigDecimal[mgtMapTotalVoGoodsType.size()];
            MgtMapTotalVo mgtMapTotalVo;
            MgtMapBigTotalVo mgtMapBigTotalVo;
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
                goodsTypeTotalValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueFirst();
                goodsTypeMoneyValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueSecond();
                mgtMapTotalVo = new MgtMapTotalVo();
                mgtMapBigTotalVo = new MgtMapBigTotalVo();
                mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")){
                    goodsTypeKey[i] = "周期";
                    mgtTotalOrderTotalVo.setCycleTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setCycleMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                    mgtMapTotalVo.setMapKey("周期");
                    mgtMapBigTotalVo.setMapKey("周期");
                    mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal()+mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")){
                    goodsTypeKey[i] = "服务";
                    mgtTotalOrderTotalVo.setServiceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setServiceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                    mgtMapTotalVo.setMapKey("服务");
                    mgtMapBigTotalVo.setMapKey("服务");
                    mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal()+mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")){
                    goodsTypeKey[i] = "体验";
                    mgtTotalOrderTotalVo.setExperienceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setExperienceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                    mgtMapTotalVo.setMapKey("体验");
                    mgtMapBigTotalVo.setMapKey("体验");
                    mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal()+mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")){
                    goodsTypeKey[i] = "单品";
                    mgtMapTotalVo.setMapKey("单品");
                    mgtMapBigTotalVo.setMapKey("单品");
                }
            }
            mgtTotalOrderTotalVo.setGoodsTypeKey(goodsTypeKey);
            mgtTotalOrderTotalVo.setGoodsTypeTotalValue(goodsTypeTotalValue);
            mgtTotalOrderTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue);
            mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
            mgtTotalOrderTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
        }
        //获取商品销售排名
        List<MgtMapTotalPlusVo> goodsRankList = orderMapper.listTotalOrderTotalGoodsRank(mgtBaseShopDto);
        List<MgtMapBigTotalVo> goodsRankList = orderMapper.listTotalOrderTotalGoodsRank(mgtBaseShopDto);
        if (goodsRankList != null && goodsRankList.size() > 0) {
            String[] goodsRankKey = new String[goodsRankList.size()];
            BigDecimal[] goodsRankValue = new BigDecimal[goodsRankList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < goodsRankList.size(); i++) {
                goodsRankKey[i] = goodsRankList.get(i).getMapKey();
                goodsRankValue[i] = goodsRankList.get(i).getMapValueSecond();
            }
            mgtTotalOrderTotalVo.setGoodsRankKey(goodsRankKey);
            mgtTotalOrderTotalVo.setGoodsRankValue(goodsRankValue);
            goodsRankList = bigListRemoveNull(goodsRankList);
            mgtTotalOrderTotalVo.setGoodsRankList(goodsRankList);
        }
        //获取来源销售排名
        List<MgtMapTotalPlusVo> orderFromList = orderMapper.listTotalOrderTotalOrderFrom(mgtBaseShopDto);
        List<MgtMapBigTotalVo> orderFromList = orderMapper.listTotalOrderTotalOrderFrom(mgtBaseShopDto);
        if (orderFromList != null && orderFromList.size() > 0) {
            String[] orderFromKey = new String[orderFromList.size()];
            BigDecimal[] orderFromValue = new BigDecimal[orderFromList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < orderFromList.size(); i++) {
                orderFromKey[i] = orderFromList.get(i).getMapKey();
                orderFromValue[i] = orderFromList.get(i).getMapValueSecond();
            }
            mgtTotalOrderTotalVo.setOrderFromRankKey(orderFromKey);
            mgtTotalOrderTotalVo.setOrderFromRankValue(orderFromValue);
            orderFromList = bigListRemoveNull(orderFromList);
            mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList);
        }
        return mgtTotalOrderTotalVo;
    }
    /**
     * @description  去除空字符串
     * @author  jqs
     * @date    2023/6/27 17:35
     * @param mgtMapTotalVos
     * @return  List<MgtMapTotalVo>
     */
    private List<MgtMapTotalVo> listRemoveNull(List<MgtMapTotalVo> mgtMapTotalVos){
        for (int i = 0; i < mgtMapTotalVos.size(); i++) {
            if(StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())){
                mgtMapTotalVos.remove(i);
            }
        }
        return mgtMapTotalVos;
    }
    /**
     * @description  去除空字符串
     * @author  jqs
     * @date    2023/6/27 17:35
     * @param mgtMapTotalVos
     * @return  List<MgtMapTotalVo>
     */
    private List<MgtMapBigTotalVo> bigListRemoveNull(List<MgtMapBigTotalVo> mgtMapTotalVos){
        for (int i = 0; i < mgtMapTotalVos.size(); i++) {
            if(StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())){
                mgtMapTotalVos.remove(i);
            }
        }
        return mgtMapTotalVos;
    }
    /**
     * @description
@@ -1463,6 +1488,8 @@
    public MgtTotalDataTotalVo getTotalDataTotal(MgtBaseShopDto mgtBaseShopDto){
        //获取人数统计
        MgtTotalDataTotalVo mgtTotalDataTotalVo = orderMapper.getTotalDataTotal(mgtBaseShopDto);
        BigDecimal salesTotal = orderMapper.shopSalesTotal(mgtBaseShopDto);
        mgtTotalDataTotalVo.setSalesTotal(salesTotal);
        Integer reorderPerson = orderMapper.getReorderPerson(mgtBaseShopDto);
        mgtTotalDataTotalVo.setReorderPerson(reorderPerson);
        Integer returnedPerson = orderMapper.getReturnedPerson(mgtBaseShopDto);
@@ -1517,6 +1544,8 @@
                mgtBaseShopDto.setEndDate(mgtBasePlatformDto.getEndDate());
                mgtBaseShopDto.setShopId(shopId);
                mgtTotalDataTotalVo = this.getTotalDataTotal(mgtBaseShopDto);
                Shop shop = remoteShopService.getShop(shopId).getData();
                mgtTotalDataTotalVo.setShopName(shop.getShopName());
                mgtTotalDataTotalVoList.add(mgtTotalDataTotalVo);
            }
        }
@@ -1567,59 +1596,57 @@
        }
        //获取商品分类销售数据
        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto);
        List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>();
        List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
        mgtTotalOrderTotalVo.setCycleTotal(0);
        mgtTotalOrderTotalVo.setCycleMoney(BigDecimal.ZERO);
        mgtTotalOrderTotalVo.setServiceTotal(0);
        mgtTotalOrderTotalVo.setServiceMoney(BigDecimal.ZERO);
        mgtTotalOrderTotalVo.setExperienceTotal(0);
        mgtTotalOrderTotalVo.setExperienceMoney(BigDecimal.ZERO);
        if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
            String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()];
            Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()];
            BigDecimal[] goodsTypeMoneyValue = new BigDecimal[mgtMapTotalVoGoodsType.size()];
            MgtMapTotalVo mgtMapTotalVo;
            MgtMapBigTotalVo mgtMapBigTotalVo;
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
                goodsTypeTotalValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueFirst();
                goodsTypeMoneyValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueSecond();
                mgtMapTotalVo = new MgtMapTotalVo();
                mgtMapBigTotalVo = new MgtMapBigTotalVo();
                mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")){
                    goodsTypeKey[i] = "周期";
                    mgtTotalOrderTotalVo.setCycleTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setCycleMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                    mgtMapTotalVo.setMapKey("周期");
                    mgtMapBigTotalVo.setMapKey("周期");
                    mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal()+mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")){
                    goodsTypeKey[i] = "服务";
                    mgtTotalOrderTotalVo.setServiceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setServiceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                    mgtMapTotalVo.setMapKey("服务");
                    mgtMapBigTotalVo.setMapKey("服务");
                    mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal()+mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")){
                    goodsTypeKey[i] = "体验";
                    mgtTotalOrderTotalVo.setExperienceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setExperienceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                    mgtMapTotalVo.setMapKey("体验");
                    mgtMapBigTotalVo.setMapKey("体验");
                    mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal()+mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")){
                    goodsTypeKey[i] = "单品";
                    mgtMapTotalVo.setMapKey("单品");
                    mgtMapBigTotalVo.setMapKey("单品");
                }
            }
            mgtTotalOrderTotalVo.setGoodsTypeKey(goodsTypeKey);
            mgtTotalOrderTotalVo.setGoodsTypeTotalValue(goodsTypeTotalValue);
            mgtTotalOrderTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue);
            mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
            mgtTotalOrderTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
        }
        //获取商品销售排名
        List<MgtMapTotalPlusVo> goodsRankList = orderMapper.listPlTotalOrderTotalGoodsRank(mgtBasePlatformDto);
        List<MgtMapBigTotalVo> goodsRankList = orderMapper.listPlTotalOrderTotalGoodsRank(mgtBasePlatformDto);
        if (goodsRankList != null && goodsRankList.size() > 0) {
            String[] goodsRankKey = new String[goodsRankList.size()];
            BigDecimal[] goodsRankValue = new BigDecimal[goodsRankList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < goodsRankList.size(); i++) {
                goodsRankKey[i] = goodsRankList.get(i).getMapKey();
                goodsRankValue[i] = goodsRankList.get(i).getMapValueSecond();
            }
            mgtTotalOrderTotalVo.setGoodsRankKey(goodsRankKey);
            mgtTotalOrderTotalVo.setGoodsRankValue(goodsRankValue);
            goodsRankList = bigListRemoveNull(goodsRankList);
            mgtTotalOrderTotalVo.setGoodsRankList(goodsRankList);
        }
        //获取来源销售排名
        List<MgtMapTotalPlusVo> orderFromList = orderMapper.listPlTotalOrderTotalOrderFrom(mgtBasePlatformDto);
        List<MgtMapBigTotalVo> orderFromList = orderMapper.listPlTotalOrderTotalOrderFrom(mgtBasePlatformDto);
        if (orderFromList != null && orderFromList.size() > 0) {
            String[] orderFromKey = new String[orderFromList.size()];
            BigDecimal[] orderFromValue = new BigDecimal[orderFromList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < orderFromList.size(); i++) {
                orderFromKey[i] = orderFromList.get(i).getMapKey();
                orderFromValue[i] = orderFromList.get(i).getMapValueSecond();
            }
            mgtTotalOrderTotalVo.setOrderFromRankKey(orderFromKey);
            mgtTotalOrderTotalVo.setOrderFromRankValue(orderFromValue);
            orderFromList = bigListRemoveNull(orderFromList);
            mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList);
        }
        return mgtTotalOrderTotalVo;
    }
@@ -1761,14 +1788,29 @@
     * @return  MgtTotalActivityTotalVo
     */
    @Override
    public MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPlActivityAgeDto){
    public List<MgtMapTotalPlusVo> getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPlActivityAgeDto){
        List<Long> userIds = orderMapper.getPlUserIdAgeRank(mgtPlActivityAgeDto);
        MgtActivityAgeDto mgtActivityAgeDto = new MgtActivityAgeDto();
        mgtActivityAgeDto.setUserIds(userIds);
        mgtActivityAgeDto.setAgeType(mgtPlActivityAgeDto.getAgeType());
        userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData();
        mgtPlActivityAgeDto.setUserIds(userIds);
        MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
        return totalActivityTotalVo;
        List<MgtMapTotalPlusVo> ageRankList = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
        return ageRankList;
    }
    /**
     * @description  获取优惠券核销信息
     * @author  jqs
     * @date    2023/6/27 11:10
     * @param verifyCode
     * @return  MerVerifyCouponVo
     */
    @Override
    public MerVerifyCouponVo verifyCoupon(String verifyCode){
        MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
        MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(verifyCode).getData();
        return merVerifyCouponVo;
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -267,5 +267,14 @@
     * @param mgtPLActivityAgeDto
     * @return  MgtTotalActivityTotalVo
     */
    MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPLActivityAgeDto);
    List<MgtMapTotalPlusVo> getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPLActivityAgeDto);
    /**
     * @description  获取优惠券核销信息
     * @author  jqs
     * @date    2023/6/27 11:10
     * @param verifyCode
     * @return  MerVerifyCouponVo
     */
    MerVerifyCouponVo verifyCoupon(String verifyCode);
}
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -675,9 +675,9 @@
            AND shop_id = #{param.shopId}
        </if>
        GROUP BY
            order_date
        DATE_FORMAT(create_time, '%Y-%m-%d')
        ORDER BY
            order_date ASC
        DATE_FORMAT(create_time, '%Y-%m-%d') ASC
    </select>
    <select id="listTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
@@ -695,10 +695,10 @@
        GROUP BY tog.goods_type
    </select>
    <select id="listTotalOrderTotalGoodsRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
    <select id="listTotalOrderTotalGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo">
        SELECT
        tog.goods_name mapKey,
        IFNULL(SUM(tog.goods_total_money),0) mapValueSecond
        IFNULL(SUM(tog.goods_total_money),0) mapValue
        FROM t_order toc
        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
        WHERE toc.del_flag = 0
@@ -715,14 +715,14 @@
        ORDER BY SUM(tog.goods_total_money) DESC LIMIT 10
    </select>
    <select id="listTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
    <select id="listTotalOrderTotalOrderFrom" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo">
        SELECT
        CASE toc.order_from
        WHEN 1 THEN "商城订单"
        WHEN 2 THEN "秒杀活动订单"
        WHEN 3 THEN "线下创建订单"
        END mapKey,
        IFNULL(SUM(toc.order_money),0) mapValueSecond
        IFNULL(SUM(toc.order_money),0) mapValue
        FROM t_order toc
        WHERE toc.del_flag = 0
        <if test="param.shopId != null and param.shopId != ''">
@@ -785,9 +785,9 @@
            AND shop_id = #{param.shopId}
        </if>
        GROUP BY
        order_date
        DATE_FORMAT(create_time, '%Y-%m-%d')
        ORDER BY
        order_date ASC
        DATE_FORMAT(create_time, '%Y-%m-%d') ASC
    </select>
    <select id="getUserIdAgeRank" resultType="java.lang.Long">
@@ -806,7 +806,7 @@
    <select id="getTotalActivityAgeRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
        SELECT
        DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
        COUNT(DISTINCT toc.user_id) AS mapValueFirst
        COUNT(DISTINCT user_id) AS mapValueFirst
        FROM
        t_order
        WHERE
@@ -822,9 +822,9 @@
            </foreach>
        </if>
        GROUP BY
        order_date
        DATE_FORMAT(create_time, '%Y-%m-%d')
        ORDER BY
        order_date ASC
        DATE_FORMAT(create_time, '%Y-%m-%d') ASC
    </select>
    <select id="getTotalDataTotal" resultType="com.ruoyi.order.domain.vo.MgtTotalDataTotalVo">
@@ -857,6 +857,21 @@
                </if>
                 GROUP BY o.user_id
             ) AS user_goods_type_counts
    </select>
    <select id="shopSalesTotal" resultType="java.math.BigDecimal">
        SELECT IFNULL(SUM(pay_money),0)
        FROM t_order
        WHERE o.del_flag = 0
        <if test="param.shopId != null and param.shopId != ''">
            AND shop_id = #{param.shopId}
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND create_time &lt;= #{param.endDate}
        </if>
    </select>
    <select id="getReorderPerson" resultType="java.lang.Integer">
@@ -900,7 +915,7 @@
        FROM t_order toc
        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
        WHERE toc.del_flag = 0
        <if test="shopIdList != null and shopIdList != ''">
        <if test="param.shopIdList != null and param.shopIdList != ''">
            AND toc.shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
@@ -929,7 +944,7 @@
        SUM(CASE WHEN order_from = 2 THEN order_money ELSE 0 END) activityMoney
        FROM t_order WHERE del_flag = 0
        <if test="param.shopIdList != null and param.shopIdList != ''">
            AND toc.shop_id IN
            AND shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
@@ -978,15 +993,15 @@
        del_flag = 0
        AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
        <if test="param.shopIdList != null and param.shopIdList != ''">
            AND toc.shop_id IN
            AND shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        GROUP BY
        order_date
        DATE_FORMAT(create_time, '%Y-%m-%d')
        ORDER BY
        order_date ASC
        DATE_FORMAT(create_time, '%Y-%m-%d') ASC
    </select>
    <select id="listPlTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
@@ -1007,10 +1022,10 @@
        GROUP BY tog.goods_type
    </select>
    <select id="listPlTotalOrderTotalGoodsRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
    <select id="listPlTotalOrderTotalGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo">
        SELECT
        tog.goods_name mapKey,
        IFNULL(SUM(tog.goods_total_money),0) mapValueSecond
        IFNULL(SUM(tog.goods_total_money),0) mapValue
        FROM t_order toc
        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
        WHERE toc.del_flag = 0
@@ -1030,14 +1045,14 @@
        ORDER BY SUM(tog.goods_total_money) DESC LIMIT 10
    </select>
    <select id="listPlTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
    <select id="listPlTotalOrderTotalOrderFrom" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo">
        SELECT
        CASE toc.order_from
        WHEN 1 THEN "商城订单"
        WHEN 2 THEN "秒杀活动订单"
        WHEN 3 THEN "线下创建订单"
        END mapKey,
        IFNULL(SUM(toc.order_money),0) mapValueSecond
        IFNULL(SUM(toc.order_money),0) mapValue
        FROM t_order toc
        WHERE toc.del_flag = 0
        <if test="param.shopIdList != null and param.shopIdList != ''">
@@ -1097,7 +1112,7 @@
    <select id="listPlTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
        SELECT
        DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
        COUNT(DISTINCT toc.order_id) AS mapValueFirst,
        COUNT(DISTINCT order_id) AS mapValueFirst,
        IFNULL(SUM(toc.order_money),0) AS mapValueSecond,
        FROM t_order
        WHERE del_flag = 0 AND order_from = 2
@@ -1109,9 +1124,9 @@
            </foreach>
        </if>
        GROUP BY
        order_date
        DATE_FORMAT(create_time, '%Y-%m-%d')
        ORDER BY
        order_date ASC
        DATE_FORMAT(create_time, '%Y-%m-%d') ASC
    </select>
    <select id="getPlUserIdAgeRank" resultType="java.lang.Long">
@@ -1131,7 +1146,7 @@
    <select id="getPlTotalActivityAgeRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
        SELECT
        DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
        COUNT(DISTINCT toc.user_id) AS mapValueFirst
        COUNT(DISTINCT user_id) AS mapValueFirst
        FROM t_order
        WHERE del_flag = 0 AND order_from = 2
        AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
@@ -1147,8 +1162,10 @@
                #{item}
            </foreach>
        </if>
        GROUP BY rder_date
        ORDER BY order_date ASC
        GROUP BY
        DATE_FORMAT(create_time, '%Y-%m-%d')
        ORDER BY
        DATE_FORMAT(create_time, '%Y-%m-%d') ASC
    </select>
    <select id="listPlTotalShopActivityRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/ShopTotal.java
@@ -165,7 +165,7 @@
    /**
     * 总订单金额
     */
    @TableField("total_order_ money")
    @TableField("total_order_money")
    private BigDecimal totalOrderMoney;
    /**
     * 周期订单金额
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java
@@ -1,7 +1,10 @@
package com.ruoyi.shop.domain.vo;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @ClassName MgtTotalShopTotalVo
@@ -40,23 +43,14 @@
    @ApiModelProperty(value = "会员年龄value")
    private Integer[] ageValue;
    @ApiModelProperty(value = "合作商类型key")
    private String[] shopTypeKey;
    @ApiModelProperty(value = "合作商类型")
    private List<MgtMapTotalVo> shopTypeVos;
    @ApiModelProperty(value = "合作商类型value")
    private Integer[] shopTypeValue;
    @ApiModelProperty(value = "区域商户排行")
    private List<MgtMapTotalVo> areaRankVos;
    @ApiModelProperty(value = "区域商户排行key")
    private String[] areaRankKey;
    @ApiModelProperty(value = "区域商户排行value")
    private Integer[] areaRankValue;
    @ApiModelProperty(value = "合作商状态key")
    private String[] shopStatusKey;
    @ApiModelProperty(value = "合作商状态value")
    private Integer[] shopStatusValue;
    @ApiModelProperty(value = "合作商状态")
    private List<MgtMapTotalVo> shopStatusVos;
    @ApiModelProperty(value = "合作商营业额key")
    private String[] shopSalesRankKey;
@@ -64,9 +58,6 @@
    @ApiModelProperty(value = "合作商营业额value")
    private Integer[] shopSalesRankValue;
    @ApiModelProperty(value = "合作商推荐key")
    private String[] shopRecommendKey;
    @ApiModelProperty(value = "合作商推荐value")
    private Integer[] shopRecommendValue;
    @ApiModelProperty(value = "合作商推荐")
    private List<MgtMapTotalVo> shopRecommendVos;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
@@ -137,7 +137,7 @@
     * @param mgtBasePlatformDto
     * @return  List<Long>
     */
    List<Long> listShopIdByTotal(MgtBasePlatformDto mgtBasePlatformDto);
    List<Long> listShopIdByTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  获取统计关联shopId
@@ -146,7 +146,7 @@
     * @param mgtBasePlatformDto
     * @return  List<Long>
     */
    List<Long> listShopIdByPlTotal(MgtBasePlatformDto mgtBasePlatformDto);
    List<Long> listShopIdByPlTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  商户类型统计
@@ -155,7 +155,7 @@
     * @param
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> listShopTypeTotal(MgtBasePlatformDto mgtBasePlatformDto);
    List<MgtMapTotalVo> listShopTypeTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  商户类型统计
@@ -164,7 +164,7 @@
     * @param
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> listShopStatusTotal(MgtBasePlatformDto mgtBasePlatformDto);
    List<MgtMapTotalVo> listShopStatusTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  商户类型统计
@@ -173,7 +173,7 @@
     * @param
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> listShopAreaRank(MgtBasePlatformDto mgtBasePlatformDto);
    List<MgtMapTotalVo> listShopAreaRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  商户类型统计
@@ -182,7 +182,7 @@
     * @param
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> listShopSalesRank(MgtBasePlatformDto mgtBasePlatformDto);
    List<MgtMapTotalVo> listShopSalesRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  商户类型统计
@@ -191,5 +191,5 @@
     * @param
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> listShopRecommendRank(MgtBasePlatformDto mgtBasePlatformDto);
    List<MgtMapTotalVo> listShopRecommendRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -796,45 +796,20 @@
        //获取商户类型
        List<MgtMapTotalVo> shopTypeTotal = shopMapper.listShopTypeTotal(mgtBasePlatformDto);
        if (shopTypeTotal != null && shopTypeTotal.size() > 0) {
            String[] shopTypeKey = new String[shopTypeTotal.size()];
            Integer[] shopTypeValue = new Integer[shopTypeTotal.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopTypeTotal.size(); i++) {
                if (shopTypeTotal.get(i).getMapKey().equals("1")) {
                    shopTypeKey[i] = "经销商";
                } else if (shopTypeTotal.get(i).getMapKey().equals("2")) {
                    shopTypeKey[i] = "代理商";
                }
                shopTypeValue[i] = shopTypeTotal.get(i).getMapValue();
            }
            plTotalShopTotalVo.setShopTypeKey(shopTypeKey);
            plTotalShopTotalVo.setShopTypeValue(shopTypeValue);
            shopTypeTotal = listRemoveNull(shopTypeTotal);
            plTotalShopTotalVo.setShopTypeVos(shopTypeTotal);
        }
        //获取商户状态
        List<MgtMapTotalVo> shopStatusTotal = shopMapper.listShopStatusTotal(mgtBasePlatformDto);
        if (shopStatusTotal != null && shopStatusTotal.size() > 0) {
            String[] shopStatusKey = new String[shopStatusTotal.size()];
            Integer[] shopStatusValue = new Integer[shopStatusTotal.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopStatusTotal.size(); i++) {
                shopStatusKey[i] = shopStatusTotal.get(i).getMapKey();
                shopStatusValue[i] = shopStatusTotal.get(i).getMapValue();
            }
            plTotalShopTotalVo.setShopStatusKey(shopStatusKey);
            plTotalShopTotalVo.setShopStatusValue(shopStatusValue);
            shopStatusTotal = listRemoveNull(shopStatusTotal);
            plTotalShopTotalVo.setShopStatusVos(shopStatusTotal);
        }
        //获取区域排名
        List<MgtMapTotalVo> shopAreaRank = shopMapper.listShopAreaRank(mgtBasePlatformDto);
        if (shopAreaRank != null && shopAreaRank.size() > 0) {
            String[] shopRankKey = new String[shopAreaRank.size()];
            Integer[] shopRankValue = new Integer[shopAreaRank.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopAreaRank.size(); i++) {
                shopRankKey[i] = shopAreaRank.get(i).getMapKey();
                shopRankValue[i] = shopAreaRank.get(i).getMapValue();
            }
            plTotalShopTotalVo.setAreaRankKey(shopRankKey);
            plTotalShopTotalVo.setAreaRankValue(shopRankValue);
            shopAreaRank = listRemoveNull(shopAreaRank);
            plTotalShopTotalVo.setAreaRankVos(shopAreaRank);
        }
        //获取销售排名
        List<MgtMapTotalVo> shopSalesRank = shopMapper.listShopSalesRank(mgtBasePlatformDto);
@@ -852,20 +827,29 @@
        //获取推荐
        List<MgtMapTotalVo> shopRecommendRank = shopMapper.listShopRecommendRank(mgtBasePlatformDto);
        if (shopRecommendRank != null && shopRecommendRank.size() > 0) {
            String[] shopRecommendKey = new String[shopRecommendRank.size()];
            Integer[] shopRecommendValue = new Integer[shopRecommendRank.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopRecommendRank.size(); i++) {
                shopRecommendKey[i] = shopRecommendRank.get(i).getMapKey();
                shopRecommendValue[i] = shopRecommendRank.get(i).getMapValue();
            }
            plTotalShopTotalVo.setShopRecommendKey(shopRecommendKey);
            plTotalShopTotalVo.setShopRecommendValue(shopRecommendValue);
            shopRecommendRank = listRemoveNull(shopRecommendRank);
            plTotalShopTotalVo.setShopRecommendVos(shopRecommendRank);
        }
        return plTotalShopTotalVo;
    }
    /**
     * @description  去除空字符串
     * @author  jqs
     * @date    2023/6/27 17:35
     * @param mgtMapTotalVos
     * @return  List<MgtMapTotalVo>
     */
    private List<MgtMapTotalVo> listRemoveNull(List<MgtMapTotalVo> mgtMapTotalVos){
        for (int i = 0; i < mgtMapTotalVos.size(); i++) {
            if(StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())){
                mgtMapTotalVos.remove(i);
            }
        }
        return mgtMapTotalVos;
    }
    /**
     * @description 获取平台统计shopId
     * @param mgtBasePlatformDto
     * @return List<Long>
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -537,8 +537,8 @@
    <select id="shopTotal" resultType="com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo">
        SELECT
            COUNT(shop_id) AS shopTotal,
            SUM(CASE WHEN shopType = 1 THEN 1 ELSE 0 END) AS dealerTotal,
            SUM(CASE WHEN shopType = 2 THEN 1 ELSE 0 END) AS agencyTotal
            SUM(CASE WHEN shop_type = 1 THEN 1 ELSE 0 END) AS dealerTotal,
            SUM(CASE WHEN shop_type = 2 THEN 1 ELSE 0 END) AS agencyTotal
        FROM t_shop
        WHERE del_flag = 0
    </select>
@@ -546,8 +546,8 @@
    <select id="getPlTotalShopTotal" resultType="com.ruoyi.shop.domain.vo.MgtPlTotalShopTotalVo">
        SELECT
            COUNT(shop_id) AS shopTotal,
            SUM(CASE WHEN shopType = 1 THEN 1 ELSE 0 END) AS dealerTotal,
            SUM(CASE WHEN shopType = 2 THEN 1 ELSE 0 END) AS agencyTotal,
            SUM(CASE WHEN shop_type = 1 THEN 1 ELSE 0 END) AS dealerTotal,
            SUM(CASE WHEN shop_type = 2 THEN 1 ELSE 0 END) AS agencyTotal,
            SUM(CASE WHEN cooperative_flag = 0 THEN 1 ELSE 0 END) AS terminateTotal
        FROM t_shop
        WHERE del_flag = 0
@@ -700,7 +700,7 @@
        ts.shop_name mapKey,
        tst.total_order_money mapValue
        FROM t_shop ts
        INNER JOIN t_shopp_total tst ON ts.shop_id = tst.shop_id
        INNER JOIN t_shop_total tst ON ts.shop_id = tst.shop_id
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
            AND ts.belong_user_id IN
@@ -723,7 +723,7 @@
        <if test="param.endDate!=null and param.endDate!=''">
            AND ts.create_time &lt;= #{param.endDate}
        </if>
        ORDER BY tst.total_order_money DESC LMIMIT 15
        ORDER BY tst.total_order_money DESC LIMIT 15
    </select>
    <select id="listShopRecommendRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
@@ -63,9 +63,9 @@
        SysUser sysUser = sysUserService.selectUserById(userId);
        String dataScope = sysUser.getDataScope();
        List<MgtDeptStaffListVo> deptStaffListVoList;
        if(dataScope.equals("4")){
        if(dataScope!=null&&dataScope.equals("4")){
            deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),null);
        }else if(dataScope.equals("5")){
        }else if(dataScope!=null&&dataScope.equals("5")){
            deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),sysUser.getUserId());
        }else{
            deptStaffListVoList = sysStaffMapper.listMgtDeptStaff();