jiangqs
2023-06-28 efe79e640c4598f52c2d1032fcead000edf8049e
统计bug和验证优化
19个文件已修改
336 ■■■■■ 已修改文件
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityEditDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsEditDto.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtEditShopDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java
@@ -16,6 +16,7 @@
import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -43,7 +44,7 @@
    @RequestMapping(value = "/editMgtActivity", method = RequestMethod.POST)
    @Log(title = "活动管理", businessType = BusinessType.UPDATE,operContent = "编辑活动")
    @ApiOperation(value = "平台编辑活动")
    public R editMgtActivity(@RequestBody MgtActivityEditDto mgtActivityEditDto) {
    public R editMgtActivity(@Validated  @RequestBody MgtActivityEditDto mgtActivityEditDto) {
        Long userId = SecurityUtils.getUserId();
        mgtActivityEditDto.setUserId(userId);
        activityService.editMgtActivity(mgtActivityEditDto);
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java
@@ -15,6 +15,7 @@
import com.ruoyi.system.api.domain.vo.MgtSelectGoodsPageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -73,7 +74,7 @@
    @RequestMapping(value = "/editMgtGoods", method = RequestMethod.POST)
    @Log(title = "商品管理", businessType = BusinessType.UPDATE,operContent = "编辑商品")
    @ApiOperation(value = "平台编辑商品")
    public R editMgtGoods(@RequestBody MgtGoodsEditDto mgtGoodsEditDto) {
    public R editMgtGoods(@Validated @RequestBody MgtGoodsEditDto mgtGoodsEditDto) {
        Long userId = SecurityUtils.getUserId();
        mgtGoodsEditDto.setUserId(userId);
        goodsService.editMgtGoods(mgtGoodsEditDto);
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityEditDto.java
@@ -4,6 +4,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
@@ -22,6 +23,7 @@
    private String activityId;
    @ApiModelProperty(value = "活动名称")
    @NotNull(message = "活动名称不能为空")
    private String activityName;
    @ApiModelProperty(value = "活动开始时间")
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsEditDto.java
@@ -4,6 +4,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
@@ -20,18 +21,23 @@
    private String goodsId;
    @ApiModelProperty(value = "商品状态1上架2下架")
    @NotNull(message = "商品状态不能为空")
    private Integer goodsStatus;
    @ApiModelProperty(value = "商品类型1周期2服务3体验4单品")
    @NotNull(message = "商品类型不能为空")
    private Integer goodsType;
    @ApiModelProperty(value = "商品分类id")
    @NotNull(message = "商品分类id不能为空")
    private Long goodsClassId;
    @ApiModelProperty(value = "商品名称")
    @NotNull(message = "商品名称不能为空")
    private String goodsName;
    @ApiModelProperty(value = "商品图片")
    @NotNull(message = "商品图片不能为空")
    private String goodsPicture;
    @ApiModelProperty(value = "商品视频")
@@ -50,9 +56,11 @@
    private String goodsIntroduction;
    @ApiModelProperty(value = "建议售价")
    @NotNull(message = "建议售价不能为空")
    private BigDecimal salesPrice;
    @ApiModelProperty(value = "最低售价")
    @NotNull(message = "最低售价不能为空")
    private BigDecimal mininumPrice;
    @ApiModelProperty(value = "订金")
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java
@@ -1,7 +1,10 @@
package com.ruoyi.member.domain.vo;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @ClassName MgtTotalMemberTotalVo
@@ -46,33 +49,18 @@
    @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 = "活跃度value")
    private Integer[] activenessValue;
    @ApiModelProperty(value = "消费排行key")
    private String[] orderRankKey;
    @ApiModelProperty(value = "消费排行value")
    private Integer[] orderRankValue;
    @ApiModelProperty(value = "来源排行key")
    private String[] customerSourceKey;
    @ApiModelProperty(value = "来源排行value")
    private Integer[] customerSourceValue;
    @ApiModelProperty(value = "消费排行")
    private List<MgtMapTotalVo> memberPayList;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -981,75 +981,48 @@
        // 获取不同护理类型的会员数
        List<MgtMapTotalVo> nurseTotalVos = memberMapper.getTotalMemberTotalNurse(mgtBaseShopDto);
        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();
            }
            mgtTotalMemberTotalVo.setNurseKey(nurseKey);
            mgtTotalMemberTotalVo.setNurseValue(nurseValue);
            nurseTotalVos = listRemoveNull(nurseTotalVos);
            mgtTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos);
        }
        // 获取不同商品类型的会员数
        List<MgtMapTotalVo> goodsTypeTotalVos = memberMapper.getTotalMemberTotalGoodsType(mgtBaseShopDto);
        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();
            }
            mgtTotalMemberTotalVo.setGoodsTypeKey(goodsTypeKey);
            mgtTotalMemberTotalVo.setGoodsTypeValue(goodsTypeValue);
            goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos);
            mgtTotalMemberTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
        }
        // 获取不同活跃度的会员数
        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.getTotalMemberTotalActiveness(shopId, actStartDate, actEndDate);
                activenessKey[i] = activeness.getActivenessName();
                activenessValue[i] = count;
                mgtMapTotalVo = new MgtMapTotalVo();
                mgtMapTotalVo.setMapKey(activeness.getActivenessName());
                mgtMapTotalVo.setMapValue(count);
                mgtMapTotalVoList.add(mgtMapTotalVo);
            }
            mgtTotalMemberTotalVo.setActivenessKey(activenessKey);
            mgtTotalMemberTotalVo.setActivenessValue(activenessValue);
            mgtTotalMemberTotalVo.setActivenessList(mgtMapTotalVoList);
        }
        //获取会员消费排名
        List<MgtMapTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto);
        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();
            }
            mgtTotalMemberTotalVo.setOrderRankKey(memberPayKey);
            mgtTotalMemberTotalVo.setOrderRankValue(memberPayValue);
            memberPayList = listRemoveNull(memberPayList);
            mgtTotalMemberTotalVo.setMemberPayList(memberPayList);
        }
        //获取来源渠道排名
        List<MgtMapTotalVo> customerSourceList = memberMapper.getTotalMemberRankCustomerSource(mgtBaseShopDto);
        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();
            }
            mgtTotalMemberTotalVo.setCustomerSourceKey(customerSourceKey);
            mgtTotalMemberTotalVo.setCustomerSourceValue(customerSourceValue);
            customerSourceList = listRemoveNull(customerSourceList);
            mgtTotalMemberTotalVo.setCustomerSourceList(customerSourceList);
        }
        // 返回总会员数和不同类型会员数的统计结果
        return mgtTotalMemberTotalVo;
@@ -1143,6 +1116,7 @@
                    mgtMapTotalVo = new MgtMapTotalVo();
                    mgtMapTotalVo.setMapKey(activeness.getActivenessName());
                    mgtMapTotalVo.setMapValue(count);
                    mgtMapTotalVoList.add(mgtMapTotalVo);
                }
            }
            plTotalMemberTotalVo.setActivenessList(mgtMapTotalVoList);
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
@@ -98,10 +98,10 @@
    @RequestMapping(value = "/getPlTotalActivityAgeRank", method = RequestMethod.POST)
    @ApiOperation(value = "获取平台商户活动年龄分布")
    public R<List<MgtMapTotalPlusVo>> getPlTotalActivityAgeRank(@RequestBody MgtPlActivityAgeDto mgtPlActivityAgeDto) {
    public R<MgtPlTotalActivityTotalVo> getPlTotalActivityAgeRank(@RequestBody MgtPlActivityAgeDto mgtPlActivityAgeDto) {
        Long userId = SecurityUtils.getUserId();
        mgtPlActivityAgeDto.setUserId(userId);
        List<MgtMapTotalPlusVo> ageRankList = orderService.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
        return R.ok(ageRankList);
        MgtPlTotalActivityTotalVo plTotalActivityTotalVo = orderService.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
        return R.ok(plTotalActivityTotalVo);
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
@@ -78,4 +78,10 @@
    @ApiModelProperty(value = "活动次数排行")
    private List<MgtMapBigTotalVo> activitySalesRankList;
    @ApiModelProperty(value = "活动年龄分布key")
    private String[] activityAgeKey;
    @ApiModelProperty(value = "活动年龄分布value")
    private Integer[] activityAgeValue;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.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;
/**
 * @ClassName MgtTotalActivityTotalVo
@@ -60,13 +63,15 @@
    @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 = "活动年龄分布key")
    private String[] activityAgeKey;
    @ApiModelProperty(value = "活动年龄分布value")
    private Integer[] activityAgeValue;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -246,7 +246,7 @@
     * @param mgtActivityAgeDto
     * @return  MgtTotalActivityTotalVo
     */
    MgtTotalActivityTotalVo getTotalActivityAgeRank(@Param("param")MgtActivityAgeDto mgtActivityAgeDto);
    List<MgtMapTotalVo> getTotalActivityAgeRank(@Param("param")MgtActivityAgeDto mgtActivityAgeDto);
    /**
     * @description
@@ -385,7 +385,7 @@
     * @param mgtActivityAgeDto
     * @return  MgtTotalActivityTotalVo
     */
    List<MgtMapTotalPlusVo> getPlTotalActivityAgeRank(@Param("param")MgtPlActivityAgeDto mgtActivityAgeDto);
    List<MgtMapTotalVo> getPlTotalActivityAgeRank(@Param("param")MgtPlActivityAgeDto mgtActivityAgeDto);
    /**
     * @description listPlTotalShopActivityRank
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -1072,11 +1072,11 @@
    }
    /**
     * @param mgtShopOrderPageDto
     * @return MgtMemberOrderTotalVo
     * @description  获取订单统计
     * @author  jqs
     * @date    2023/6/16 12:51
     * @param mgtShopOrderPageDto
     * @return  MgtMemberOrderTotalVo
     */
    @Override
    public MgtOrderTotal getMgtOrderTotal(MgtShopOrderPageDto mgtShopOrderPageDto){
@@ -1118,12 +1118,12 @@
    }
    /**
     * @description  分页获取门店订单列表
     * @author  jqs
     * @date    2023/6/16 14:57
     * @param page
     * @param mgtShopOrderPageDto
     * @return  List<MgtShopOrderPageVo>
     * @description 分页获取门店订单列表
     * @author jqs
     * @date 2023/6/16 14:57
     */
    @Override
    public List<MgtShopOrderPageVo> pageMgtShopOrder(Page page, MgtShopOrderPageDto mgtShopOrderPageDto){
@@ -1197,11 +1197,11 @@
    /**
     * @param orderId
     * @return MgtOrderDetailVo
     * @description  获取订单详情
     * @author  jqs
     * @date    2023/6/16 16:49
     * @param orderId
     * @return  MgtOrderDetailVo
     */
    @Override
    public MgtOrderDetailVo getMgtOrderDetail(String orderId){
@@ -1278,9 +1278,9 @@
    }
    /**
     * @description boardOrderTotal
     * @param
     * @return MgtBulletinBoardVo
     * @description boardOrderTotal
     * @author jqs34
     * @date 2023/6/18 17:20
     */
@@ -1291,9 +1291,9 @@
    }
    /**
     * @description getTotalOrderTotal
     * @param mgtBaseShopDto
     * @return MgtTotalOrderTotalVo
     * @description getTotalOrderTotal
     * @author jqs34
     * @date 2023/6/19 22:23
     */
@@ -1347,6 +1347,8 @@
                    mgtMapTotalVo.setMapKey("单品");
                    mgtMapBigTotalVo.setMapKey("单品");
                }
                goodsTypeTotalList.add(mgtMapTotalVo);
                goodsTypeMoneyList.add(mgtMapBigTotalVo);
            }
            mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
            mgtTotalOrderTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
@@ -1367,11 +1369,11 @@
    }
    /**
     * @param mgtMapTotalVos
     * @return List<MgtMapTotalVo>
     * @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++) {
@@ -1383,11 +1385,11 @@
    }
    /**
     * @param mgtMapTotalVos
     * @return List<MgtMapTotalVo>
     * @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++) {
@@ -1399,11 +1401,11 @@
    }
    /**
     * @param mgtBaseShopDto
     * @return MgtTotalActivityTotalVo
     * @description
     * @author  jqs
     * @date    2023/6/20 9:27
     * @param mgtBaseShopDto
     * @return  MgtTotalActivityTotalVo
     */
    @Override
    public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto){
@@ -1412,35 +1414,47 @@
        //获取商品分类销售数据
        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto);
        if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
            String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()];
            Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()];
            BigDecimal[] goodsTypeMoneyValue = new BigDecimal[mgtMapTotalVoGoodsType.size()];
            List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>();
            List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
            totalActivityTotalVo.setCycleTotal(0);
            totalActivityTotalVo.setCycleMoney(BigDecimal.ZERO);
            totalActivityTotalVo.setServiceTotal(0);
            totalActivityTotalVo.setServiceMoney(BigDecimal.ZERO);
            totalActivityTotalVo.setExperienceTotal(0);
            totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO);
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            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] = "周期";
                    totalActivityTotalVo.setCycleTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    totalActivityTotalVo.setCycleMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                    totalActivityTotalVo.setCyclePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird());
                    mgtMapTotalVo.setMapKey("周期");
                    mgtMapBigTotalVo.setMapKey("周期");
                    totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")){
                    goodsTypeKey[i] = "服务";
                    totalActivityTotalVo.setServiceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    totalActivityTotalVo.setServiceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                    totalActivityTotalVo.setServicePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird());
                    mgtMapTotalVo.setMapKey("服务");
                    mgtMapBigTotalVo.setMapKey("服务");
                    totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")){
                    goodsTypeKey[i] = "体验";
                    totalActivityTotalVo.setExperienceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    totalActivityTotalVo.setExperienceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
                    totalActivityTotalVo.setExperiencePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird());
                    mgtMapTotalVo.setMapKey("体验");
                    mgtMapBigTotalVo.setMapKey("体验");
                    totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
                    totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")){
                    goodsTypeKey[i] = "单品";
                    mgtMapTotalVo.setMapKey("单品");
                    mgtMapBigTotalVo.setMapKey("单品");
                }
                goodsTypeTotalList.add(mgtMapTotalVo);
                goodsTypeMoneyList.add(mgtMapBigTotalVo);
            }
            totalActivityTotalVo.setGoodsTypeKey(goodsTypeKey);
            totalActivityTotalVo.setGoodsTypeTotalValue(goodsTypeTotalValue);
            totalActivityTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue);
            totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
            totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
        }
        //获取订单分布
        List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto);
@@ -1461,11 +1475,11 @@
    }
    /**
     * @param mgtActivityAgeDto
     * @return MgtTotalActivityTotalVo
     * @description
     * @author  jqs
     * @date    2023/6/20 9:56
     * @param mgtActivityAgeDto
     * @return  MgtTotalActivityTotalVo
     */
    @Override
    public MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto){
@@ -1473,16 +1487,30 @@
        mgtActivityAgeDto.setUserIds(userIds);
        userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData();
        mgtActivityAgeDto.setUserIds(userIds);
        MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityAgeRank(mgtActivityAgeDto);
        List<MgtMapTotalVo> ageRankList = orderMapper.getTotalActivityAgeRank(mgtActivityAgeDto);
        ageRankList = listRemoveNull(ageRankList);
        MgtTotalActivityTotalVo totalActivityTotalVo = new MgtTotalActivityTotalVo();
        String[] activityAgeKey = new String[ageRankList.size()];
        Integer[] activityAgeValue = new Integer[ageRankList.size()];
        if (!ageRankList.isEmpty()) {
            MgtMapTotalVo mgtMapTotalVo;
            for (int i = 0; i < ageRankList.size(); i++) {
                mgtMapTotalVo = ageRankList.get(i);
                activityAgeKey[i] = mgtMapTotalVo.getMapKey();
                activityAgeValue[i] = mgtMapTotalVo.getMapValue();
            }
        }
        totalActivityTotalVo.setActivityAgeKey(activityAgeKey);
        totalActivityTotalVo.setActivityAgeValue(activityAgeValue);
        return totalActivityTotalVo;
    }
    /**
     * @param mgtBaseShopDto
     * @return MgtTotalDataTotalVo
     * @description
     * @author  jqs
     * @date    2023/6/20 15:31
     * @param mgtBaseShopDto
     * @return  MgtTotalDataTotalVo
     */
    @Override
    public MgtTotalDataTotalVo getTotalDataTotal(MgtBaseShopDto mgtBaseShopDto){
@@ -1498,11 +1526,11 @@
    }
    /**
     * @param mgtBasePlatformDto
     * @return List<MgtMapTotalVo>
     * @description
     * @author  jqs
     * @date    2023/6/21 15:26
     * @param mgtBasePlatformDto
     * @return  List<MgtMapTotalVo>
     */
    @Override
    public List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto){
@@ -1510,9 +1538,9 @@
    }
    /**
     * @description 获取平台商户数据统计
     * @param mgtBasePlatformDto
     * @return List<MgtTotalDataTotalVo>
     * @description 获取平台商户数据统计
     * @author jqs34
     * @date 2023/6/23 14:01
     */
@@ -1553,9 +1581,9 @@
    }
    /**
     * @description 获取平台商户订单统计
     * @param mgtBasePlatformDto
     * @return MgtTotalOrderTotalVo
     * @description 获取平台商户订单统计
     * @author jqs34
     * @date 2023/6/19 22:23
     */
@@ -1632,6 +1660,8 @@
                    mgtMapTotalVo.setMapKey("单品");
                    mgtMapBigTotalVo.setMapKey("单品");
                }
                goodsTypeTotalList.add(mgtMapTotalVo);
                goodsTypeMoneyList.add(mgtMapBigTotalVo);
            }
            mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
            mgtTotalOrderTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
@@ -1652,11 +1682,11 @@
    }
    /**
     * @param mgtBasePlatformDto
     * @return MgtTotalActivityTotalVo
     * @description
     * @author  jqs
     * @date    2023/6/20 9:27
     * @param mgtBasePlatformDto
     * @return  MgtTotalActivityTotalVo
     */
    @Override
    public MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto){
@@ -1772,30 +1802,44 @@
    }
    /**
     * @param mgtPlActivityAgeDto
     * @return MgtTotalActivityTotalVo
     * @description
     * @author  jqs
     * @date    2023/6/20 9:56
     * @param mgtPlActivityAgeDto
     * @return  MgtTotalActivityTotalVo
     */
    @Override
    public List<MgtMapTotalPlusVo> getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPlActivityAgeDto){
    public MgtPlTotalActivityTotalVo 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);
        List<MgtMapTotalPlusVo> ageRankList = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
        return ageRankList;
        List<MgtMapTotalVo> ageRankList = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
        ageRankList = listRemoveNull(ageRankList);
        MgtPlTotalActivityTotalVo plTotalActivityTotalVo = new MgtPlTotalActivityTotalVo();
        String[] activityAgeKey = new String[ageRankList.size()];
        Integer[] activityAgeValue = new Integer[ageRankList.size()];
        if (!ageRankList.isEmpty()) {
            MgtMapTotalVo mgtMapTotalVo;
            for (int i = 0; i < ageRankList.size(); i++) {
                mgtMapTotalVo = ageRankList.get(i);
                activityAgeKey[i] = mgtMapTotalVo.getMapKey();
                activityAgeValue[i] = mgtMapTotalVo.getMapValue();
            }
        }
        plTotalActivityTotalVo.setActivityAgeKey(activityAgeKey);
        plTotalActivityTotalVo.setActivityAgeValue(activityAgeValue);
        return plTotalActivityTotalVo;
    }
    /**
     * @param verifyCode
     * @return MerVerifyCouponVo
     * @description  获取优惠券核销信息
     * @author  jqs
     * @date    2023/6/27 11:10
     * @param verifyCode
     * @return  MerVerifyCouponVo
     */
    @Override
    public MerVerifyCouponVo verifyCoupon(String verifyCode){
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -267,7 +267,7 @@
     * @param mgtPLActivityAgeDto
     * @return  MgtTotalActivityTotalVo
     */
    List<MgtMapTotalPlusVo> getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPLActivityAgeDto);
    MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPLActivityAgeDto);
    /**
     * @description  获取优惠券核销信息
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -803,10 +803,10 @@
        </if>
    </select>
    <select id="getTotalActivityAgeRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
    <select id="getTotalActivityAgeRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
        COUNT(DISTINCT user_id) AS mapValueFirst
        COUNT(DISTINCT user_id) AS mapValue
        FROM
        t_order
        WHERE
@@ -1143,10 +1143,10 @@
        </if>
    </select>
    <select id="getPlTotalActivityAgeRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
    <select id="getPlTotalActivityAgeRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
        COUNT(DISTINCT user_id) AS mapValueFirst
        COUNT(DISTINCT user_id) AS mapValue
        FROM t_order
        WHERE del_flag = 0 AND order_from = 2
        AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
@@ -13,6 +13,7 @@
import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -80,7 +81,7 @@
    @RequestMapping(value = "/createMgtShop", method = RequestMethod.POST)
    @Log(title = "商户管理", businessType = BusinessType.UPDATE,operContent = "编辑商户")
    @ApiOperation(value = "平台编辑商户")
    public R createMgtShop(@RequestBody MgtEditShopDto mgtEditShopDto) {
    public R createMgtShop(@Validated @RequestBody MgtEditShopDto mgtEditShopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtEditShopDto.setUserId(userId);
        shopService.createShop(mgtEditShopDto);
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtEditShopDto.java
@@ -5,6 +5,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
 * @author jqs34
 * @ClassName ManageCreateShopDto
@@ -20,9 +22,11 @@
    private Long shopId;
    @ApiModelProperty("商户名称")
    @NotNull(message = "商户名称不能为空")
    private String shopName;
    @ApiModelProperty("商户类型1.经销商2.代理商")
    @NotNull(message = "商户类型不能为空")
    private Integer shopType;
    @ApiModelProperty("营业开始时间")
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
@@ -15,6 +15,7 @@
import com.ruoyi.system.service.config.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -249,7 +250,7 @@
    @RequestMapping(value = "/editOtherConfig", method = RequestMethod.POST)
    @Log(title = "其它设置管理", businessType = BusinessType.UPDATE,operContent = "修改其它设置")
    @ApiOperation(value = "修改其它设置")
    public R editOtherConfig(@RequestBody MgtOtherConfigEditDto mgtOtherConfigEditDto) {
    public R editOtherConfig(@Validated @RequestBody MgtOtherConfigEditDto mgtOtherConfigEditDto) {
        customConfigService.editOtherConfig(mgtOtherConfigEditDto);
        return R.ok();
    }
@@ -257,7 +258,7 @@
    @RequestMapping(value = "/editShopConfig", method = RequestMethod.POST)
    @Log(title = "其它设置管理", businessType = BusinessType.UPDATE,operContent = "修改合作商配置")
    @ApiOperation(value = "修改合作商配置")
    public R editShopConfig(@RequestBody MgtShopConfigEditDto mgtShopConfigEditDto) {
    public R editShopConfig(@Validated @RequestBody MgtShopConfigEditDto mgtShopConfigEditDto) {
        customConfigService.editShopConfig(mgtShopConfigEditDto);
        return R.ok();
    }
@@ -265,7 +266,7 @@
    @RequestMapping(value = "/editMemberConfig", method = RequestMethod.POST)
    @Log(title = "其它设置管理", businessType = BusinessType.UPDATE,operContent = "修改会员配置")
    @ApiOperation(value = "修改会员配置")
    public R editMemberConfig(@RequestBody MgtMemberConfigEditDto mgtMemberConfigEditDto) {
    public R editMemberConfig(@Validated @RequestBody MgtMemberConfigEditDto mgtMemberConfigEditDto) {
        customConfigService.editMemberConfig(mgtMemberConfigEditDto);
        return R.ok();
    }
@@ -273,7 +274,7 @@
    @RequestMapping(value = "/editAdvert", method = RequestMethod.POST)
    @Log(title = "其它设置管理", businessType = BusinessType.UPDATE,operContent = "修改广告配置")
    @ApiOperation(value = "修改广告配置")
    public R editAdvert(@RequestBody MgtAdvertEditDto mgtAdvertEditDto) {
    public R editAdvert(@Validated @RequestBody MgtAdvertEditDto mgtAdvertEditDto) {
        mgtAdvertEditDto.setUserId(SecurityUtils.getUserId());
        advertService.editMgtAdvert(mgtAdvertEditDto);
        return R.ok();
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java
@@ -16,6 +16,7 @@
import com.ruoyi.system.service.staff.SysStaffService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -128,7 +129,7 @@
    @RequestMapping(value = "/mgtEditStaff", method = RequestMethod.POST)
    @Log(title = "员工管理", businessType = BusinessType.UPDATE,operContent = "编辑员工")
    @ApiOperation(value = "平台编辑员工")
    public R mgtEditStaff(@RequestBody MgtStaffEditDto mgtStaffEditDto) {
    public R mgtEditStaff(@Validated  @RequestBody MgtStaffEditDto mgtStaffEditDto) {
        Long userId = SecurityUtils.getUserId();
        mgtStaffEditDto.setUserId(userId);
        sysStaffService.mgtStaffEdit(mgtStaffEditDto);
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java
@@ -4,6 +4,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
 * @author jqs34
 * @version 1.0
@@ -16,6 +18,7 @@
        @ApiModelProperty(value = "部门id")
        @NotNull(message = "部门id不能为空")
        private Long deptId;
        /**
         * 用户id
@@ -26,11 +29,13 @@
         * 员工姓名
         */
        @ApiModelProperty(value = "员工姓名")
        @NotNull(message = "员工姓名不能为空")
        private String staffName;
        /**
         * 员工电话
         */
        @ApiModelProperty(value = "员工电话")
        @NotNull(message = "员工电话不能为空")
        private String staffMobile;
        /**
         * 员工邮箱
@@ -51,6 +56,7 @@
         * 负责人标记
         */
        @ApiModelProperty(value = "负责人标记")
        @NotNull(message = "负责人标记不能为空")
        private String headFlag;
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.constant.AppErrorConstant;
@@ -104,6 +105,9 @@
        queryWrapper.eq(SysStaff::getDelFlag,0);
        queryWrapper.eq(SysStaff::getStaffMobile,mgtStaffEditDto.getStaffMobile());
        SysStaff sysStaffSame = this.getOne(queryWrapper, false);
        if(StringUtils.isBlank(mgtStaffEditDto.getStaffAvatar())){
            mgtStaffEditDto.setStaffAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
        }
        if(mgtStaffEditDto.getSysUserId()!=null){
            if(sysStaffSame!=null&&!sysStaffSame.getUserId().equals(mgtStaffEditDto.getSysUserId())){
                throw new ServiceException(AppErrorConstant.STAFF_MOBILE_DOUBLE);