ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBasePlatformDto.java
New file @@ -0,0 +1,50 @@ package com.ruoyi.system.api.domain.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @ClassName MgtBasePlatformDto * @Description TODO * @Author jqs * @Date 2023/6/21 10:02 * @Version 1.0 */ @Data public class MgtBasePlatformDto extends MgtBaseDateDto{ @ApiModelProperty(value = "商户id") private Long shopId; @ApiModelProperty(value = "商户id集合",hidden = true) private List<Long> shopIdList; @ApiModelProperty("店铺地址省code") private String shopProvinceCode; @ApiModelProperty("店铺地址市code") private String shopCityCode; @ApiModelProperty("店铺地址区code") private String shopAreaCode; @ApiModelProperty("部门id") private Long deptId; @ApiModelProperty("员工id") private Long userId; @ApiModelProperty(value = "员工list",hidden = true) private List<Long> userIdList; @ApiModelProperty("活动来源1平台2商户") private Integer activityFrom; @ApiModelProperty("活动类型1秒杀") private Integer activityType; @ApiModelProperty("活动id") private Long activityId; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtShopIdByCodeDto.java
@@ -3,6 +3,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @ClassName MgtShopIdByCodeDto * @Description TODO @@ -24,4 +26,6 @@ @ApiModelProperty(value = "店铺名称") private String shopName; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtUserIdByDept.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.system.api.domain.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @ClassName MgtUserIdByDept * @Description TODO * @Author jqs * @Date 2023/6/21 16:00 * @Version 1.0 */ @Data public class MgtUserIdByDept { @ApiModelProperty(value = "部门id") private Long deptId; @ApiModelProperty(value = "员工id") private Long userId; @ApiModelProperty(value = "员工list") private List<Long> userIdList; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/Member.java
@@ -1,17 +1,15 @@ package com.ruoyi.system.api.domain.poji.member; import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; /** * <p> @@ -142,6 +140,12 @@ private Integer bindingFlag; /** * 绑定时间 */ @TableField("binding_time") private Date bindingTime; /** * 商品类型 */ @TableField("goods_type") ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java
File was renamed from ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMapTotalVo.java @@ -1,4 +1,4 @@ package com.ruoyi.member.domain.vo; package com.ruoyi.system.api.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java
New file @@ -0,0 +1,80 @@ package com.ruoyi.system.api.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @ClassName MgtPlTotalMemberTotalVo * @Description TODO * @Author jqs * @Date 2023/6/21 10:34 * @Version 1.0 */ @Data public class MgtPlTotalMemberTotalVo { @ApiModelProperty(value = "总会员") private Integer memberTotal; @ApiModelProperty(value = "昨日新增") private Integer memberYesterday; @ApiModelProperty(value = "七日新增") private Integer memberSeven; @ApiModelProperty(value = "男人") private Integer manTotal; @ApiModelProperty(value = "女人") private Integer womenTotal; @ApiModelProperty(value = "会员年龄key") private String[] ageKey; @ApiModelProperty(value = "会员年龄value") private Integer[] ageValue; @ApiModelProperty(value = "会员调理key") private String[] nurseKey; @ApiModelProperty(value = "会员调理value") private Integer[] nurseValue; @ApiModelProperty(value = "商品类型key") private String[] goodsTypeKey; @ApiModelProperty(value = "商品类型value") private Integer[] goodsTypeValue; @ApiModelProperty(value = "活跃度key") private String[] activenessKey; @ApiModelProperty(value = "活跃度value") private Integer[] activenessValue; @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; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtShopTotalMemberVo.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.system.api.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @ClassName MgtShopTotalMemberVO * @Description TODO * @Author jqs * @Date 2023/6/21 17:16 * @Version 1.0 */ @Data public class MgtShopTotalMemberVo { @ApiModelProperty(value = "男人") private Integer manTotal; @ApiModelProperty(value = "女人") private Integer womenTotal; @ApiModelProperty(value = "会员年龄key") private String[] ageKey; @ApiModelProperty(value = "会员年龄value") private Integer[] ageValue; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
@@ -1,6 +1,7 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.MgtUserIdByDept; import com.ruoyi.system.api.domain.poji.config.Activeness; import com.ruoyi.system.api.domain.poji.config.SysClassification; import com.ruoyi.system.api.service.RemoteConfigService; @@ -35,6 +36,11 @@ } @Override public R<MgtUserIdByDept> getUserIdByDept(MgtUserIdByDept userIdByDept) { return R.fail("获取部门用户失败:" + throwable.getMessage()); } @Override public R<List<SysTag>> listSysTag(Integer tagType) { return R.fail("获取标签失败:" + throwable.getMessage()); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
@@ -101,6 +101,16 @@ public R<List<Long>> listUserIdByAge(MgtActivityAgeDto mgtActivityAgeDto) { return R.fail("筛选userId年龄段失败:" + throwable.getMessage()); } @Override public R<List<Long>> listUserIdByShopId(List<Long> shopIdlist) { return R.fail("通过shopId获取userId失败:" + throwable.getMessage()); } @Override public R<MgtShopTotalMemberVo> getUserTotalByShopId(List<Long> shopIdlist) { return R.fail("通过shopId获取user统计失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java
@@ -1,7 +1,9 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import com.ruoyi.system.api.service.RemoteOrderService; import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; @@ -9,6 +11,8 @@ import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import java.util.List; /** * 订单服务 @@ -41,6 +45,11 @@ public R<MgtBulletinBoardVo> boardOrderTotal() { return null; } @Override public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) { return R.fail("获取商户端统计失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
@@ -1,15 +1,14 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.AppEditUserDto; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.model.*; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.service.RemoteUserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.service.RemoteUserService; import com.ruoyi.system.api.domain.poji.sys.SysUser; /** * 用户服务 @@ -67,10 +66,6 @@ return R.fail("更新用户信息失败:" + throwable.getMessage()); } @Override public R<SysTag> getSysTag(Long sysTagId) { return R.fail("获取系统标签失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java
@@ -41,6 +41,6 @@ * @author jqs34 * @date 2023/6/18 17:30 */ @PostMapping("/boardActivityTotal") @PostMapping("/activity/boardActivityTotal") public R<MgtBulletinBoardVo> boardActivityTotal(); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
@@ -2,6 +2,7 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.MgtUserIdByDept; import com.ruoyi.system.api.domain.poji.config.Activeness; import com.ruoyi.system.api.domain.poji.config.SysClassification; import com.ruoyi.system.api.domain.poji.config.SysTag; @@ -23,8 +24,6 @@ @FeignClient(contextId = "remoteConfigService", value = ServiceNameConstants.SYSTEM_SERVICE,fallbackFactory = RemoteConfigFallbackFactory.class) public interface RemoteConfigService { @PostMapping("/config/getSysTag") public R<SysTag> getSysTag(@RequestBody Long sysTagId); @PostMapping("/config/listSysTag") public R<List<SysTag>> listSysTag(@RequestBody Integer tagType); @@ -46,4 +45,25 @@ */ @PostMapping("/config/getSysClassificationList") public R<Map<Long,SysClassification>> getSysClassificationList(@RequestBody List<Long> classIds); /** * @description 获取标签 * @author jqs * @date 2023/6/21 16:11 * @param sysTagId * @return R<SysTag> */ @PostMapping("/config/getSysTag") public R<SysTag> getSysTag(@RequestBody Long sysTagId); /** * @description 获取部门用户 * @author jqs * @date 2023/6/21 16:00 * @param userIdByDept * @return R<MgtShopIdByCodeDto> */ @PostMapping("/config/getUserIdByDept") public R<MgtUserIdByDept> getUserIdByDept(@RequestBody MgtUserIdByDept userIdByDept); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
@@ -100,7 +100,7 @@ * @description 通过ids获取用户简易返回 * @author jqs * @date 2023/6/16 11:05 * @param userIds * @param mgtBaseBathDto * @return R<List<MgtSimpleMemberVo>> */ @PostMapping("/member/listSimpleVoByIds") @@ -133,6 +133,27 @@ * @param mgtActivityAgeDto * @return R<List<Long>> */ @PostMapping("/listUserIdByAge") @PostMapping("/member/listUserIdByAge") public R<List<Long>> listUserIdByAge(@RequestBody MgtActivityAgeDto mgtActivityAgeDto); /** * @description 通过shopId获取userId * @author jqs * @date 2023/6/21 17:11 * @param shopIdlist * @return R<List<Long>> */ @PostMapping("/listUserIdByShopId") public R<List<Long>> listUserIdByShopId(@RequestBody List<Long> shopIdlist); /** * @description 通过shopId获取user统计 * @author jqs * @date 2023/6/21 17:22 * @param shopIdlist * @return R<MgtShopTotalMemberVo> */ @PostMapping("/getUserTotalByShopId") public R<MgtShopTotalMemberVo> getUserTotalByShopId(@RequestBody List<Long> shopIdlist); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java
@@ -2,13 +2,17 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import com.ruoyi.system.api.factory.RemoteOrderFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @FeignClient(contextId = "remoteOrderService", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = RemoteOrderFallbackFactory.class) public interface RemoteOrderService { @@ -28,4 +32,14 @@ */ @PostMapping("/order/boardOrderTotal") public R<MgtBulletinBoardVo> boardOrderTotal(); /** * @description * @author jqs * @date 2023/6/21 15:27 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> */ @PostMapping("/order/listMemberGoodsRank") public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteUserService.java
@@ -1,19 +1,14 @@ package com.ruoyi.system.api.service; import com.ruoyi.system.api.domain.dto.AppEditUserDto; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.model.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.AppEditUserDto; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.factory.RemoteUserFallbackFactory; import com.ruoyi.system.api.model.LoginUser; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; /** * 用户服务 @@ -93,6 +88,5 @@ @PostMapping("/user/editUserInfo") public R editUserInfo(@RequestBody AppEditUserDto appEditUserDto); @PostMapping("/config/getSysTag") public R<SysTag> getSysTag(@RequestBody Long sysTagId); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
@@ -219,4 +219,32 @@ List<Long> userIdList = memberService.listUserIdByAge(mgtActivityAgeDto); return R.ok(userIdList); } /** * @description 通过shopId获取userId * @author jqs * @date 2023/6/21 17:11 * @param shopIdlist * @return R<List<Long>> */ @PostMapping("/listUserIdByShopId") public R<List<Long>> listUserIdByShopId(@RequestBody List<Long> shopIdlist) { List<Long> userIdList = memberService.listUserIdByShopId(shopIdlist); return R.ok(userIdList); } /** * @description 通过shopId获取user统计 * @author jqs * @date 2023/6/21 17:22 * @param shopIdlist * @return R<MgtShopTotalMemberVo> */ @PostMapping("/getUserTotalByShopId") public R<MgtShopTotalMemberVo> getUserTotalByShopId(@RequestBody List<Long> shopIdlist) { MgtShopTotalMemberVo shopTotalMemberVo = memberService.getUserTotalByShopId(shopIdlist); return R.ok(shopTotalMemberVo); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtTotalController.java
@@ -4,7 +4,9 @@ import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.member.domain.vo.MgtTotalMemberTotalVo; import com.ruoyi.member.service.member.MemberService; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtBaseShopDto; import com.ruoyi.system.api.domain.vo.MgtPlTotalMemberTotalVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.RequestBody; @@ -31,7 +33,7 @@ @RequestMapping(value = "/getTotalMemberTotal", method = RequestMethod.POST) @ApiOperation(value = "获取会员人数统计") @ApiOperation(value = "获取商户会员人数统计") public R<MgtTotalMemberTotalVo> getTotalMemberTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) { Long userId = SecurityUtils.getUserId(); mgtBaseShopDto.setUserId(userId); @@ -39,4 +41,13 @@ return R.ok(totalMemberTotalVo); } @RequestMapping(value = "/getPlTotalMemberTotal", method = RequestMethod.POST) @ApiOperation(value = "获取平台会员人数统计") public R<MgtPlTotalMemberTotalVo> getPlTotalMemberTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) { Long userId = SecurityUtils.getUserId(); mgtBasePlatformDto.setUserId(userId); MgtPlTotalMemberTotalVo plTotalMemberTotal = memberService.getPlTotalMemberTotal(mgtBasePlatformDto); return R.ok(plTotalMemberTotal); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java
@@ -33,7 +33,7 @@ private String userMobile; @ApiModelProperty(value = "建议类型1.平台2.门店") private Integer suggestType; private String suggestType; @ApiModelProperty(value = "建议内容") private String suggestContent; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java
@@ -46,10 +46,10 @@ @ApiModelProperty(value = "会员年龄value") private Integer[] ageValue; @ApiModelProperty(value = "会员年龄key") @ApiModelProperty(value = "会员调理key") private String[] nurseKey; @ApiModelProperty(value = "会员年龄value") @ApiModelProperty(value = "会员调理value") private Integer[] nurseValue; @ApiModelProperty(value = "商品类型key") ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java
@@ -7,9 +7,12 @@ import com.ruoyi.member.domain.dto.MgtMemberPageDto; import com.ruoyi.member.domain.vo.*; import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtBaseShopDto; import com.ruoyi.system.api.domain.dto.MgtUserIdByKeywordDto; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import com.ruoyi.system.api.domain.vo.MgtPlTotalMemberTotalVo; import com.ruoyi.system.api.domain.vo.MgtSimpleMemberVo; import org.apache.ibatis.annotations.Param; @@ -209,7 +212,88 @@ List<Long> listUserIdByAge(@Param("param")MgtActivityAgeDto mgtActivityAgeDto); /** * @description 会员人数统计 * @author jqs * @date 2023/6/21 10:59 * @param mgtBasePlatformDto * @return MgtPlTotalMemberTotalVo */ MgtPlTotalMemberTotalVo getPlTotalMemberTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description 会员人数统计 * @author jqs * @date 2023/6/19 15:26 * @param * @return MgtTotalMemberTotalVo */ MgtAgeTotalVo getPlTotalMemberTotalAge(@Param("param") MgtBasePlatformDto mgtBasePlatformDto); /** * @description 会员人数统计 * @author jqs * @date 2023/6/19 15:26 * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getPlTotalMemberTotalNurse(@Param("param") MgtBasePlatformDto mgtBasePlatformDto); /** * @description 会员人数统计 * @author jqs * @date 2023/6/19 15:26 * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getPlTotalMemberTotalGoodsType(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description getTotalMemberTotalActiveness * @param shopIdList * @param actStartDate * @param actEndDate * @return Integer * @author jqs34 * @date 2023/6/19 21:24 */ Integer getPlTotalMemberTotalActiveness(@Param("shopIdList") List<Long> shopIdList,@Param("actStartDate") String actStartDate,@Param("actEndDate") String actEndDate); /** * @description 会员人数统计 * @author jqs * @date 2023/6/19 15:26 * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getPlTotalMemberRankPay(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description 会员人数统计 * @author jqs * @date 2023/6/19 15:26 * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getPlTotalMemberRankCustomerSource(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description * @author jqs * @date 2023/6/21 14:35 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> */ List<MgtMapTotalVo> getPlTotalMemberRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description 通过shopId获取userId * @author jqs * @date 2023/6/21 17:11 * @param shopIdList * @return List<Long> */ List<Long> listUserIdByShopId(@Param("shopIdList")List<Long> shopIdList); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -102,7 +102,11 @@ @Resource private MemberArchiveService memberArchiveService; @Resource private RemoteShopService remoteShopService; @Resource private RemoteOrderService remoteOrderService; /** * @description: TODO @@ -392,6 +396,9 @@ @Override public void updateMemberBinding(AppMemberBindingDto appMemberBindingDto){ Member member = this.getByUserId(appMemberBindingDto.getUserId()); if(member.getBindingFlag()==0){ member.setBindingTime(new Date()); } member.setBindingFlag(appMemberBindingDto.getBindingFlag()); member.setRelationShopId(appMemberBindingDto.getShopId()); member.setRelationShopName(appMemberBindingDto.getShopName()); @@ -509,7 +516,9 @@ member.setWxUnionid(null); member.setMiniOpenid(null); member.setBindingFlag(1); member.setRelationShopId(merMemberAddDto.getShopId()); member.setBindingTime(new Date()); Shop shop = remoteShopService.getShop(merMemberAddDto.getShopId()).getData(); member.setRelationShopName(shop.getShopName()); member.setCustomerSource("商户添加"); member.setCreateTime(new Date()); log.info("member-----------------"+member.toString()); @@ -723,6 +732,7 @@ member.setRelationShopId(shop.getShopId()); member.setRelationShopName(shop.getShopName()); member.setBindingFlag(1); member.setBindingTime(new Date()); member.setUpdateTime(new Date()); member.setUpdateUserId(mgtMemberRelEditDto.getUserId()); this.saveOrUpdate(member); @@ -1059,5 +1069,178 @@ return userIdList; } /** * @description 会员人数统计 * @author jqs * @date 2023/6/21 10:59 * @param mgtBasePlatformDto * @return MgtPlTotalMemberTotalVo */ @Override public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto){ Date nowDay = DateUtils.getNowDate(); //如果区域代码不为null获取对应的商户id if(StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode())||StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode())||StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())){ MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto(); mgtShopIdByCodeDto.setShopProvinceCode(mgtBasePlatformDto.getShopProvinceCode()); mgtShopIdByCodeDto.setShopCityCode(mgtBasePlatformDto.getShopCityCode()); mgtShopIdByCodeDto.setShopAreaCode(mgtBasePlatformDto.getShopAreaCode()); MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){ List<Long> list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(",")) .map(Long::valueOf) .collect(Collectors.toList()); mgtBasePlatformDto.setShopIdList(list); } } //获取基础统计 MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto); MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto); plTotalMemberTotalVo.setManTotal(mgtAgeTotalVo.getManTotal()); plTotalMemberTotalVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal()); // 年龄段数组 String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; // 不同年龄段的会员数数组 Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()}; // 设置年龄段数组和不同年龄段的会员数数组 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); } // 获取不同商品类型的会员数 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); } // 获取不同活跃度的会员数 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; // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 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; } plTotalMemberTotalVo.setActivenessKey(activenessKey); plTotalMemberTotalVo.setActivenessValue(activenessValue); } //获取会员消费排名 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); } //获取来源渠道排名 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); } //获取商铺会员排名 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); } 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); } return plTotalMemberTotalVo; } /** * @description 通过shopId获取userId * @author jqs * @date 2023/6/21 17:11 * @param shopIdList * @return List<Long> */ @Override public List<Long> listUserIdByShopId(List<Long> shopIdList){ return memberMapper.listUserIdByShopId(shopIdList); } /** * @description 通过shopId获取user统计 * @author jqs * @date 2023/6/21 17:19 * @param shopIdList * @return MgtShopTotalMemberVo */ @Override public MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList){ MgtShopTotalMemberVo mgtShopTotalMemberVo = new MgtShopTotalMemberVo(); MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto(); mgtBasePlatformDto.setShopIdList(shopIdList); MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto); mgtShopTotalMemberVo.setManTotal(mgtAgeTotalVo.getManTotal()); mgtShopTotalMemberVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal()); // 年龄段数组 String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; // 不同年龄段的会员数数组 Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()}; // 设置年龄段数组和不同年龄段的会员数数组 mgtShopTotalMemberVo.setAgeKey(ageKey); mgtShopTotalMemberVo.setAgeValue(ageValue); return mgtShopTotalMemberVo; } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
@@ -6,10 +6,7 @@ import com.ruoyi.member.domain.vo.*; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.vo.AppMiniRegisterVo; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtSimpleMemberVo; import com.ruoyi.system.api.domain.vo.MgtUserIdByKeywordVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.AppMiniLoginDto; import com.ruoyi.system.api.model.AppMiniLoginVo; @@ -235,7 +232,7 @@ MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto); /** * @description * @description 过滤会员年龄 * @author jqs * @date 2023/6/20 11:49 * @param mgtActivityAgeDto @@ -243,5 +240,30 @@ */ List<Long> listUserIdByAge(MgtActivityAgeDto mgtActivityAgeDto); /** * @description 会员人数统计 * @author jqs * @date 2023/6/21 10:59 * @param mgtBasePlatformDto * @return MgtPlTotalMemberTotalVo */ MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto); /** * @description 通过shopId获取userId * @author jqs * @date 2023/6/21 17:11 * @param shopIdList * @return List<Long> */ List<Long> listUserIdByShopId(List<Long> shopIdList); /** * @description 通过shopId获取user统计 * @author jqs * @date 2023/6/21 17:19 * @param shopIdList * @return MgtShopTotalMemberVo */ MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList); } ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
@@ -239,7 +239,7 @@ ELSE '审核中' END auditStatus FROM t_coupon tc WHERE del_flag = 0 WHERE tc.del_flag = 0 <if test="param.auditStatus!=null and param.auditStatus!=''"> AND tc.audit_status = #{param.auditStatus} </if> ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponRelUserMapper.xml
@@ -72,6 +72,6 @@ FROM t_coupon_rel_user tcru INNER JOIN t_member tm ON tm.user_id = tcru.user_id WHERE del_flag = 0 AND tcru.coupon_id = #{couponId} WHERE tm.del_flag = 0 AND tcru.coupon_id = #{couponId} </select> </mapper> ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -286,9 +286,9 @@ <select id="listIdBySendType" resultType="java.lang.Long"> SELECT user_id FROM t_member WHERE del_flag = 0 tm.user_id FROM t_member tm WHERE tm.del_flag = 0 <if test="sendType != null and sendType == 3"> AND tm.binding_flag = 1 </if> @@ -381,7 +381,7 @@ </if> </select> <select id="getTotalMemberTotalNurse" resultType="com.ruoyi.member.domain.vo.MgtMapTotalVo"> <select id="getTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT member_nurse mapKey, COUNT(*) mapValue FROM ( SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(member_nurse, ',', numbers.n), ',', -1) member_nurse @@ -399,10 +399,9 @@ ) x WHERE member_nurse != '' GROUP BY member_nurse ORDER BY count DESC; </select> <select id="getTotalMemberTotalGoodsType" resultType="com.ruoyi.member.domain.vo.MgtMapTotalVo"> <select id="getTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT goods_type mapKey, COUNT(*) mapValue FROM ( SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(goods_type, ',', numbers.n), ',', -1) goods_type @@ -420,7 +419,6 @@ ) x WHERE goods_type != '' GROUP BY goods_type ORDER BY count DESC; </select> <select id="getTotalMemberTotalActiveness" resultType="java.lang.Integer"> @@ -428,9 +426,9 @@ COUNT(tm.member_id) FROM t_member tm LEFT JOIN t_member_total tmt ON tm.member_id = tmt.member_id WHERE del_Flag = 0 WHERE tm.del_Flag = 0 <if test="shopId != null and shopId != ''"> AND relation_shop_id = #{shopId} AND tm.relation_shop_id = #{shopId} </if> <if test="actStartDate != null and actStartDate != ''"> AND tmt.last_pay_time >= #{actStartDate} @@ -440,11 +438,11 @@ </if> </select> <select id="getTotalMemberRankPay" resultType="com.ruoyi.member.domain.vo.MgtMapTotalVo"> <select id="getTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT tm.nick_name mapKey, tmt.total_pay_count mapValue FROM t_member tm WHERE del_flag = 0 FROM t_member tm WHERE tm.del_flag = 0 INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id <if test="param.shopId != null and param.shopId != ''"> AND tm.relation_shop_id = #{param.shopId} @@ -455,14 +453,14 @@ <if test="param.endDate!=null and param.endDate!=''"> AND tm.create_time <= #{param.endDate} </if> ORDER BY tmt.total_pay_count DESC LIMIT 10 ORDER BY tmt.total_pay_count DESC LIMIT 15 </select> <select id="getTotalMemberRankCustomerSource" resultType="com.ruoyi.member.domain.vo.MgtMapTotalVo"> <select id="getTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT tm.customer_source mapKey, SUM(tm.customer_source) mapValue FROM t_member tm WHERE del_flag = 0 COUNT(tm.user_id) mapValue FROM t_member tm WHERE tm.del_flag = 0 <if test="param.shopId != null and param.shopId != ''"> AND tm.relation_shop_id = #{param.shopId} </if> @@ -473,7 +471,7 @@ AND tm.create_time <= #{param.endDate} </if> GROUP BY tm.customer_source ORDER BY SUM(tm.customer_source) DESC LIMIT 10 ORDER BY COUNT(tm.user_id) DESC LIMIT 15 </select> <select id="listUserIdByAge" resultType="java.lang.Long"> @@ -497,11 +495,183 @@ </if> <if test="param.userIds != null"> AND user_id IN <foreach collection="list" item="item" open="(" separator="," close=")"> #{param.userIds} <foreach collection="param.userIds" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </select> <select id="getPlTotalMemberTotal" resultType="com.ruoyi.system.api.domain.vo.MgtPlTotalMemberTotalVo"> SELECT COUNT(*) AS memberTotal, COUNT(CASE WHEN DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN 1 END) AS memberYesterday, COUNT(CASE WHEN create_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE() THEN 1 END) AS memberSeven FROM t_member WHERE del_flag = 0 AND binding_flag = 1 </select> <select id="getPlTotalMemberTotalAge" resultType="com.ruoyi.member.domain.vo.MgtAgeTotalVo"> SELECT SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END) manTotal, SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END) womenTotal, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END) AS tenAge, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END) AS twentyAge, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS ThirtyAge, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS fortyAge, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) >= 51 THEN 1 ELSE 0 END) AS fiftyAge FROM t_member WHERE del_flag = 0 AND binding_flag = 1 <if test="param.shopIdList != null and param.shopIdList != ''"> AND relation_shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </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="getPlTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT member_nurse mapKey, COUNT(*) mapValue FROM ( SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(member_nurse, ',', numbers.n), ',', -1) member_nurse FROM (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10) numbers INNER JOIN t_member ON CHAR_LENGTH(member_nurse) - CHAR_LENGTH(REPLACE(member_nurse, ',', '')) >= numbers.n - 1 <if test="param.shopIdList != null and param.shopIdList != ''"> AND relation_shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </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> ) x WHERE member_nurse != '' GROUP BY member_nurse </select> <select id="getPlTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT goods_type mapKey, COUNT(*) mapValue FROM ( SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(goods_type, ',', numbers.n), ',', -1) goods_type FROM (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) numbers INNER JOIN t_member ON CHAR_LENGTH(goods_type) - CHAR_LENGTH(REPLACE(goods_type, ',', '')) >= numbers.n - 1 <if test="param.shopIdList != null and param.shopIdList != ''"> AND relation_shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </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> ) x WHERE goods_type != '' GROUP BY goods_type </select> <select id="getPlTotalMemberTotalActiveness" resultType="java.lang.Integer"> SELECT COUNT(tm.member_id) FROM t_member tm INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id WHERE tm.del_Flag = 0 <if test="shopIdList != null and shopIdList != ''"> AND tm.relation_shop_id IN <foreach collection="shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="actStartDate != null and actStartDate != ''"> AND tmt.last_pay_time >= #{actStartDate} </if> <if test="actEndDate != null and actEndDate != ''"> AND tmt.last_pay_time <= #{actEndDate} </if> </select> <select id="getPlTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT tm.nick_name mapKey, tmt.total_pay_count mapValue FROM t_member tm WHERE del_flag = 0 INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id <if test="param.shopIdList != null and shopIdList != ''"> AND tm.relation_shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.startDate!=null and param.startDate!=''"> AND tm.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND tm.create_time <= #{param.endDate} </if> ORDER BY tmt.total_pay_count DESC LIMIT 15 </select> <select id="getTotalMemberRankCustomerSource" 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 != ''"> AND tm.relation_shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.startDate!=null and param.startDate!=''"> AND tm.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND tm.create_time <= #{param.endDate} </if> GROUP BY tm.customer_source ORDER BY COUNT(tm.user_id) DESC LIMIT 15 </select> <select id="getPlTotalMemberRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT 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 != ''"> AND tm.relation_shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.startDate!=null and param.startDate!=''"> AND tm.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND tm.create_time <= #{param.endDate} </if> GROUP BY tm.relation_shop_name ORDER BY COUNT(tm.user_id) DESC LIMIT 15 </select> <select id="listUserIdByShopId" resultType="java.lang.Long"> SELECT user_id FROM t_member WHERE del_flag = 0 <if test="param.userIds != null"> AND relation_shop_id IN <foreach collection="shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </select> </mapper> ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml
@@ -42,7 +42,7 @@ FROM t_member_suggest tms INNER JOIN t_member tm ON tms.create_user_id = tm.user_id WHERE del_flag = 0 WHERE tms.del_flag = 0 <if test="param.keyword!=null and param.keyword !=''"> AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tms.replay_user_name LIKE CONCAT('%',#{param.keyword},'%') OR tms.shop_replay_user_name LIKE CONCAT('%',#{param.keyword},'%')) </if> ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java
@@ -2,15 +2,18 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; 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; /** * @author jqs34 @@ -58,4 +61,16 @@ return R.ok(mgtBulletinBoardVo); } /** * @description * @author jqs * @date 2023/6/21 15:27 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> */ @PostMapping("/listMemberGoodsRank") public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto){ List<MgtMapTotalVo> memberGoodsRankList = orderService.listMemberGoodsRank(mgtBasePlatformDto); return R.ok(memberGoodsRankList); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
@@ -33,7 +33,7 @@ private OrderService orderService; @RequestMapping(value = "/getTotalOrderTotal", method = RequestMethod.POST) @ApiOperation(value = "获取订单统计") @ApiOperation(value = "获取商户订单统计") public R<MgtTotalOrderTotalVo> getTotalOrderTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) { Long userId = SecurityUtils.getUserId(); mgtBaseShopDto.setUserId(userId); @@ -42,7 +42,7 @@ } @RequestMapping(value = "/getTotalActivityTotal", method = RequestMethod.POST) @ApiOperation(value = "获取活动统计") @ApiOperation(value = "获取商户活动统计") public R<MgtTotalActivityTotalVo> getTotalActivityTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) { Long userId = SecurityUtils.getUserId(); mgtBaseShopDto.setUserId(userId); @@ -51,7 +51,7 @@ } @RequestMapping(value = "/getTotalActivityAgeRank", method = RequestMethod.POST) @ApiOperation(value = "获取活动年龄分布") @ApiOperation(value = "获取商户活动年龄分布") public R<MgtTotalActivityTotalVo> getTotalActivityAgeRank(@RequestBody MgtActivityAgeDto mgtActivityAgeDto) { Long userId = SecurityUtils.getUserId(); mgtActivityAgeDto.setUserId(userId); @@ -60,7 +60,7 @@ } @RequestMapping(value = "/getTotalDataTotal", method = RequestMethod.POST) @ApiOperation(value = "获取数据统计") @ApiOperation(value = "获取商户数据统计") public R<MgtTotalDataTotalVo> getTotalDataTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) { Long userId = SecurityUtils.getUserId(); mgtBaseShopDto.setUserId(userId); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMapTotalPlusVo.java
File was renamed from ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMapTotalVo.java @@ -13,7 +13,7 @@ * @Version 1.0 */ @Data public class MgtMapTotalVo { public class MgtMapTotalPlusVo { @ApiModelProperty(value = "mapKey") private String mapKey; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -6,8 +6,10 @@ import com.ruoyi.order.domain.pojo.order.Order; import com.ruoyi.order.domain.vo.*; import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtBaseShopDto; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -164,7 +166,7 @@ * @author jqs34 * @date 2023/6/19 22:48 */ List<MgtMapTotalVo> listTotalOrderTotal(@Param("param") MgtBaseShopDto mgtBaseShopDto); List<MgtMapTotalPlusVo> listTotalOrderTotal(@Param("param") MgtBaseShopDto mgtBaseShopDto); /** * @description listTotalOrderTotalGoodsType @@ -173,7 +175,7 @@ * @author jqs34 * @date 2023/6/19 22:48 */ List<MgtMapTotalVo> listTotalOrderTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto); List<MgtMapTotalPlusVo> listTotalOrderTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto); /** @@ -183,7 +185,7 @@ * @author jqs34 * @date 2023/6/19 22:48 */ List<MgtMapTotalVo> listTotalOrderTotalGoodsRank(@Param("param") MgtBaseShopDto mgtBaseShopDto); List<MgtMapTotalPlusVo> listTotalOrderTotalGoodsRank(@Param("param") MgtBaseShopDto mgtBaseShopDto); /** * @description listTotalOrderTotalOrderFrom @@ -192,7 +194,7 @@ * @author jqs34 * @date 2023/6/19 22:48 */ List<MgtMapTotalVo> listTotalOrderTotalOrderFrom(@Param("param") MgtBaseShopDto mgtBaseShopDto); List<MgtMapTotalPlusVo> listTotalOrderTotalOrderFrom(@Param("param") MgtBaseShopDto mgtBaseShopDto); /** @@ -212,7 +214,7 @@ * @author jqs34 * @date 2023/6/19 22:48 */ List<MgtMapTotalVo> listTotalActivityTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto); List<MgtMapTotalPlusVo> listTotalActivityTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto); /** @@ -222,7 +224,7 @@ * @author jqs34 * @date 2023/6/19 22:48 */ List<MgtMapTotalVo> listTotalActivityTotal(@Param("param") MgtBaseShopDto mgtBaseShopDto); List<MgtMapTotalPlusVo> listTotalActivityTotal(@Param("param") MgtBaseShopDto mgtBaseShopDto); /** * @description @@ -268,4 +270,13 @@ * @return Integer */ Integer getReturnedPerson(@Param("param")MgtBaseShopDto mgtBaseShopDto); /** * @description * @author jqs * @date 2023/6/21 15:27 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> */ List<MgtMapTotalVo> listMemberGoodsRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -19,6 +19,7 @@ import com.ruoyi.common.security.utils.CodeFactoryUtil; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import com.ruoyi.system.api.service.*; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.domain.poji.goods.Goods; @@ -1299,7 +1300,7 @@ public MgtTotalOrderTotalVo getTotalOrderTotal(MgtBaseShopDto mgtBaseShopDto){ MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getTotalOrderTotalOrderFrom(mgtBaseShopDto); //MgtTotalOrderTotalVo mgtTotalOrderTotalVoGoodsType = orderMapper.getTotalOrderTotalGoodsType(mgtBaseShopDto); List<MgtMapTotalVo> mgtMapTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto); List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto); if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) { String[] orderTotalKey = new String[mgtMapTotalVos.size()]; Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()]; @@ -1314,7 +1315,7 @@ mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); } //获取商品分类销售数据 List<MgtMapTotalVo> mgtMapTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto); List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto); if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()]; Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()]; @@ -1344,7 +1345,7 @@ mgtTotalOrderTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue); } //获取商品销售排名 List<MgtMapTotalVo> goodsRankList = orderMapper.listTotalOrderTotalGoodsRank(mgtBaseShopDto); List<MgtMapTotalPlusVo> goodsRankList = orderMapper.listTotalOrderTotalGoodsRank(mgtBaseShopDto); if (goodsRankList != null && goodsRankList.size() > 0) { String[] goodsRankKey = new String[goodsRankList.size()]; BigDecimal[] goodsRankValue = new BigDecimal[goodsRankList.size()]; @@ -1357,7 +1358,7 @@ mgtTotalOrderTotalVo.setGoodsRankValue(goodsRankValue); } //获取来源销售排名 List<MgtMapTotalVo> orderFromList = orderMapper.listTotalOrderTotalOrderFrom(mgtBaseShopDto); List<MgtMapTotalPlusVo> orderFromList = orderMapper.listTotalOrderTotalOrderFrom(mgtBaseShopDto); if (orderFromList != null && orderFromList.size() > 0) { String[] orderFromKey = new String[orderFromList.size()]; BigDecimal[] orderFromValue = new BigDecimal[orderFromList.size()]; @@ -1385,7 +1386,7 @@ //获取基础统计 MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto); //获取商品分类销售数据 List<MgtMapTotalVo> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto); List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto); if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()]; Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()]; @@ -1418,7 +1419,7 @@ totalActivityTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue); } //获取订单分布 List<MgtMapTotalVo> mgtMapTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto); List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto); if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) { String[] orderTotalKey = new String[mgtMapTotalVos.size()]; Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()]; @@ -1469,4 +1470,16 @@ mgtTotalDataTotalVo.setReturnedPerson(returnedPerson); return mgtTotalDataTotalVo; } /** * @description * @author jqs * @date 2023/6/21 15:26 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> */ @Override public List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto){ return listMemberGoodsRank(mgtBasePlatformDto); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -7,10 +7,12 @@ import com.ruoyi.order.domain.vo.*; import com.ruoyi.system.api.domain.dto.AppBaseGetDto; import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtBaseShopDto; import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import java.util.List; @@ -224,4 +226,16 @@ * @return MgtTotalDataTotalVo */ MgtTotalDataTotalVo getTotalDataTotal(MgtBaseShopDto mgtBaseShopDto); /** * @description * @author jqs * @date 2023/6/21 15:27 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> */ List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto); } ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -661,7 +661,7 @@ </if> </select> <select id="listTotalOrderTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo"> <select id="listTotalOrderTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey, COUNT(order_id) AS mapValueFirst, @@ -680,7 +680,7 @@ order_date ASC </select> <select id="listTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo"> <select id="listTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT tog.goods_type mapKey, COUNT(DISTINCT toc.order_id) AS mapValueFirst, @@ -695,7 +695,7 @@ GROUP BY tog.goods_type </select> <select id="listTotalOrderTotalGoodsRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo"> <select id="listTotalOrderTotalGoodsRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT tog.goods_name mapKey, IFNULL(SUM(tog.goods_total_money),0) mapValueSecond @@ -715,7 +715,7 @@ ORDER BY SUM(tog.goods_total_money) DESC LIMIT 10 </select> <select id="listTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo"> <select id="listTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT CASE toc.order_from WHEN 1 THEN "商城订单" @@ -755,7 +755,7 @@ </if> </select> <select id="listTotalActivityTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo"> <select id="listTotalActivityTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT tog.goods_type mapKey, COUNT(DISTINCT toc.order_id) AS mapValueFirst, @@ -771,7 +771,7 @@ GROUP BY tog.goods_type </select> <select id="listTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo"> <select id="listTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey, COUNT(DISTINCT toc.user_id) AS mapValueFirst @@ -785,8 +785,8 @@ </if> <if test="param.userIds != null"> AND user_id IN <foreach collection="list" item="item" open="(" separator="," close=")"> #{param.userIds} <foreach collection="param.userIds" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> GROUP BY @@ -873,4 +873,27 @@ WHERE t1.del_flag = 0 HAVING DATEDIFF(t2.pay_time, t1.pay_time) > 30) AS temp </select> <select id="listMemberGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT tog.goods_name mapKey, COUNT(DISTINCT toc.userId) mapValue 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 != ''"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.startDate!=null and param.startDate!=''"> AND toc.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND toc.create_time <= #{param.endDate} </if> GROUP BY tog.goods_name ORDER BY COUNT(DISTINCT toc.userId) DESC LIMIT 15 </select> </mapper> ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
@@ -127,6 +127,13 @@ return R.ok(); } /** * @description 通过区域代码获取shopId * @author jqs * @date 2023/6/21 15:50 * @param mgtShopIdByCodeDto * @return R<MgtShopIdByCodeVo> */ @PostMapping("/getShopIdByCode") public R<MgtShopIdByCodeVo> getShopIdByCode(@RequestBody MgtShopIdByCodeDto mgtShopIdByCodeDto) { @@ -134,6 +141,13 @@ return R.ok(mgtShopIdByCodeVo); } /** * @description 通过id获取商户简易信息list * @author jqs * @date 2023/6/21 15:50 * @param mgtBaseBathDto * @return R<List<MgtSimpleShopVo>> */ @PostMapping("/listShopSimpleVoByIds") public R<List<MgtSimpleShopVo>> listShopSimpleVoByIds(@RequestBody MgtBaseBathDto mgtBaseBathDto) { ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
@@ -141,7 +141,7 @@ } @RequestMapping(value = "/mgtReplayShopSuggest", method = RequestMethod.POST) @ApiOperation(value = "平台回复会员建议") @ApiOperation(value = "平台回复建议") public R mgtReplayShopSuggest(@RequestBody MgtReplayShopSuggestDto mgtReplayShopSuggestDto) { Long userId = SecurityUtils.getUserId(); mgtReplayShopSuggestDto.setUserId(userId); ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java
New file @@ -0,0 +1,42 @@ package com.ruoyi.shop.controller.management; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.shop.domain.vo.MgtPlTotalShopTotalVo; import com.ruoyi.shop.service.shop.ShopService; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; 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; /** * @ClassName MgtTotalController * @Description TODO * @Author jqs * @Date 2023/6/21 15:48 * @Version 1.0 */ @Api(value = "管理台合作商统计相关接口", tags = "管理台合作商统计相关接口", description = "管理台合作商统计相关接口") @RestController @RequestMapping("/mgt/total") public class MgtTotalController { @Resource private ShopService shopService; @RequestMapping(value = "/getPlTotalShopTotal", method = RequestMethod.POST) @ApiOperation(value = "获取平台商户统计") public R<MgtPlTotalShopTotalVo> getPlTotalShopTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) { Long userId = SecurityUtils.getUserId(); mgtBasePlatformDto.setUserId(userId); MgtPlTotalShopTotalVo totalShopTotalVo = shopService.getPlTotalShopTotal(mgtBasePlatformDto); return R.ok(totalShopTotalVo); } } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java
New file @@ -0,0 +1,72 @@ package com.ruoyi.shop.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @ClassName MgtTotalShopTotalVo * @Description TODO * @Author jqs * @Date 2023/6/21 16:12 * @Version 1.0 */ @Data public class MgtPlTotalShopTotalVo { @ApiModelProperty(value = "合作商总数") private Integer shopTotal; @ApiModelProperty(value = "代理商数") private Integer agencyTotal; @ApiModelProperty(value = "经销商数") private Integer dealerTotal; @ApiModelProperty(value = "终止合作数") private Integer terminateTotal; @ApiModelProperty(value = "新增签约") private Integer signTotal; @ApiModelProperty(value = "男人") private Integer manTotal; @ApiModelProperty(value = "女人") private Integer womenTotal; @ApiModelProperty(value = "会员年龄key") private String[] ageKey; @ApiModelProperty(value = "会员年龄value") private Integer[] ageValue; @ApiModelProperty(value = "合作商类型key") private String[] shopTypeKey; @ApiModelProperty(value = "合作商类型value") private Integer[] shopTypeValue; @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 = "合作商营业额key") private String[] shopSalesRankKey; @ApiModelProperty(value = "合作商营业额value") private Integer[] shopSalesRankValue; @ApiModelProperty(value = "合作商推荐key") private String[] shopRecommendKey; @ApiModelProperty(value = "合作商推荐value") private Integer[] shopRecommendValue; } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java
@@ -53,4 +53,7 @@ @ApiModelProperty(value = "平台响应时间") private String responseTime; @ApiModelProperty(value = "建议标签") private String suggestTags; } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.shop.domain.dto.*; import com.ruoyi.shop.domain.vo.*; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; import org.apache.ibatis.annotations.Param; @@ -119,4 +121,49 @@ * @date 2023/6/18 17:01 */ MgtBulletinBoardVo shopTotal(); /** * @description 获取平台商户统计 * @author jqs * @date 2023/6/21 16:25 * @return MgtPlTotalShopTotalVo */ MgtPlTotalShopTotalVo getPlTotalShopTotal(); /** * @description 获取统计关联shopId * @author jqs * @date 2023/6/21 16:45 * @param mgtBasePlatformDto * @return List<Long> */ List<Long> listShopIdByTotal(MgtBasePlatformDto mgtBasePlatformDto); /** * @description 商户类型统计 * @author jqs * @date 2023/6/21 17:40 * @param * @return List<MgtMapTotalVo> */ List<MgtMapTotalVo> listShopTypeTotal(MgtBasePlatformDto mgtBasePlatformDto); /** * @description 商户类型统计 * @author jqs * @date 2023/6/21 17:40 * @param * @return List<MgtMapTotalVo> */ List<MgtMapTotalVo> listShopStatusTotal(MgtBasePlatformDto mgtBasePlatformDto); /** * @description 商户类型统计 * @author jqs * @date 2023/6/21 17:40 * @param * @return List<MgtMapTotalVo> */ List<MgtMapTotalVo> listShopAreaRank(MgtBasePlatformDto mgtBasePlatformDto); } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -18,15 +18,14 @@ import com.ruoyi.shop.service.task.ShopFileService; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.domain.dto.AppMemberBindingDto; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; import com.ruoyi.system.api.domain.dto.MgtUserIdByDept; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo; import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.RemoteConfigService; import com.ruoyi.system.api.service.RemoteMemberService; import com.ruoyi.system.api.service.RemoteOrderService; @@ -37,10 +36,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.text.ParseException; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.StringJoiner; import java.util.*; import java.util.stream.Collectors; /** @@ -663,4 +659,86 @@ shopAuthentication.setAuditStatus(3); shopAuthenticationService.saveOrUpdate(shopAuthentication); } /** * @description 获取平台商户统计 * @author jqs * @date 2023/6/21 16:25 * @param mgtBasePlatformDto * @return MgtPlTotalShopTotalVo */ @Override public MgtPlTotalShopTotalVo getPlTotalShopTotal(MgtBasePlatformDto mgtBasePlatformDto){ //获取需要关联的用户id集合 if(mgtBasePlatformDto.getDeptId()!=null){ List<Long> userIdList = new ArrayList<>(); if(mgtBasePlatformDto.getUserId()!=null){ userIdList.add(mgtBasePlatformDto.getUserId()); }else{ MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); mgtUserIdByDept = configService.getUserIdByDept(mgtUserIdByDept).getData(); userIdList = mgtUserIdByDept.getUserIdList(); } if(!userIdList.isEmpty()){ mgtBasePlatformDto.setUserIdList(userIdList); } } MgtPlTotalShopTotalVo plTotalShopTotalVo = shopMapper.getPlTotalShopTotal(); plTotalShopTotalVo.setSignTotal(0); List<Long> shopIdList = shopMapper.listShopIdByTotal(mgtBasePlatformDto); if(!shopIdList.isEmpty()){ MgtShopTotalMemberVo shopTotalMemberVo = remoteMemberService.getUserTotalByShopId(shopIdList).getData(); plTotalShopTotalVo.setManTotal(shopTotalMemberVo.getManTotal()); plTotalShopTotalVo.setWomenTotal(shopTotalMemberVo.getWomenTotal()); plTotalShopTotalVo.setAgeKey(shopTotalMemberVo.getAgeKey()); plTotalShopTotalVo.setAgeValue(shopTotalMemberVo.getAgeValue()); } //获取商户类型 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); } //获取商户状态 List<MgtMapTotalVo> shopStatusTotal = shopMapper.listShopTypeTotal(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++) { if(shopStatusTotal.get(i).getMapKey().equals("1")){ shopStatusKey[i] = "经销商"; }else if(shopStatusTotal.get(i).getMapKey().equals("2")){ shopStatusKey[i] = "代理商"; } shopStatusValue[i] = shopStatusTotal.get(i).getMapValue(); } plTotalShopTotalVo.setShopStatusKey(shopStatusKey); plTotalShopTotalVo.setShopStatusValue(shopStatusValue); } /*plTotalShopTotalVo.setAreaRankKey(); plTotalShopTotalVo.setAreaRankValue(); plTotalShopTotalVo.setShopSalesRankKey(); plTotalShopTotalVo.setShopSalesRankValue(); plTotalShopTotalVo.setShopRecommendKey(); plTotalShopTotalVo.setShopRecommendValue();*/ return plTotalShopTotalVo; } } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.shop.domain.dto.*; import com.ruoyi.shop.domain.vo.*; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.poji.shop.Shop; @@ -187,4 +188,13 @@ * @return void */ void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto); /** * @description 获取平台商户统计 * @author jqs * @date 2023/6/21 16:25 * @param mgtBasePlatformDto * @return MgtPlTotalShopTotalVo */ MgtPlTotalShopTotalVo getPlTotalShopTotal(MgtBasePlatformDto mgtBasePlatformDto); } ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -446,9 +446,9 @@ <select id="getShopIdByCode" resultType="java.lang.Long"> SELECT shop_id FROM t_shop WHERE del_flag = 0 ts.shop_id FROM t_shop ts WHERE ts.del_flag = 0 <if test="param.shopName!=null and param.shopName!=''"> AND ts.shop_name LIKE CONCAT('%',#{param.shopName},'%') </if> @@ -491,8 +491,8 @@ shop_name FROM t_shop WHERE del_flag = 0 AND shop_city_code IN <foreach collection="list" item="item" open="(" separator="," close=")"> #{param.cityCodeList} <foreach collection="param.cityCodeList" item="item" open="(" separator="," close=")"> #{item} </foreach> </select> @@ -547,4 +547,133 @@ WHERE del_flag = 0 </select> <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 cooperative_flag = 0 THEN 1 ELSE 0 END) AS terminateTotal FROM t_shop WHERE del_flag = 0 </select> <select id="listShopIdByTotal" resultType="java.lang.Long"> SELECT ts.shop_id FROM t_shop ts WHERE ts.del_flag = 0 <if test="param.userIdList!=null and param.userIdList!=''"> AND ts.belong_user_id IN <foreach collection="param.userIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''"> AND ts.shop_province_code = #{param.shopProvinceCode} </if> <if test="param.shopCityCode!=null and param.shopCityCode!=''"> AND ts.shop_city_code = #{param.shopCityCode} </if> <if test="param.shopAreaCode!=null and param.shopAreaCode!=''"> AND ts.shop_area_code = #{param.shopAreaCode} </if> <if test="param.startDate!=null and param.startDate!=''"> AND ts.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND ts.create_time <= #{param.endDate} </if> </select> <select id="listShopTypeTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT ts.shop_type mapKey, COUNT(ts.shop_id) mapValue FROM t_shop ts WHERE ts.del_flag = 0 <if test="param.userIdList!=null and param.userIdList!=''"> AND ts.belong_user_id IN <foreach collection="param.userIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''"> AND ts.shop_province_code = #{param.shopProvinceCode} </if> <if test="param.shopCityCode!=null and param.shopCityCode!=''"> AND ts.shop_city_code = #{param.shopCityCode} </if> <if test="param.shopAreaCode!=null and param.shopAreaCode!=''"> AND ts.shop_area_code = #{param.shopAreaCode} </if> <if test="param.startDate!=null and param.startDate!=''"> AND ts.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND ts.create_time <= #{param.endDate} </if> GROUP BY ts.shop_type </select> <select id="listShopStatusTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT ts.shop_custom_status mapKey, COUNT(ts.shop_id) mapValue FROM t_shop ts WHERE ts.del_flag = 0 <if test="param.userIdList!=null and param.userIdList!=''"> AND ts.belong_user_id IN <foreach collection="param.userIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''"> AND ts.shop_province_code = #{param.shopProvinceCode} </if> <if test="param.shopCityCode!=null and param.shopCityCode!=''"> AND ts.shop_city_code = #{param.shopCityCode} </if> <if test="param.shopAreaCode!=null and param.shopAreaCode!=''"> AND ts.shop_area_code = #{param.shopAreaCode} </if> <if test="param.startDate!=null and param.startDate!=''"> AND ts.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND ts.create_time <= #{param.endDate} </if> GROUP BY ts.shop_custom_status </select> <select id="listShopAreaRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> SELECT ts.shop_city_code mapKey, COUNT(ts.shop_id) mapValue FROM t_shop ts WHERE ts.del_flag = 0 <if test="param.userIdList!=null and param.userIdList!=''"> AND ts.belong_user_id IN <foreach collection="param.userIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''"> AND ts.shop_province_code = #{param.shopProvinceCode} </if> <if test="param.shopCityCode!=null and param.shopCityCode!=''"> AND ts.shop_city_code = #{param.shopCityCode} </if> <if test="param.shopAreaCode!=null and param.shopAreaCode!=''"> AND ts.shop_area_code = #{param.shopAreaCode} </if> <if test="param.startDate!=null and param.startDate!=''"> AND ts.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND ts.create_time <= #{param.endDate} </if> GROUP BY ts.shop_city_code ORDER BY COUNT(ts.shop_id) DESC LIMIT 15 </select> </mapper> ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopSuggestMapper.xml
@@ -34,8 +34,8 @@ tss.suggest_tags suggestTags FROM t_shop_suggest tss INNER JOIN t_shop ts ON tss.shop_id = ts.shop_id WHERE del_flag = 0 LEFT JOIN t_shop ts ON tss.shop_id = ts.shop_id WHERE tss.del_flag = 0 <if test="param.keyword!=null and param.keyword !=''"> AND (ts.shop_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_phone LIKE CONCAT('%',#{param.keyword},'%') OR tss.replay_user_name LIKE CONCAT('%',#{param.keyword},'%')) </if> ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
@@ -1,13 +1,18 @@ package com.ruoyi.system.controller.conslole; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.MgtUserIdByDept; import com.ruoyi.system.api.domain.poji.config.Activeness; import com.ruoyi.system.api.domain.poji.config.SysClassification; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.domain.poji.config.Activeness; import com.ruoyi.system.service.config.ActivenessService; import com.ruoyi.system.service.config.SysClassificationService; import com.ruoyi.system.service.config.SysTagService; import org.springframework.web.bind.annotation.*; import com.ruoyi.system.service.sys.ISysUserService; 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; @@ -32,6 +37,11 @@ @Resource private SysClassificationService sysClassificationService; @Resource private ISysUserService sysUserService; /** * 获取系统标签 @@ -89,4 +99,19 @@ Map<Long,SysClassification> sysClassificationMap = sysClassificationService.getSysClassificationList(classIds); return R.ok(sysClassificationMap); } /** * @description 获取部门用户 * @author jqs * @date 2023/6/21 16:00 * @param userIdByDept * @return R<MgtShopIdByCodeDto> */ @PostMapping("/getUserIdByDept") public R<MgtUserIdByDept> getUserIdByDept(@RequestBody MgtUserIdByDept userIdByDept) { userIdByDept = sysUserService.getUserIdByDept(userIdByDept); return R.ok(userIdByDept); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
@@ -410,7 +410,6 @@ @RequestMapping(value = "/getBulletinBoard", method = RequestMethod.POST) @ApiOperation(value = "获取看板统计") public R<MgtBulletinBoardVo> getBulletinBoard() { Long userId = SecurityUtils.getUserId(); MgtBulletinBoardVo bulletinBoard = customConfigService.getBulletinBoard(); return R.ok(bulletinBoard); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java
@@ -50,6 +50,14 @@ return R.ok(mgtDeptStaffListVoList); } @RequestMapping(value = "/listMgtDeptStaffByPermission", method = RequestMethod.POST) @ApiOperation(value = "通过权限获取部门员工列表") public R<List<MgtDeptStaffListVo>> listMgtDeptStaffByPermission() { Long userId = SecurityUtils.getUserId(); List<MgtDeptStaffListVo> mgtDeptStaffListVoList= sysStaffService.listMgtDeptStaffByPermission(userId); return R.ok(mgtDeptStaffListVoList); } @RequestMapping(value = "/pageMgtStaffSuggest", method = RequestMethod.POST) @ApiOperation(value = "平台获取员工建议列表") @@ -98,7 +106,7 @@ } @RequestMapping(value = "/mgtDeleteStaff", method = RequestMethod.POST) @ApiOperation(value = "平台编辑员工") @ApiOperation(value = "平台删除员工") public R mgtStaffEdit(@RequestBody MgtBaseGetDto mgtBaseGetDto) { Long userId = SecurityUtils.getUserId(); mgtBaseGetDto.setUserId(userId); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/StaffSuggestMapper.java
@@ -1,10 +1,11 @@ package com.ruoyi.system.mapper.config; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.system.domain.dto.MgtStaffSuggestPageDto; import com.ruoyi.system.domain.pojo.config.StaffSuggest; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.domain.vo.MgtStaffSuggestPageVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -25,7 +26,7 @@ * @param suggestTag * @return void */ void deleteStaffSuggestTag(String suggestTag); void deleteStaffSuggestTag(@Param("suggestTag")String suggestTag); /** * @description 平台获取员工建议列表 @@ -35,5 +36,5 @@ * @author jqs34 * @date 2023/6/11 18:26 */ List<MgtStaffSuggestPageVo> pageMgtStaffSuggest(Page page, MgtStaffSuggestPageDto mgtStaffSuggestPageDto); List<MgtStaffSuggestPageVo> pageMgtStaffSuggest(Page page, @Param("param")MgtStaffSuggestPageDto mgtStaffSuggestPageDto); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java
@@ -3,6 +3,7 @@ import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -24,4 +25,14 @@ * @return List<MgtDeptStaffListVo> */ List<MgtDeptStaffListVo> listMgtDeptStaff(); /** * @description 获取部门员工列表 * @author jqs * @date 2023/6/13 10:14 * @param * @return List<MgtDeptStaffListVo> */ List<MgtDeptStaffListVo> listMgtDeptStaffByDept(@Param("deptId") Long deptId,@Param("userId") Long userId); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/sys/SysUserMapper.java
@@ -1,10 +1,11 @@ package com.ruoyi.system.mapper.sys; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import com.ruoyi.system.api.domain.dto.MgtUserIdByDept; import com.ruoyi.system.api.domain.poji.sys.SysUser; import org.apache.ibatis.annotations.Param; import java.util.List; /** * 用户表 数据层 @@ -125,4 +126,13 @@ * @return 结果 */ public SysUser checkEmailUnique(String email); /** * @description 获取部门用户 * @author jqs * @date 2023/6/21 16:07 * @param userIdByDept * @return List<Long> */ List<Long> getUserIdByDept(@Param("param")MgtUserIdByDept userIdByDept); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
@@ -47,6 +47,28 @@ } /** * @description 通过权限获取部门员工列表 * @author jqs * @date 2023/6/21 10:24 * @param userId * @return List<MgtDeptStaffListVo> */ @Override public List<MgtDeptStaffListVo>listMgtDeptStaffByPermission(Long userId){ SysUser sysUser = sysUserService.getById(userId); String dataScope = sysUser.getDataScope(); List<MgtDeptStaffListVo> deptStaffListVoList; if(dataScope.equals("4")){ deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),null); }else if(dataScope.equals("5")){ deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),sysUser.getUserId()); }else{ deptStaffListVoList = sysStaffMapper.listMgtDeptStaff(); } return deptStaffListVoList; } /** * @description getBYUserId * @param userId * @return SysStaff ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java
@@ -1,39 +1,35 @@ package com.ruoyi.system.service.impl.sys; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.validation.Validator; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.system.api.domain.dto.AppEditUserDto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanValidators; import com.ruoyi.common.datascope.annotation.DataScope; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.domain.dto.AppEditUserDto; import com.ruoyi.system.api.domain.dto.MgtUserIdByDept; import com.ruoyi.system.api.domain.poji.sys.SysRole; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.domain.pojo.sys.SysPost; import com.ruoyi.system.domain.pojo.sys.SysUserPost; import com.ruoyi.system.domain.pojo.sys.SysUserRole; import com.ruoyi.system.mapper.sys.SysPostMapper; import com.ruoyi.system.mapper.sys.SysRoleMapper; import com.ruoyi.system.mapper.sys.SysUserMapper; import com.ruoyi.system.mapper.sys.SysUserPostMapper; import com.ruoyi.system.mapper.sys.SysUserRoleMapper; import com.ruoyi.system.mapper.sys.*; import com.ruoyi.system.service.sys.ISysConfigService; import com.ruoyi.system.service.sys.ISysUserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.validation.Validator; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 用户 业务层处理 @@ -626,4 +622,19 @@ } } /** * @description 获取部门用户 * @author jqs * @date 2023/6/21 16:00 * @param userIdByDept * @return MgtUserIdByDept */ @Override public MgtUserIdByDept getUserIdByDept(MgtUserIdByDept userIdByDept){ List<Long> userIdList = userMapper.getUserIdByDept(userIdByDept); userIdByDept.setUserIdList(userIdList); return userIdByDept; } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java
@@ -28,6 +28,15 @@ List<MgtDeptStaffListVo> listMgtDeptStaff(); /** * @description 通过权限获取部门员工列表 * @author jqs * @date 2023/6/21 10:25 * @param userId * @return List<MgtDeptStaffListVo> */ List<MgtDeptStaffListVo>listMgtDeptStaffByPermission(Long userId); /** * @description mgtStaffEdit * @param mgtStaffEditDto * @return void ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/sys/ISysUserService.java
@@ -1,10 +1,11 @@ package com.ruoyi.system.service.sys; import java.util.List; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.api.domain.dto.AppEditUserDto; import com.ruoyi.system.api.domain.dto.MgtUserIdByDept; import com.ruoyi.system.api.domain.poji.sys.SysUser; import java.util.List; /** * 用户 业务层 @@ -234,4 +235,13 @@ * @param appEditUserDto */ public void editUserInfo(AppEditUserDto appEditUserDto); /** * @description 获取部门用户 * @author jqs * @date 2023/6/21 16:00 * @param userIdByDept * @return MgtUserIdByDept */ MgtUserIdByDept getUserIdByDept(MgtUserIdByDept userIdByDept); } ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/RecommendCooperationMapper.xml
@@ -27,7 +27,7 @@ trc.create_time createTime FROM t_recommend_cooperation trc LEFT JOIN sys_user su ON su.user_id = trc.recommend_user_id WHERE del_flag = 0 WHERE su.del_flag = '0' <if test="param.keyword != null and param.keyword != ''"> AND (trc.recommended_name LIKE CONCAT('%',#{param.keyword},'%') OR trc.recommended_phone LIKE CONCAT('%',#{param.keyword},'%') OR su.nike_name LIKE CONCAT('%',#{param.keyword},'%')) </if> ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/StaffSuggestMapper.xml
@@ -26,7 +26,7 @@ t_staff_suggest tss INNER JOIN sys_user su ON su.user_id = tss.create_user_id LEFT JOIN sys_dept sd ON sd.dept_id = su.dept_id WHERE del_flag = 0 WHERE tss.del_flag = 0 <if test="param.keyword!=null and param.keyword !=''"> AND (su.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR su.phonenumber LIKE CONCAT('%',#{param.keyword},'%') OR tss.replay_user_name LIKE CONCAT('%',#{param.keyword},'%')) </if> ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml
@@ -22,4 +22,18 @@ WHERE sd.del_flag = 0 AND su.del_flag = 0 </select> <select id="listMgtDeptStaffByDept" resultMap="deptStaffResultMap"> SELECT sd.dept_id deptId, sd.dept_name deptName, su.user_id userId, su.nick_name nickName FROM sys_dept sd LEFT JOIN sys_user su ON sd.dept_id = su.dept_id WHERE sd.del_flag = 0 AND su.del_flag = 0 AND sd.dept_id = #{deptId} <if test="userId != null and userId != ''"> AND su.user_id = #{userId} </if> </select> </mapper> ruoyi-modules/ruoyi-system/src/main/resources/mapper/sys/SysUserMapper.xml
@@ -218,5 +218,14 @@ #{userId} </foreach> </delete> <select id="getUserIdByDept" resultType="java.lang.Long"> SELECT user_id FROM sys_user WHERE del_flag = '0' <if test="param.deptId != null and param.deptId != ''"> dept_id = #{param.deptId} </if> </select> </mapper>