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
@@ -46,11 +46,6 @@ 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); 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 >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND create_time <= #{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
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 <= #{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();