ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java
@@ -17,8 +17,8 @@ public class MemberTotalChangeDto { @ApiModelProperty(value = "会员id") private String memberId; @ApiModelProperty(value = "用户id") private Long userId; @ApiModelProperty(value = "积分变化") private Integer changeIntegral; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MemberTaskSimpleVo.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.system.api.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * @ClassName MemberTaskSimpleVo * @Description TODO * @Author jqs * @Date 2023/6/29 18:22 * @Version 1.0 */ @Data public class MemberTaskSimpleVo { @ApiModelProperty(value = "任务时间") private Date taskDate; @ApiModelProperty("任务内容") private String taskContent; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapIntTotalVo.java
File was renamed from ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java @@ -11,7 +11,7 @@ * @Version 1.0 */ @Data public class MgtMapTotalVo { public class MgtMapIntTotalVo { @ApiModelProperty(value = "mapKey") private String mapKey; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapStrTotalVo.javacopy from ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java copy to ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapStrTotalVo.java
File was copied from ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java @@ -4,19 +4,18 @@ import lombok.Data; /** * @ClassName MgtNurseTotalVo * @ClassName MgtMapStrTotalVo * @Description TODO * @Author jqs * @Date 2023/6/19 18:06 * @Date 2023/6/30 11:10 * @Version 1.0 */ @Data public class MgtMapTotalVo { public class MgtMapStrTotalVo { @ApiModelProperty(value = "mapKey") private String mapKey; @ApiModelProperty(value = "mapValue") private Integer mapValue; private String mapValue; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java
@@ -37,25 +37,25 @@ private Integer[] ageValue; @ApiModelProperty(value = "会员调理") private List<MgtMapTotalVo> nurseTotalVos; private List<MgtMapIntTotalVo> nurseTotalVos; @ApiModelProperty(value = "商品类型") private List<MgtMapTotalVo> goodsTypeTotalVos; private List<MgtMapIntTotalVo> goodsTypeTotalVos; @ApiModelProperty(value = "活跃度") private List<MgtMapTotalVo> activenessList; private List<MgtMapIntTotalVo> activenessList; @ApiModelProperty(value = "来源渠道") private List<MgtMapTotalVo> customerSourceList; private List<MgtMapIntTotalVo> customerSourceList; @ApiModelProperty(value = "消费排行") private List<MgtMapTotalVo> memberPayList; private List<MgtMapIntTotalVo> memberPayList; @ApiModelProperty(value = "商品排行") private List<MgtMapTotalVo> memberGoodsRankList; private List<MgtMapIntTotalVo> memberGoodsRankList; @ApiModelProperty(value = "店铺会员") private List<MgtMapTotalVo> shopMemberRankList; private List<MgtMapIntTotalVo> shopMemberRankList; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
@@ -48,13 +48,18 @@ } @Override public R<Activeness> getActivenessByName(String name) { return R.fail("获取活跃度失败:" + throwable.getMessage()); } @Override public R<List<SysTag>> listSysTag(Integer tagType) { return R.fail("获取标签失败:" + throwable.getMessage()); } @Override public R<List<Activeness>> listActiveness() { return R.fail("获取活跃度失败:" + throwable.getMessage()); return R.fail("获取活跃度列表失败:" + throwable.getMessage()); } @Override ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
@@ -106,6 +106,13 @@ public R<MgtShopTotalMemberVo> getUserTotalByShopId(List<Long> shopIdlist) { return R.fail("通过shopId获取user统计失败:" + throwable.getMessage()); } @Override public R changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto) { return R.fail("更新会员统计失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java
@@ -1,9 +1,10 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.MerBaseDto; 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.domain.vo.MgtMapIntTotalVo; import com.ruoyi.system.api.service.RemoteOrderService; import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; @@ -12,6 +13,7 @@ import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.List; /** @@ -47,9 +49,14 @@ } @Override public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) { public R<List<MgtMapIntTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) { return R.fail("获取商户端统计失败:" + throwable.getMessage()); } @Override public R<BigDecimal> getMemberUnpaidOrder(MerBaseDto merBaseDto) { return R.fail("获取用户未结清金额失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
@@ -4,14 +4,12 @@ import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; 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.dto.ShopTotalChangeDto; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.QwH5LoginVo; import com.ruoyi.system.api.model.QwUserDetailDto; import com.ruoyi.system.api.service.RemoteShopService; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.vo.ShopRelUserVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -80,7 +78,15 @@ return R.fail("获取商户列表失败:" + throwable.getMessage()); } @Override public R changeShopTotal(ShopTotalChangeDto shopTotalChangeDto) { return R.fail("更新商户统计失败:" + throwable.getMessage()); } @Override public R<MemberTaskSimpleVo> getLastMemberTask(Long userId) { return R.fail("获取最近会员任务失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
@@ -79,4 +79,14 @@ */ @PostMapping("/config/listSimpleUserVo") public R<List<MgtSysSimpleUserVo>> listSimpleUserVo(@RequestBody MgtBaseBathDto mgtBaseBathDto); /** * @description 通过名称获取活跃度 * @author jqs * @date 2023/6/29 17:20 * @param name * @return R<Activeness> */ @PostMapping("/getActivenessByName") public R<Activeness> getActivenessByName(@RequestBody String name); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
@@ -150,4 +150,17 @@ */ @PostMapping("/member/getUserTotalByShopId") public R<MgtShopTotalMemberVo> getUserTotalByShopId(@RequestBody List<Long> shopIdlist); /** * @description 更新会员统计 * @author jqs * @date 2023/6/28 17:52 * @param memberTotalChangeDto * @return R */ @PostMapping("/member/changeMemberTotal") public R changeMemberTotal(@RequestBody MemberTotalChangeDto memberTotalChangeDto); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java
@@ -2,16 +2,18 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.MerBaseDto; 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.domain.vo.MgtMapIntTotalVo; 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.math.BigDecimal; import java.util.List; @FeignClient(contextId = "remoteOrderService", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = RemoteOrderFallbackFactory.class) @@ -38,8 +40,19 @@ * @author jqs * @date 2023/6/21 15:27 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> */ @PostMapping("/order/listMemberGoodsRank") public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto); public R<List<MgtMapIntTotalVo>> listMemberGoodsRank(@RequestBody MgtBasePlatformDto mgtBasePlatformDto); /** * @description 获取用户未支付金额 * @author jqs * @date 2023/6/29 18:00 * @param merBaseDto * @return R<BigDecimal> */ @PostMapping("/order/getMemberUnpaidOrder") public R<BigDecimal> getMemberUnpaidOrder(@RequestBody MerBaseDto merBaseDto); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
@@ -5,11 +5,9 @@ import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto; import com.ruoyi.system.api.domain.poji.shop.Shop; 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.ShopRelUserVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.factory.RemoteShopFallbackFactory; import com.ruoyi.system.api.model.QwH5LoginVo; import com.ruoyi.system.api.model.QwUserDetailDto; @@ -90,4 +88,25 @@ */ @PostMapping("/shop/listShopIdByPlTotal") public R<List<Long>> listShopIdByPlTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto); /** * @description 更新商户统计 * @author jqs * @date 2023/6/28 17:52 * @param shopTotalChangeDto * @return R */ @PostMapping("/changeShopTotal") public R changeShopTotal(@RequestBody ShopTotalChangeDto shopTotalChangeDto); /** * @description 获取最近任务 * @author jqs * @date 2023/6/29 18:25 * @param userId * @return R<MemberTaskSimpleVo> */ @PostMapping("/member/getLastMemberTask") public R<MemberTaskSimpleVo> getLastMemberTask(@RequestBody Long userId); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java
@@ -5,6 +5,7 @@ import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.member.domain.dto.*; import com.ruoyi.member.domain.vo.*; import com.ruoyi.member.service.member.MemberArchiveFieldsService; import com.ruoyi.member.service.member.MemberService; import com.ruoyi.system.api.domain.dto.MerBaseGetDto; import io.swagger.annotations.Api; @@ -32,7 +33,8 @@ @Resource private MemberService memberService; @Resource private MemberArchiveFieldsService memberArchiveFieldsService; @RequestMapping(value = "/pageMerCashMember", method = RequestMethod.POST) @ApiOperation(value = "分页获取收银搜索会员列表") @@ -59,14 +61,17 @@ /** * 未完成 * @return * @description 获取会员信息 * @author jqs * @date 2023/6/29 18:10 * @param merBaseGetDto * @return R<MerMemberInfoVo> */ @RequestMapping(value = "/getMerMemberInfo", method = RequestMethod.POST) @ApiOperation(value = "获取会员信息") public R<MerMemberInfoVo> getMerMemberInfo(@RequestBody MerBaseGetDto merBaseGetDto) { Long userId = SecurityUtils.getUserId(); MerMemberInfoVo merMemberInfo = memberService.getMerMemberInfo(Long.valueOf(merBaseGetDto.getId())); MerMemberInfoVo merMemberInfo = memberService.getMerMemberInfo(merBaseGetDto); return R.ok(merMemberInfo); } @@ -77,6 +82,13 @@ Long userId = SecurityUtils.getUserId(); MerMemberBasicFileVo merMemberBasicFileVo = memberService.getMerMemberBasicFile(Long.valueOf(merBaseGetDto.getId())); return R.ok(merMemberBasicFileVo); } @RequestMapping(value = "/listMerArchiveFields", method = RequestMethod.POST) @ApiOperation(value = "商户获取档案字段") public R<List<MgtArchiveFieldsListVo>> listMerArchiveFields() { List<MgtArchiveFieldsListVo> archiveFieldsListVoList = memberArchiveFieldsService.listMgtArchiveFields(); return R.ok(archiveFieldsListVoList); } @RequestMapping(value = "/getMerMemberTags", method = RequestMethod.POST) @@ -112,4 +124,6 @@ memberService.editMerMember(merMemberAddDto); return R.ok(); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
@@ -247,7 +247,7 @@ @PostMapping("/changeMemberTotal") public R changeMemberTotal(@RequestBody MemberTotalChangeDto memberTotalChangeDto) { memberTotalService.changeMemberTotal(memberTotalChangeDto); memberService.changeMemberTotal(memberTotalChangeDto); return R.ok(); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
@@ -110,7 +110,12 @@ return R.ok(mgtMemberGetVo); } @RequestMapping(value = "/listMgtArchiveFields", method = RequestMethod.POST) @ApiOperation(value = "平台获取档案字段") public R<List<MgtArchiveFieldsListVo>> listMgtArchiveFields() { List<MgtArchiveFieldsListVo> archiveFieldsListVoList = memberArchiveFieldsService.listMgtArchiveFields(); return R.ok(archiveFieldsListVoList); } @RequestMapping(value = "/pageMgtMemberIntegral", method = RequestMethod.POST) @ApiOperation(value = "平台获取用户积分列表") ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberPageDto.java
@@ -4,8 +4,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * @author jqs34 * @ClassName MerMemberPageDto @@ -52,7 +50,13 @@ @ApiModelProperty(value = "会员性别0男1女") private Integer memberGender; @ApiModelProperty(value = "会员活跃度1.活跃2.中度活跃3.轻度活跃") private Integer memberActivity; @ApiModelProperty(value = "会员活跃度") private String memberActiveness; @ApiModelProperty(value = "活跃度开始时间",hidden = true) private String actStartDate; @ApiModelProperty(value = "活跃度结束时间",hidden = true) private String actEndDate; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java
@@ -121,8 +121,8 @@ /** * 总体验订单数 */ @TableField("tolta_experience_order") private Integer toltaExperienceOrder; @TableField("total_experience_order") private Integer totalExperienceOrder; /** * 总服务订单数 */ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java
@@ -4,7 +4,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -48,4 +47,7 @@ @ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; @ApiModelProperty(value = "用户档案") private List<MemberArchiveVo> achiveList; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java
@@ -32,6 +32,9 @@ @ApiModelProperty("用户生日") private String birthday; @ApiModelProperty(value = "用户类型") private String memberType; @ApiModelProperty(value = "用户标签") private String userTags; @@ -57,4 +60,8 @@ @ApiModelProperty(value = "下次跟进任务时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date nextTaskTime; @ApiModelProperty(value = "最近消费时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date lastPayTime; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtArchiveFieldsListVo.java
New file @@ -0,0 +1,38 @@ package com.ruoyi.member.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @ClassName MgtArchiveFieldsListVo * @Description TODO * @Author jqs * @Date 2023/6/30 9:37 * @Version 1.0 */ @Data public class MgtArchiveFieldsListVo { @ApiModelProperty(value = "档案id") private Long afId; @ApiModelProperty(value = "字段名称") private String fieldName; @ApiModelProperty(value = "是否必填0否1是") private Integer requiredFlag; @ApiModelProperty(value = "字段排序") private Integer fieldSort; @ApiModelProperty(value = "字段类型1文字输入2数字输入3字母输入4无限制输入6年月日选择7选项") private Integer fieldType; @ApiModelProperty(value = "字段输入提示") private String inputTip; @ApiModelProperty(value = "选项值 多个,隔开") private String optionValues; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java
@@ -1,6 +1,6 @@ package com.ruoyi.member.domain.vo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,17 +50,17 @@ private Integer[] ageValue; @ApiModelProperty(value = "会员调理") private List<MgtMapTotalVo> nurseTotalVos; private List<MgtMapIntTotalVo> nurseTotalVos; @ApiModelProperty(value = "商品类型") private List<MgtMapTotalVo> goodsTypeTotalVos; private List<MgtMapIntTotalVo> goodsTypeTotalVos; @ApiModelProperty(value = "活跃度") private List<MgtMapTotalVo> activenessList; private List<MgtMapIntTotalVo> activenessList; @ApiModelProperty(value = "来源渠道") private List<MgtMapTotalVo> customerSourceList; private List<MgtMapIntTotalVo> customerSourceList; @ApiModelProperty(value = "消费排行") private List<MgtMapTotalVo> memberPayList; private List<MgtMapIntTotalVo> memberPayList; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
@@ -51,4 +51,15 @@ * @return List<MgtCouponAuditPageVo> */ List<MgtCouponAuditPageVo> pageMgtAuditCoupon(Page page, @Param("param")MgtCouponAuditPageDto mgtCouponAuditPageDto); /** * @description 更新优惠券统计 * @author jqs * @date 2023/6/29 11:56 * @param couponId * @param sendTotal * @param sendPerson * @return void */ void updateCouponTotal( @Param("couponId")String couponId, @Param("sendTotal")Integer sendTotal, @Param("sendPerson")Integer sendPerson); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveFieldsMapper.java
@@ -2,6 +2,9 @@ import com.ruoyi.member.domain.pojo.member.MemberArchiveFields; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.member.domain.vo.MgtArchiveFieldsListVo; import java.util.List; /** * <p> @@ -13,4 +16,12 @@ */ public interface MemberArchiveFieldsMapper extends BaseMapper<MemberArchiveFields> { /** * @description 平台获取档案字段 * @author jqs * @date 2023/6/30 9:39 * @param * @return List<MgtArchiveFieldsListVo> */ List<MgtArchiveFieldsListVo> listMgtArchiveFields(); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveMapper.java
@@ -18,9 +18,18 @@ public interface MemberArchiveMapper extends BaseMapper<MemberArchive> { /** * 获取用户档案 * 获取用户档案去除空信息 * @param userId * @return */ List<MemberArchiveVo> listVoByUserId(@Param("userId") Long userId); List<MemberArchiveVo> listMgtVoByUserId(@Param("userId") Long userId); /** * @description * @author jqs * @date 2023/6/30 11:18 * @param userId * @return List<MemberArchiveVo> */ List<MemberArchiveVo> listMerVoByUserId(@Param("userId")Long userId); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java
@@ -11,7 +11,7 @@ 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.MgtMapIntTotalVo; import com.ruoyi.system.api.domain.vo.MgtPlTotalMemberTotalVo; import com.ruoyi.system.api.domain.vo.MgtSimpleMemberVo; import org.apache.ibatis.annotations.Param; @@ -160,7 +160,7 @@ * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getTotalMemberTotalNurse(@Param("param") MgtBaseShopDto mgtBaseShopDto); List<MgtMapIntTotalVo> getTotalMemberTotalNurse(@Param("param") MgtBaseShopDto mgtBaseShopDto); /** @@ -170,7 +170,7 @@ * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getTotalMemberTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto); List<MgtMapIntTotalVo> getTotalMemberTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto); /** * @description getTotalMemberTotalActiveness @@ -190,7 +190,7 @@ * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getTotalMemberRankPay(@Param("param") MgtBaseShopDto mgtBaseShopDto); List<MgtMapIntTotalVo> getTotalMemberRankPay(@Param("param") MgtBaseShopDto mgtBaseShopDto); /** @@ -200,7 +200,7 @@ * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getTotalMemberRankCustomerSource(@Param("param") MgtBaseShopDto mgtBaseShopDto); List<MgtMapIntTotalVo> getTotalMemberRankCustomerSource(@Param("param") MgtBaseShopDto mgtBaseShopDto); /** * @description @@ -237,7 +237,7 @@ * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getPlTotalMemberTotalNurse(@Param("param") MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> getPlTotalMemberTotalNurse(@Param("param") MgtBasePlatformDto mgtBasePlatformDto); /** * @description 会员人数统计 @@ -246,7 +246,7 @@ * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getPlTotalMemberTotalGoodsType(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> getPlTotalMemberTotalGoodsType(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description getTotalMemberTotalActiveness @@ -266,7 +266,7 @@ * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getPlTotalMemberRankPay(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> getPlTotalMemberRankPay(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description 会员人数统计 @@ -275,16 +275,16 @@ * @param * @return MgtTotalMemberTotalVo */ List<MgtMapTotalVo> getPlTotalMemberRankCustomerSource(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> getPlTotalMemberRankCustomerSource(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description * @author jqs * @date 2023/6/21 14:35 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> */ List<MgtMapTotalVo> getPlTotalMemberRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> getPlTotalMemberRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description 通过shopId获取userId ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponTotalService.java
@@ -1,7 +1,7 @@ package com.ruoyi.member.service.coupon; import com.ruoyi.member.domain.pojo.coupon.CouponTotal; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.member.domain.pojo.coupon.CouponTotal; /** * <p> @@ -13,4 +13,7 @@ */ public interface CouponTotalService extends IService<CouponTotal> { } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -320,7 +320,9 @@ List<MemberCoupon> memberCouponList = new ArrayList<>(); MemberCoupon memberCoupon; Integer sendTotal = 0; Integer sendPerson = 0; String memberCouponId; Integer sendUserTotal; for(Long userId : userIdList){ memberCouponId = IdUtils.simpleUUID(); memberCoupon = new MemberCoupon(); @@ -353,14 +355,18 @@ } memberCouponList.add(memberCoupon); sendTotal = sendTotal + 1; if(coupon.getSendType()==1){ sendUserTotal = memberCouponService.totalMemberCouponByUserAndCoupon(userId,coupon.getCouponId()); if(sendUserTotal!=null&&sendUserTotal>0){ }else{ sendPerson = sendPerson + 1; } } } memberCouponService.saveBatch(memberCouponList); //处理优惠券统计 if(sendTotal>0){ CouponTotal couponTotal = couponTotalService.getById(coupon.getCouponId()); couponTotal.setSendCount(couponTotal.getSendCount()+sendTotal); couponTotal.setSendUserCount(couponTotal.getSendUserCount()+sendTotal); couponTotalService.saveOrUpdate(couponTotal); couponMapper.updateCouponTotal(coupon.getCouponId(),sendTotal,sendPerson); } } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveFieldsServiceImpl.java
@@ -2,10 +2,14 @@ import com.ruoyi.member.domain.dto.MgtArchiveFieldsEditDto; import com.ruoyi.member.domain.pojo.member.MemberArchiveFields; import com.ruoyi.member.domain.vo.MgtArchiveFieldsListVo; import com.ruoyi.member.mapper.member.MemberArchiveFieldsMapper; import com.ruoyi.member.service.member.MemberArchiveFieldsService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * <p> @@ -18,6 +22,9 @@ @Service public class MemberArchiveFieldsServiceImpl extends ServiceImpl<MemberArchiveFieldsMapper, MemberArchiveFields> implements MemberArchiveFieldsService { @Resource private MemberArchiveFieldsMapper memberArchiveFieldsMapper; /** * @description 编辑会员档案字段 @@ -47,4 +54,16 @@ // 保存或更新会员档案字段信息 this.saveOrUpdate(memberArchiveFields); } /** * @description 平台获取档案字段 * @author jqs * @date 2023/6/30 9:39 * @param * @return List<MgtArchiveFieldsListVo> */ @Override public List<MgtArchiveFieldsListVo> listMgtArchiveFields(){ return memberArchiveFieldsMapper.listMgtArchiveFields(); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveServiceImpl.java
@@ -25,12 +25,22 @@ private MemberArchiveMapper memberArchiveMapper; /** * 获取用户档案去除空信息 * @param userId * @return */ @Override public List<MemberArchiveVo> listMgtVoByUserId(Long userId){ return memberArchiveMapper.listMgtVoByUserId(userId); } /** * 获取用户档案 * @param userId * @return */ @Override public List<MemberArchiveVo> listVoByUserId(Long userId){ return memberArchiveMapper.listVoByUserId(userId); public List<MemberArchiveVo> listMerVoByUserId(Long userId){ return memberArchiveMapper.listMerVoByUserId(userId); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -1,10 +1,9 @@ package com.ruoyi.member.service.impl.member; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.member.domain.pojo.coupon.Coupon; import com.ruoyi.member.mapper.member.MemberCouponMapper; import com.ruoyi.member.service.coupon.CouponService; import com.ruoyi.member.service.member.MemberCouponService; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.domain.poji.goods.Goods; @@ -35,8 +34,6 @@ @Resource private RemoteGoodsService remoteGoodsService; @Resource private CouponService couponService; /** * @description: TODO @@ -86,12 +83,10 @@ merVerifyCouponGetVo.setGoodsList(goodsList); } merVerifyCouponGetVo.setMemberCouponId(memberCoupon.getId()); Coupon coupon = couponService.getById(memberCoupon.getCouponId()); // 设置优惠券来源 if (coupon.getCouponFrom() == 1) { merVerifyCouponGetVo.setCouponFrom("平台"); } else { if (memberCoupon.getShopId()!=null&&memberCoupon.getShopId()>0) { merVerifyCouponGetVo.setCouponFrom("商户"); } else { merVerifyCouponGetVo.setCouponFrom("平台"); } return merVerifyCouponGetVo; } @@ -127,11 +122,10 @@ merVerifyCouponGetVo.setGoodsList(goodsList); } merVerifyCouponGetVo.setMemberCouponId(memberCoupon.getId()); Coupon coupon = couponService.getById(memberCoupon.getCouponId()); if (coupon.getCouponFrom()==1) { merVerifyCouponGetVo.setCouponFrom("平台"); } else { if (memberCoupon.getShopId()!=null&&memberCoupon.getShopId()>0) { merVerifyCouponGetVo.setCouponFrom("商户"); } else { merVerifyCouponGetVo.setCouponFrom("平台"); } memberCoupon.setCouponStatus(2); memberCoupon.setUseTime(new Date()); @@ -139,4 +133,21 @@ merVerifyCouponGetVo.setMemberCoupon(memberCoupon); return merVerifyCouponGetVo; } /** * @description * @author jqs * @date 2023/6/29 11:42 * @param userId * @param couponId * @return Integer */ @Override public Integer totalMemberCouponByUserAndCoupon(Long userId,String couponId){ LambdaQueryWrapper<MemberCoupon> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(MemberCoupon::getUserId,userId); queryWrapper.eq(MemberCoupon::getCouponId,couponId); Integer total = this.count(queryWrapper); return total; } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -17,7 +17,6 @@ import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.member.domain.dto.*; import com.ruoyi.member.domain.pojo.member.IntegralRecord; import com.ruoyi.member.domain.pojo.member.MemberNurse; import com.ruoyi.member.domain.pojo.member.MemberTotal; import com.ruoyi.member.domain.vo.*; import com.ruoyi.member.mapper.member.MemberMapper; @@ -115,18 +114,17 @@ * @version 1.0 */ @Override public Member getByUserId(Long userId){ public Member getByUserId(Long userId) { Member member = memberMapper.selectMemberByUserId(userId); return member; } /** * * @param appMiniLoginDto * @return */ @Override public AppMiniLoginVo getMemberByCode(AppMiniLoginDto appMiniLoginDto){ public AppMiniLoginVo getMemberByCode(AppMiniLoginDto appMiniLoginDto) { AppMiniLoginVo appMiniLoginVo = new AppMiniLoginVo(); WxMaJscode2SessionResult session = null; @@ -140,38 +138,39 @@ e.printStackTrace(); return null; } if(session!=null&& StringUtils.isNotBlank(session.getOpenid())){ if (session != null && StringUtils.isNotBlank(session.getOpenid())) { unionid = session.getUnionid(); openid = session.getOpenid(); sessionKey = session.getSessionKey(); //获取用户 Member member = memberMapper.getOneByMiniOpenid(openid); SysUser sysUser = null; if(member!=null){ if (member != null) { sysUser = sysUserService.getSysUser(member.getUserId()).getData(); } appMiniLoginVo.setMiniOpenid(openid); appMiniLoginVo.setWxUnionid(unionid); appMiniLoginVo.setSysUser(sysUser); appMiniLoginVo.setSessionKey(sessionKey); redisService.setCacheObject(SecurityConstant.SESSION_KEY+openid,sessionKey,1L,TimeUnit.DAYS); redisService.setCacheObject(SecurityConstant.SESSION_KEY + openid, sessionKey, 1L, TimeUnit.DAYS); } log.info("appMiniLoginVo"+appMiniLoginVo.toString()); log.info("appMiniLoginVo" + appMiniLoginVo.toString()); return appMiniLoginVo; } /** * 小程序注册 * * @param appUserRegisterDto * @return */ @Override public AppMiniRegisterVo miniRegister(AppMiniRegisterDto appUserRegisterDto){ public AppMiniRegisterVo miniRegister(AppMiniRegisterDto appUserRegisterDto) { AppMiniRegisterVo appUserRegisterVo = new AppMiniRegisterVo(); String mobile = null; //获取code接口在redis里存放的sessionkey用于解密 String sessionkey = redisService.getCacheObject(SecurityConstant.SESSION_KEY+ appUserRegisterDto.getMiniOpenid()); if(StringUtils.isBlank(sessionkey)){ String sessionkey = redisService.getCacheObject(SecurityConstant.SESSION_KEY + appUserRegisterDto.getMiniOpenid()); if (StringUtils.isBlank(sessionkey)) { throw new ServiceException(AppErrorConstant.USER_NOT_LOGIN); } try { @@ -204,18 +203,18 @@ } catch (Exception e) { e.printStackTrace(); } if(StringUtils.isBlank(mobile)){ if (StringUtils.isBlank(mobile)) { return null; } //判断openid是否被其他手机号占用 Member checkMember = memberMapper.getOneByMiniOpenid(appUserRegisterDto.getMiniOpenid()); if(checkMember!=null&&!checkMember.getMobile().equals(mobile)){ if (checkMember != null && !checkMember.getMobile().equals(mobile)) { throw new ServiceException("微信号换绑手机需联系客服"); } Member member = memberMapper.selectMemberByMobile(mobile); SysUser sysUser; //获取用户为空则新建 if(member == null){ if (member == null) { //创建新用户 String memberId = IdUtils.simpleUUID(); sysUser = new SysUser(); @@ -240,12 +239,12 @@ member.setCreateTime(new Date()); member.setMobile(mobile); initMemberTotal(memberId); }else{ } else { sysUser = sysUserService.getSysUser(member.getUserId()).getData(); } member.setWxUnionid(appUserRegisterDto.getWxUnionid()); member.setMiniOpenid(appUserRegisterDto.getMiniOpenid()); log.info("member-----------------"+member.toString()); log.info("member-----------------" + member.toString()); this.saveOrUpdate(member); appUserRegisterVo.setMobile(mobile); appUserRegisterVo.setNickName(member.getNickName()); @@ -257,19 +256,19 @@ public static String getAccessTokenByWX() throws Exception { String host = ACCESS_TOKEN_HOST + "?appid=" + WX_APPID + "&secret=" + WX_SECRET + "&grant_type=client_credential"; Map<String, String> headers = new HashMap<>(8); Map<String, String> headers = new HashMap<>(8); HttpResponse response = HttpUtils.doGet(host, "", "GET", headers, null); return EntityUtils.toString(response.getEntity()); } public static String getMobileByWX(String accessToken, String code) throws Exception { public static String getMobileByWX(String accessToken, String code) throws Exception { String method = "POST"; Map<String, String> headers = new HashMap<>(16); headers.put("Content-Type", "application/json"); headers.put("Accept", "application/json"); Map<String, String> querys = new HashMap<>(16); Map<String, String> bodys = new HashMap<>(16); querys.put("access_token", accessToken ); querys.put("access_token", accessToken); bodys.put("code", code); String body = JSONObject.toJSONString(bodys); String host = "https://api.weixin.qq.com/wxa/business/getuserphonenumber"; @@ -279,11 +278,12 @@ /** * 获取用户信息 * * @param userId * @return */ @Override public AppUserInfoVo getAppUserInfo(Long userId){ public AppUserInfoVo getAppUserInfo(Long userId) { AppUserInfoVo appUserInfoVo = new AppUserInfoVo(); Member member = this.getByUserId(userId); appUserInfoVo.setUserId(userId); @@ -291,11 +291,11 @@ appUserInfoVo.setNickName(member.getNickName()); appUserInfoVo.setRealName(member.getRealName()); appUserInfoVo.setPhonenumber(member.getMobile()); if(member.getRelationShopId()!=null&&member.getBindingFlag()==1){ if (member.getRelationShopId() != null && member.getBindingFlag() == 1) { appUserInfoVo.setRelationShopId(member.getRelationShopId()); Shop shop = shopService.getShop(member.getRelationShopId()).getData(); appUserInfoVo.setShopName(shop.getShopName()); appUserInfoVo.setShopAddress(shop.getShopAreaName()+shop.getShopAddress()); appUserInfoVo.setShopAddress(shop.getShopAreaName() + shop.getShopAddress()); } appUserInfoVo.setBirthday(member.getBirthday()); appUserInfoVo.setGender(member.getGender()); @@ -308,15 +308,16 @@ /** * 修改用户信息 * * @param appEditUserDto */ @Override public void editAppUserInfo(AppEditUserDto appEditUserDto){ public void editAppUserInfo(AppEditUserDto appEditUserDto) { //修改类型1.昵称2.头像3.性别4.生日 Integer editType = appEditUserDto.getEditType(); String editValue = appEditUserDto.getEditValue(); Member member = this.getByUserId(appEditUserDto.getUserId()); switch (editType){ switch (editType) { case 1: member.setNickName(editValue); member.setUpdateTime(new Date()); @@ -345,12 +346,23 @@ /** * 分页获取会员信息 * * @param merMemberPageDto * @return */ @Override public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto){ List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page,merMemberPageDto); public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto) { if (StringUtils.isNotBlank(merMemberPageDto.getMemberActiveness())) { Activeness activeness = remoteConfigService.getActivenessByName(merMemberPageDto.getMemberActiveness()).getData(); if (activeness != null) { Date nowDay = DateUtils.getNowDate(); String actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay())); String actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay())); merMemberPageDto.setActStartDate(actStartDate); merMemberPageDto.setActEndDate(actEndDate); } } List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page, merMemberPageDto); return merMemberPageVoList; } @@ -362,41 +374,71 @@ * @version 1.0 */ @Override public MerMemberInfoVo getMerMemberInfo(Long userId){ public MerMemberInfoVo getMerMemberInfo(MerBaseGetDto merBaseGetDto) { // 将id转换为Long类型 Long userId = Long.valueOf(merBaseGetDto.getId()); // 创建MerMemberInfoVo对象 MerMemberInfoVo merMemberInfoVo = new MerMemberInfoVo(); // 根据userId获取Member对象 Member member = this.getByUserId(userId); // 设置MerMemberInfoVo对象的属性值 merMemberInfoVo.setUserId(userId); merMemberInfoVo.setNickName(member.getNickName()); merMemberInfoVo.setPhonenumber(member.getMobile()); merMemberInfoVo.setAvatar(member.getAvatar()); merMemberInfoVo.setBirthday(member.getBirthday()); merMemberInfoVo.setUserTags(member.getUserTags()); //未完成 merMemberInfoVo.setMemberType(member.getGoodsType()); // 根据memberId获取MemberTotal对象 MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); // 设置MerMemberInfoVo对象的属性值 merMemberInfoVo.setSurpNumber(memberTotal.getUseableServiceCount()); merMemberInfoVo.setUserNumber(memberTotal.getUsedServiceCount()); merMemberInfoVo.setPayMoney(memberTotal.getTotalPayMoney()); // 创建MerBaseDto对象 MerBaseDto merBaseDto = new MerBaseDto(); // 设置MerBaseDto对象的属性值 merBaseDto.setShopId(merBaseGetDto.getShopId()); merBaseDto.setUserId(userId); // 获取未支付订单金额 BigDecimal unpaidMoney = remoteOrderService.getMemberUnpaidOrder(merBaseDto).getData(); merMemberInfoVo.setUnpaidMoney(unpaidMoney); // 获取最近的会员任务 MemberTaskSimpleVo memberTaskSimpleVo = remoteShopService.getLastMemberTask(userId).getData(); if (memberTaskSimpleVo != null) { merMemberInfoVo.setLastTaskContent(memberTaskSimpleVo.getTaskContent()); merMemberInfoVo.setLastTaskTime(memberTaskSimpleVo.getTaskDate()); } // 设置MerMemberInfoVo对象的属性值 merMemberInfoVo.setNextTaskTime(memberTotal.getNextTaskTime()); merMemberInfoVo.setLastPayTime(memberTotal.getLastPayTime()); // 返回MerMemberInfoVo对象 return merMemberInfoVo; } /** * 分页获取收银用户列表 * * @param page * @param merCashMemberPageDto * @return */ @Override public List<MerCashMemberPageVo> pageMerCashMember(Page page, MerCashMemberPageDto merCashMemberPageDto){ public List<MerCashMemberPageVo> pageMerCashMember(Page page, MerCashMemberPageDto merCashMemberPageDto) { List<MerCashMemberPageVo> merCashMemberPageVos = memberMapper.pageMerCashMember(page,merCashMemberPageDto); List<MerCashMemberPageVo> merCashMemberPageVos = memberMapper.pageMerCashMember(page, merCashMemberPageDto); return merCashMemberPageVos; } /** * 更新会员绑定商户 * * @param appMemberBindingDto */ @Override public void updateMemberBinding(AppMemberBindingDto appMemberBindingDto){ public void updateMemberBinding(AppMemberBindingDto appMemberBindingDto) { Member member = this.getByUserId(appMemberBindingDto.getUserId()); if(member.getBindingFlag()==0){ if (member.getBindingFlag() == 0) { member.setBindingTime(new Date()); } member.setBindingFlag(appMemberBindingDto.getBindingFlag()); @@ -407,48 +449,56 @@ /** * 获取会员基础档案 * * @param userId * @return */ @Override public MerMemberBasicFileVo getMerMemberBasicFile(Long userId){ public MerMemberBasicFileVo getMerMemberBasicFile(Long userId) { MerMemberBasicFileVo merMemberBasicFileVo = new MerMemberBasicFileVo(); Member member = this.getByUserId(userId); BeanUtils.copyProperties(member, merMemberBasicFileVo); merMemberBasicFileVo.setNickName(member.getNickName()); merMemberBasicFileVo.setPhonenumber(member.getMobile()); merMemberBasicFileVo.setCreateTime(member.getCreateTime()); List<MemberNurse> memberNurseList = memberNurseService.listByUserId(userId); List<String> valueList = memberNurseList.stream().map(k->k.getNurse()).collect(Collectors.toList()); merMemberBasicFileVo.setMemberNurse(valueList); /*List<MemberNurse> memberNurseList = memberNurseService.listByUserId(userId); List<String> valueList = memberNurseList.stream().map(k -> k.getNurse()).collect(Collectors.toList());*/ String memberNurse = member.getMemberNurse(); if(StringUtils.isNotBlank(memberNurse)){ List<String> valueList = Arrays.asList(memberNurse.split(",")); merMemberBasicFileVo.setMemberNurse(valueList); } List<MemberArchiveVo> achiveList = memberArchiveService.listMerVoByUserId(userId); merMemberBasicFileVo.setAchiveList(achiveList); return merMemberBasicFileVo; } /** * 获取会员标签 * * @param userId * @return */ @Override public List<MerMemberTagVo> getMerMemberTags(Long userId){ public List<MerMemberTagVo> getMerMemberTags(Long userId) { Member member = this.getByUserId(userId); String userTags = member.getUserTags(); String[] userTagsArr = null; if(StringUtils.isNotBlank(userTags)){ if (StringUtils.isNotBlank(userTags)) { userTagsArr = userTags.split(","); } List<SysTag> sysTagsList = remoteConfigService.listSysTag(1).getData(); List<MerMemberTagVo> merMemberTagVoList = new ArrayList<>(); MerMemberTagVo merMemberTagVo; String tagName; if(sysTagsList!=null&&!sysTagsList.isEmpty()){ for(SysTag sysTag : sysTagsList){ if (sysTagsList != null && !sysTagsList.isEmpty()) { for (SysTag sysTag : sysTagsList) { merMemberTagVo = new MerMemberTagVo(); tagName = sysTag.getTagName(); merMemberTagVo.setTagName(tagName); if(userTagsArr!=null && ArrayUtils.contains(userTagsArr, tagName)){ if (userTagsArr != null && ArrayUtils.contains(userTagsArr, tagName)) { merMemberTagVo.setSelectFlag(1); }else{ } else { merMemberTagVo.setSelectFlag(0); } merMemberTagVoList.add(merMemberTagVo); @@ -459,15 +509,16 @@ /** * 编辑会员标签 * * @param merMemberTagEditDto */ @Override public void editMerMemberTags(MerMemberTagEditDto merMemberTagEditDto){ public void editMerMemberTags(MerMemberTagEditDto merMemberTagEditDto) { Member member = this.getByUserId(merMemberTagEditDto.getMemberUserId()); List<String> userTags = merMemberTagEditDto.getUserTags(); StringJoiner sj = new StringJoiner(","); if(userTags!=null&&!userTags.isEmpty()){ for(String str : userTags){ if (userTags != null && !userTags.isEmpty()) { for (String str : userTags) { sj.add(str); } } @@ -478,17 +529,21 @@ /** * 添加会员 * * @param merMemberAddDto */ @Override public void addMerMember(MerMemberAddDto merMemberAddDto){ String phonenumber = merMemberAddDto.getPhonenumber(); Member oldMember = this.getByMobile(phonenumber); if(oldMember!=null){ public void addMerMember(MerMemberAddDto merMemberAddDto) { String phoneNumber = merMemberAddDto.getPhonenumber(); Member oldMember = this.getByMobile(phoneNumber); // Check if the member already exists if (oldMember != null) { throw new ServiceException(AppErrorConstant.MOBILE_USER_DOUBLE); } SysUser sysUser = sysUserService.getSysUserByMobile(phonenumber).getData(); if(sysUser==null){ // Get the sysUser by mobile number SysUser sysUser = sysUserService.getSysUserByMobile(phoneNumber).getData(); // If sysUser does not exist, create a new one if (sysUser == null) { String memberId = IdUtils.simpleUUID(); sysUser = new SysUser(); sysUser.setUserName(memberId); @@ -497,8 +552,9 @@ sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); String password = "hongruitang"; sysUser.setPassword(SecurityUtils.encryptPassword(password)); log.debug("sysUser"+sysUser.toString()); log.debug("sysUser" + sysUser.toString()); sysUser = sysUserService.registerUser(sysUser).getData(); // Create a new member Member member = new Member(); String memberNo = createMemberNo(); member.setMemberNo(memberNo); @@ -508,7 +564,7 @@ member.setNickName(merMemberAddDto.getNickName()); member.setRealName(merMemberAddDto.getNickName()); member.setGender(merMemberAddDto.getGender()); member.setMobile(phonenumber); member.setMobile(phoneNumber); member.setReferrer(merMemberAddDto.getReferrer()); member.setBirthday(merMemberAddDto.getBirthday()); member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); @@ -517,29 +573,29 @@ member.setMiniOpenid(null); member.setBindingFlag(1); member.setBindingTime(new Date()); // Get shop information and set it to the member Shop shop = remoteShopService.getShop(merMemberAddDto.getShopId()).getData(); member.setRelationShopName(shop.getShopName()); member.setCustomerSource("商户添加"); member.setCreateTime(new Date()); log.info("member-----------------"+member.toString()); // Save the member and initialize member total this.saveOrUpdate(member); initMemberTotal(memberId); } } /** * 编辑会员 * * @param merMemberEditDto */ @Override public void editMerMember(MerMemberEditDto merMemberEditDto){ public void editMerMember(MerMemberEditDto merMemberEditDto) { Member member = this.getByUserId(merMemberEditDto.getEditUserId()); if(!member.getMobile().equals(merMemberEditDto.getPhonenumber())){ if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) { Member memberOld = getByMobile(merMemberEditDto.getPhonenumber()); if(memberOld!=null){ if (memberOld != null) { throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE); } } @@ -552,7 +608,7 @@ member.setBirthday(merMemberEditDto.getBirthday()); member.setUpdateUserId(merMemberEditDto.getUserId()); member.setUpdateTime(new Date()); log.info("member-----------------"+member.toString()); log.info("member-----------------" + member.toString()); this.saveOrUpdate(member); SysUser sysUser = new SysUser(); sysUser.setUserId(merMemberEditDto.getEditUserId()); @@ -561,12 +617,11 @@ } /** * * @param mobile * @return */ @Override public Member getByMobile(String mobile){ public Member getByMobile(String mobile) { LambdaQueryWrapper<Member> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(Member::getDelFlag, 0).eq(Member::getMobile, mobile); Member member = this.getOne(queryWrapper); @@ -575,27 +630,28 @@ /** * 更新用户商品类型 * * @param appMemberGoodsTypeDto */ @Override public void updateMemberGoodsType(AppMemberGoodsTypeDto appMemberGoodsTypeDto){ public void updateMemberGoodsType(AppMemberGoodsTypeDto appMemberGoodsTypeDto) { Member member = this.getByUserId(appMemberGoodsTypeDto.getUserId()); HashSet<String> goodsTypeSet = appMemberGoodsTypeDto.getGoodsTypeSet(); if(member!=null){ if (member != null) { String goodsType = member.getGoodsType(); Boolean change = false; for(String str : goodsTypeSet){ if(goodsType != null){ if(!goodsType.contains(str)){ for (String str : goodsTypeSet) { if (goodsType != null) { if (!goodsType.contains(str)) { goodsType = goodsType + "," + str; change = true; } }else{ } else { goodsType = str; change = true; } } if(change){ if (change) { member.setGoodsType(goodsType); this.saveOrUpdate(member); } @@ -605,10 +661,11 @@ /** * 订单创建新用户 * * @param member */ @Override public void createNewMember(Member member){ public void createNewMember(Member member) { String memberNo = createMemberNo(); member.setMemberNo(memberNo); member.setDelFlag(0); @@ -622,10 +679,11 @@ /** * 生成会员统计 * * @param memberId * @return */ private void initMemberTotal(String memberId){ private void initMemberTotal(String memberId) { MemberTotal memberTotal = new MemberTotal(); memberTotal.setMemberId(memberId); memberTotal.setDelFlag(0); @@ -648,65 +706,67 @@ /** * 生成会员编号 * * @return */ private String createMemberNo(){ private String createMemberNo() { int memberTotal = memberMapper.selectCount(new LambdaQueryWrapper<Member>()); String memberNo = CodeFactoryUtil.getMemberNo(Long.valueOf(memberTotal+1)); String memberNo = CodeFactoryUtil.getMemberNo(Long.valueOf(memberTotal + 1)); return memberNo; } /** * 平台分页获取会员列表 * * @param page * @param merMemberPageDto * @return */ @Override public List<MgtMemberPageVo> pageMgtMember(Page page,MgtMemberPageDto merMemberPageDto){ public List<MgtMemberPageVo> pageMgtMember(Page page, MgtMemberPageDto merMemberPageDto) { List<Activeness> activenessList = remoteConfigService.listActiveness().getData(); Date nowDay = new Date(); if(merMemberPageDto.getActivenessId()!=null){ if (merMemberPageDto.getActivenessId() != null) { //处理活跃度筛选 activenessList.stream() .filter(activeness -> activeness.getActivenessId().equals(merMemberPageDto.getActivenessId())) .findFirst() .ifPresent(activeness -> { merMemberPageDto.setActStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(nowDay, activeness.getEndDay()))); merMemberPageDto.setActEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(nowDay, activeness.getStartDay()))); merMemberPageDto.setActStartDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()))); merMemberPageDto.setActEndDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()))); }); } //处理标签为正则表达 if(StringUtils.isNotBlank(merMemberPageDto.getMemberTags())){ merMemberPageDto.setMemberTags(merMemberPageDto.getMemberTags().replace(",","|")); if (StringUtils.isNotBlank(merMemberPageDto.getMemberTags())) { merMemberPageDto.setMemberTags(merMemberPageDto.getMemberTags().replace(",", "|")); } //查询获取结果列表 List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto); //处理活跃度返回 if(memberPageVoList!=null&&!memberPageVoList.isEmpty()){ if(activenessList!=null&&!activenessList.isEmpty()){ if (memberPageVoList != null && !memberPageVoList.isEmpty()) { if (activenessList != null && !activenessList.isEmpty()) { //生成活跃度时间段列表 List<MgtActivenessJudgeVo> mgtActivenessJudgeVoList = new ArrayList<>(); MgtActivenessJudgeVo mgtActivenessJudgeVo; for(Activeness activeness : activenessList){ for (Activeness activeness : activenessList) { mgtActivenessJudgeVo = new MgtActivenessJudgeVo(); mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(),activeness.getEndDay())); mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(),activeness.getStartDay()-1)); mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), activeness.getEndDay())); mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), activeness.getStartDay() - 1)); mgtActivenessJudgeVo.setActivenessName(activeness.getActivenessName()); } //活跃度赋值 Date lastPayTime; for(MgtMemberPageVo mgtMemberPageVo : memberPageVoList){ for (MgtMemberPageVo mgtMemberPageVo : memberPageVoList) { lastPayTime = mgtMemberPageVo.getLastPayTime(); StringJoiner sj = new StringJoiner(","); if(lastPayTime!=null){ for(MgtActivenessJudgeVo entity: mgtActivenessJudgeVoList){ if(lastPayTime.compareTo(entity.getStartDay())>=0&&lastPayTime.compareTo(entity.getEndDay())<=0){ if (lastPayTime != null) { for (MgtActivenessJudgeVo entity : mgtActivenessJudgeVoList) { if (lastPayTime.compareTo(entity.getStartDay()) >= 0 && lastPayTime.compareTo(entity.getEndDay()) <= 0) { sj.add(entity.getActivenessName()); } } if(sj.length()>0){ if (sj.length() > 0) { mgtMemberPageVo.setActiveness(sj.toString()); } } @@ -719,15 +779,16 @@ /** * 修改会员关联商户 * * @param mgtMemberRelEditDto */ @Override public void editMemberRelationShop(MgtMemberRelEditDto mgtMemberRelEditDto){ if(StringUtils.isNotBlank(mgtMemberRelEditDto.getMemberUserIds())){ public void editMemberRelationShop(MgtMemberRelEditDto mgtMemberRelEditDto) { if (StringUtils.isNotBlank(mgtMemberRelEditDto.getMemberUserIds())) { Shop shop = shopService.getShop(mgtMemberRelEditDto.getShopId()).getData(); String memberUserIds = mgtMemberRelEditDto.getMemberUserIds(); String[] memberUserIdArr = memberUserIds.split(","); for(String str : memberUserIdArr){ for (String str : memberUserIdArr) { Member member = this.getByUserId(Long.valueOf(str)); member.setRelationShopId(shop.getShopId()); member.setRelationShopName(shop.getShopName()); @@ -743,14 +804,15 @@ /** * 删除会员关联商户 * * @param mgtMemberRelDelDto */ @Override public void deleteMemberRelationShop(MgtMemberRelDelDto mgtMemberRelDelDto){ if(StringUtils.isNotBlank(mgtMemberRelDelDto.getMemberUserIds())) { public void deleteMemberRelationShop(MgtMemberRelDelDto mgtMemberRelDelDto) { if (StringUtils.isNotBlank(mgtMemberRelDelDto.getMemberUserIds())) { String memberUserIds = mgtMemberRelDelDto.getMemberUserIds(); String[] memberUserIdArr = memberUserIds.split(","); for(String str : memberUserIdArr) { for (String str : memberUserIdArr) { Member member = this.getByUserId(Long.valueOf(str)); member.setBindingFlag(0); member.setUpdateTime(new Date()); @@ -762,15 +824,16 @@ /** * 修改会员积分 * * @param mgtMemberIntEditDto */ @Override public void editMemberIntegral(MgtMemberIntEditDto mgtMemberIntEditDto){ if(StringUtils.isNotBlank(mgtMemberIntEditDto.getMemberUserIds())) { public void editMemberIntegral(MgtMemberIntEditDto mgtMemberIntEditDto) { if (StringUtils.isNotBlank(mgtMemberIntEditDto.getMemberUserIds())) { String memberUserIds = mgtMemberIntEditDto.getMemberUserIds(); String[] memberUserIdArr = memberUserIds.split(","); MemberIntegralChangeDto memberIntegralChangeDto; for(String str : memberUserIdArr) { for (String str : memberUserIdArr) { memberIntegralChangeDto = new MemberIntegralChangeDto(); Member member = this.getByUserId(Long.valueOf(str)); memberIntegralChangeDto.setUserId(Long.valueOf(str)); @@ -785,13 +848,13 @@ } /** * 会员积分变动 * * @param memberIntegralChangeDto */ @Override public void memberIntegralChange(MemberIntegralChangeDto memberIntegralChangeDto){ public void memberIntegralChange(MemberIntegralChangeDto memberIntegralChangeDto) { MemberTotal memberTotal = memberTotalService.getById(memberIntegralChangeDto.getMemberId()); Integer recordType = memberIntegralChangeDto.getRecordType(); Integer changeType = memberIntegralChangeDto.getChangeType(); @@ -800,15 +863,15 @@ Integer usedIntegral = memberTotal.getUsedIntegral(); Integer useableIntegral = memberTotal.getUseableIntegral(); //变动统计 if(changeType==1){ if (changeType == 1) { totalIntegral = totalIntegral + integer; useableIntegral = useableIntegral + integer; memberTotal.setTotalIntegral(totalIntegral); memberTotal.setUseableIntegral(useableIntegral); }else if(changeType==2){ } else if (changeType == 2) { usedIntegral = usedIntegral + integer; useableIntegral = useableIntegral - integer; if(useableIntegral<0){ if (useableIntegral < 0) { throw new ServiceException(AppErrorConstant.INTEGRAL_USE_FAILED); } memberTotal.setTotalIntegral(totalIntegral); @@ -821,16 +884,16 @@ integralRecord.setDelFlag(0); integralRecord.setUserId(memberIntegralChangeDto.getUserId()); integralRecord.setChangeType(recordType); if(changeType==1){ if (changeType == 1) { integralRecord.setChangeIntegral(integer); }else if(changeType==2){ integralRecord.setChangeIntegral( 0-integer); } else if (changeType == 2) { integralRecord.setChangeIntegral(0 - integer); } integralRecord.setSurpIntegral(useableIntegral); integralRecord.setCreateTime(new Date()); integralRecord.setOrderId(memberIntegralChangeDto.getOrderId()); integralRecord.setOrderNo(memberIntegralChangeDto.getOrderNo()); switch (recordType){ switch (recordType) { case 1: integralRecord.setChangeReason("购物赠送"); break; @@ -848,16 +911,17 @@ /** * 平台获取会员信息 * * @param userId * @return */ @Override public MgtMemberGetVo getMgtMemberInfo(Long userId){ public MgtMemberGetVo getMgtMemberInfo(Long userId) { MgtMemberGetVo mgtMemberGetVo = new MgtMemberGetVo(); Member member = this.getByUserId(userId); MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); List<MemberArchiveVo> memberArchiveVoList = memberArchiveService.listVoByUserId(member.getUserId()); if(memberArchiveVoList!=null&&!memberArchiveVoList.isEmpty()){ List<MemberArchiveVo> memberArchiveVoList = memberArchiveService.listMgtVoByUserId(member.getUserId()); if (memberArchiveVoList != null && !memberArchiveVoList.isEmpty()) { //去掉未完善信息 memberArchiveVoList.removeIf(o -> Objects.isNull(o.getFieldValue())); } @@ -867,7 +931,7 @@ mgtMemberGetVo.setRealName(member.getRealName()); mgtMemberGetVo.setNickName(member.getNickName()); mgtMemberGetVo.setMobile(member.getMobile()); mgtMemberGetVo.setGender(member.getGender()==0 ? "男" : member.getGender()==1 ? "女" : null); mgtMemberGetVo.setGender(member.getGender() == 0 ? "男" : member.getGender() == 1 ? "女" : null); mgtMemberGetVo.setBirthday(member.getBirthday()); mgtMemberGetVo.setBelongDistrict(member.getBelongDistrict()); mgtMemberGetVo.setCreateTime(member.getCreateTime()); @@ -885,54 +949,54 @@ } /** * @description 删除标签 * @author jqs * @date 2023/6/8 15:18 * @param memberTag * @return void * @return void * @description 删除标签 * @author jqs * @date 2023/6/8 15:18 */ @Override public void deleteMemberTag(String memberTag){ public void deleteMemberTag(String memberTag) { memberMapper.deleteMemberTag(memberTag); } /** * @description 通过发送类型获取userId * @author jqs * @date 2023/6/13 17:53 * @param sendType * @return List<Long> * @return List<Long> * @description 通过发送类型获取userId * @author jqs * @date 2023/6/13 17:53 */ @Override public List<Long> listIdBySendType(Integer sendType){ public List<Long> listIdBySendType(Integer sendType) { //1.手动领取2.全部用户3.会员用户4非会员用户5自定义 return memberMapper.listIdBySendType(sendType); } /** * @description 通过ids获取用户简易返回 * @author jqs * @date 2023/6/16 11:06 * @param userIds * @return List<MgtSimpleMemberVo> * @return List<MgtSimpleMemberVo> * @description 通过ids获取用户简易返回 * @author jqs * @date 2023/6/16 11:06 */ @Override public List<MgtSimpleMemberVo> listSimpleVoByIds(String userIds){ public List<MgtSimpleMemberVo> listSimpleVoByIds(String userIds) { return memberMapper.listSimpleVoByIds(userIds); } /** * @description * @author jqs * @date 2023/6/16 12:41 * @param mgtUserIdByKeywordDto * @return MgtUserIdByKeywordVo * @return MgtUserIdByKeywordVo * @description * @author jqs * @date 2023/6/16 12:41 */ @Override public MgtUserIdByKeywordVo getUserIdByKeyword(MgtUserIdByKeywordDto mgtUserIdByKeywordDto){ public MgtUserIdByKeywordVo getUserIdByKeyword(MgtUserIdByKeywordDto mgtUserIdByKeywordDto) { MgtUserIdByKeywordVo mgtUserIdByKeywordVo = new MgtUserIdByKeywordVo(); List<Long> userIdList = memberMapper.getUserIdByKeyword(mgtUserIdByKeywordDto); if(userIdList!=null&&!userIdList.isEmpty()){ if (userIdList != null && !userIdList.isEmpty()) { String userIdStr = userIdList.stream() .map(Object::toString) .collect(Collectors.joining(",")); @@ -942,14 +1006,14 @@ } /** * @description boardMemberTotal * @param * @return MgtBulletinBoardVo * @description boardMemberTotal * @author jqs34 * @date 2023/6/18 16:45 */ @Override public MgtBulletinBoardVo boardMemberTotal(){ public MgtBulletinBoardVo boardMemberTotal() { MgtBulletinBoardVo mgtBulletinBoardVo = new MgtBulletinBoardVo(); mgtBulletinBoardVo.setMemberTotal(memberMapper.memberTotal()); mgtBulletinBoardVo.setMemberToday(memberMapper.memberToday()); @@ -957,14 +1021,14 @@ } /** * @description 会员人数统计 * @author jqs * @date 2023/6/19 15:26 * @param * @return MgtTotalMemberTotalVo * @return MgtTotalMemberTotalVo * @description 会员人数统计 * @author jqs * @date 2023/6/19 15:26 */ @Override public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto){ public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto) { Date nowDay = DateUtils.getNowDate(); // 获取店铺ID Long shopId = mgtBaseShopDto.getShopId(); @@ -979,13 +1043,13 @@ mgtTotalMemberTotalVo.setAgeKey(ageKey); mgtTotalMemberTotalVo.setAgeValue(ageValue); // 获取不同护理类型的会员数 List<MgtMapTotalVo> nurseTotalVos = memberMapper.getTotalMemberTotalNurse(mgtBaseShopDto); List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getTotalMemberTotalNurse(mgtBaseShopDto); if (nurseTotalVos != null && nurseTotalVos.size() > 0) { nurseTotalVos = listRemoveNull(nurseTotalVos); mgtTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos); } // 获取不同商品类型的会员数 List<MgtMapTotalVo> goodsTypeTotalVos = memberMapper.getTotalMemberTotalGoodsType(mgtBaseShopDto); List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getTotalMemberTotalGoodsType(mgtBaseShopDto); if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) { goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos); mgtTotalMemberTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); @@ -997,29 +1061,29 @@ String actStartDate; String actEndDate; Integer count; List<MgtMapTotalVo> mgtMapTotalVoList = new ArrayList<>(); MgtMapTotalVo mgtMapTotalVo; List<MgtMapIntTotalVo> MgtMapIntTotalVoList = new ArrayList<>(); MgtMapIntTotalVo MgtMapIntTotalVo; // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 for (int i = 0; i < activenessList.size(); i++) { activeness = activenessList.get(i); actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay())); actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay())); count = memberMapper.getTotalMemberTotalActiveness(shopId, actStartDate, actEndDate); mgtMapTotalVo = new MgtMapTotalVo(); mgtMapTotalVo.setMapKey(activeness.getActivenessName()); mgtMapTotalVo.setMapValue(count); mgtMapTotalVoList.add(mgtMapTotalVo); MgtMapIntTotalVo = new MgtMapIntTotalVo(); MgtMapIntTotalVo.setMapKey(activeness.getActivenessName()); MgtMapIntTotalVo.setMapValue(count); MgtMapIntTotalVoList.add(MgtMapIntTotalVo); } mgtTotalMemberTotalVo.setActivenessList(mgtMapTotalVoList); mgtTotalMemberTotalVo.setActivenessList(MgtMapIntTotalVoList); } //获取会员消费排名 List<MgtMapTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto); List<MgtMapIntTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto); if (memberPayList != null && memberPayList.size() > 0) { memberPayList = listRemoveNull(memberPayList); mgtTotalMemberTotalVo.setMemberPayList(memberPayList); } //获取来源渠道排名 List<MgtMapTotalVo> customerSourceList = memberMapper.getTotalMemberRankCustomerSource(mgtBaseShopDto); List<MgtMapIntTotalVo> customerSourceList = memberMapper.getTotalMemberRankCustomerSource(mgtBaseShopDto); if (customerSourceList != null && customerSourceList.size() > 0) { customerSourceList = listRemoveNull(customerSourceList); mgtTotalMemberTotalVo.setCustomerSourceList(customerSourceList); @@ -1030,36 +1094,36 @@ /** * @description * @author jqs * @date 2023/6/20 11:42 * @param mgtActivityAgeDto * @return List<Long> * @return List<Long> * @description * @author jqs * @date 2023/6/20 11:42 */ @Override public List<Long> listUserIdByAge(MgtActivityAgeDto mgtActivityAgeDto){ public List<Long> listUserIdByAge(MgtActivityAgeDto mgtActivityAgeDto) { List<Long> userIdList = memberMapper.listUserIdByAge(mgtActivityAgeDto); return userIdList; } /** * @description 会员人数统计 * @author jqs * @date 2023/6/21 10:59 * @param mgtBasePlatformDto * @return MgtPlTotalMemberTotalVo * @return MgtPlTotalMemberTotalVo * @description 会员人数统计 * @author jqs * @date 2023/6/21 10:59 */ @Override public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto){ public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) { Date nowDay = DateUtils.getNowDate(); //如果区域代码不为null获取对应的商户id if(StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode())||StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode())||StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())){ 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())){ if (StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())) { List<Long> list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(",")) .map(Long::valueOf) .collect(Collectors.toList()); @@ -1069,10 +1133,10 @@ //获取基础统计 MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto); MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto); if(mgtAgeTotalVo!=null){ if (mgtAgeTotalVo != null) { plTotalMemberTotalVo.setManTotal(mgtAgeTotalVo.getManTotal()); plTotalMemberTotalVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal()); }else{ } else { plTotalMemberTotalVo.setManTotal(0); plTotalMemberTotalVo.setWomenTotal(0); } @@ -1085,13 +1149,13 @@ plTotalMemberTotalVo.setAgeKey(ageKey); plTotalMemberTotalVo.setAgeValue(ageValue); // 获取不同调理类型的会员数 List<MgtMapTotalVo> nurseTotalVos = memberMapper.getPlTotalMemberTotalNurse(mgtBasePlatformDto); List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getPlTotalMemberTotalNurse(mgtBasePlatformDto); if (nurseTotalVos != null && nurseTotalVos.size() > 0) { nurseTotalVos = listRemoveNull(nurseTotalVos); plTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos); } // 获取不同商品类型的会员数 List<MgtMapTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto); List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto); if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) { goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos); plTotalMemberTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); @@ -1104,42 +1168,42 @@ String actStartDate; String actEndDate; Integer count; List<MgtMapTotalVo> mgtMapTotalVoList = new ArrayList<>(); MgtMapTotalVo mgtMapTotalVo; List<MgtMapIntTotalVo> MgtMapIntTotalVoList = new ArrayList<>(); MgtMapIntTotalVo MgtMapIntTotalVo; // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 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); if(StringUtils.isNotBlank(activeness.getActivenessName())){ mgtMapTotalVo = new MgtMapTotalVo(); mgtMapTotalVo.setMapKey(activeness.getActivenessName()); mgtMapTotalVo.setMapValue(count); mgtMapTotalVoList.add(mgtMapTotalVo); if (StringUtils.isNotBlank(activeness.getActivenessName())) { MgtMapIntTotalVo = new MgtMapIntTotalVo(); MgtMapIntTotalVo.setMapKey(activeness.getActivenessName()); MgtMapIntTotalVo.setMapValue(count); MgtMapIntTotalVoList.add(MgtMapIntTotalVo); } } plTotalMemberTotalVo.setActivenessList(mgtMapTotalVoList); plTotalMemberTotalVo.setActivenessList(MgtMapIntTotalVoList); } //获取会员消费排名 List<MgtMapTotalVo> memberPayList = memberMapper.getPlTotalMemberRankPay(mgtBasePlatformDto); List<MgtMapIntTotalVo> memberPayList = memberMapper.getPlTotalMemberRankPay(mgtBasePlatformDto); if (memberPayList != null && memberPayList.size() > 0) { memberPayList = listRemoveNull(memberPayList); plTotalMemberTotalVo.setMemberPayList(memberPayList); } //获取来源渠道排名 List<MgtMapTotalVo> customerSourceList = memberMapper.getPlTotalMemberRankCustomerSource(mgtBasePlatformDto); List<MgtMapIntTotalVo> customerSourceList = memberMapper.getPlTotalMemberRankCustomerSource(mgtBasePlatformDto); if (customerSourceList != null && customerSourceList.size() > 0) { customerSourceList = listRemoveNull(customerSourceList); plTotalMemberTotalVo.setCustomerSourceList(customerSourceList); } //获取商铺会员排名 List<MgtMapTotalVo> shopMemberRankList = memberMapper.getPlTotalMemberRank(mgtBasePlatformDto); List<MgtMapIntTotalVo> shopMemberRankList = memberMapper.getPlTotalMemberRank(mgtBasePlatformDto); if (shopMemberRankList != null && shopMemberRankList.size() > 0) { shopMemberRankList = listRemoveNull(shopMemberRankList); plTotalMemberTotalVo.setShopMemberRankList(shopMemberRankList); } List<MgtMapTotalVo> memberGoodsRankList = remoteOrderService.listMemberGoodsRank(mgtBasePlatformDto).getData(); List<MgtMapIntTotalVo> memberGoodsRankList = remoteOrderService.listMemberGoodsRank(mgtBasePlatformDto).getData(); if (memberGoodsRankList != null && memberGoodsRankList.size() > 0) { memberGoodsRankList = listRemoveNull(memberGoodsRankList); plTotalMemberTotalVo.setMemberGoodsRankList(memberGoodsRankList); @@ -1148,42 +1212,42 @@ } /** * @description 去除空字符串 * @author jqs * @date 2023/6/27 17:35 * @param mgtMapTotalVos * @return List<MgtMapTotalVo> * @param MgtMapIntTotalVos * @return List<MgtMapIntTotalVo> * @description 去除空字符串 * @author jqs * @date 2023/6/27 17:35 */ 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); private List<MgtMapIntTotalVo> listRemoveNull(List<MgtMapIntTotalVo> MgtMapIntTotalVos) { for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) { MgtMapIntTotalVos.remove(i); } } return mgtMapTotalVos; return MgtMapIntTotalVos; } /** * @description 通过shopId获取userId * @author jqs * @date 2023/6/21 17:11 * @param shopIdList * @return List<Long> * @return List<Long> * @description 通过shopId获取userId * @author jqs * @date 2023/6/21 17:11 */ @Override public List<Long> listUserIdByShopId(List<Long> shopIdList){ 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 * @return MgtShopTotalMemberVo * @description 通过shopId获取user统计 * @author jqs * @date 2023/6/21 17:19 */ @Override public MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList){ public MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList) { MgtShopTotalMemberVo mgtShopTotalMemberVo = new MgtShopTotalMemberVo(); MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto(); mgtBasePlatformDto.setShopIdList(shopIdList); @@ -1199,4 +1263,67 @@ mgtShopTotalMemberVo.setAgeValue(ageValue); return mgtShopTotalMemberVo; } /** * @param memberTotalChangeDto * @return void * @description 会员统计变动 * @author jqs * @date 2023/6/28 14:34 */ @Override public void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto) { Member member = this.getByUserId(memberTotalChangeDto.getUserId()); MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); //积分变动 if (memberTotalChangeDto.getChangeIntegral() != null) { if (memberTotalChangeDto.getTypeIntegral() == 2) { memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() - memberTotalChangeDto.getChangeIntegral()); memberTotal.setUsedIntegral(memberTotal.getUsedIntegral() + memberTotalChangeDto.getChangeIntegral()); } else { memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + memberTotalChangeDto.getChangeIntegral()); memberTotal.setTotalIntegral(memberTotal.getTotalIntegral() + memberTotalChangeDto.getChangeIntegral()); } } //消费变动 if (memberTotalChangeDto.getPayMoney() != null) { memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney())); memberTotal.setTotalPayCount(memberTotal.getTotalPayCount() + 1); memberTotal.setLastPayMoney(memberTotalChangeDto.getPayMoney()); memberTotal.setLastPayTime(memberTotalChangeDto.getPayTime()); } //服务次数变动 if (memberTotalChangeDto.getServiceCount() != null) { if (memberTotalChangeDto.getTypeService() == 2) { memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount() - memberTotalChangeDto.getServiceCount()); memberTotal.setUsedServiceCount(memberTotal.getUsedServiceCount() + memberTotalChangeDto.getServiceCount()); } else { memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + memberTotalChangeDto.getServiceCount()); memberTotal.setTotalServiceCount(memberTotal.getTotalServiceCount() + memberTotalChangeDto.getServiceCount()); } } //跟进时间 if (memberTotalChangeDto.getNextTaskTime() != null) { memberTotal.setNextTaskTime(memberTotalChangeDto.getNextTaskTime()); } //活动次数变动 if (memberTotalChangeDto.getActivityTime() != null) { memberTotal.setTotalActivityCount(memberTotal.getTotalActivityCount() + 1); memberTotal.setLastActivityTime(memberTotalChangeDto.getActivityTime()); } //订单数量变动 if (memberTotalChangeDto.getCycleOrderChange() != null) { memberTotal.setTotalCycleOrder(memberTotal.getTotalCycleOrder() + memberTotalChangeDto.getCycleOrderChange()); } if (memberTotalChangeDto.getExperienceOrderChange() != null) { memberTotal.setTotalExperienceOrder(memberTotal.getTotalExperienceOrder() + memberTotalChangeDto.getExperienceOrderChange()); } if (memberTotalChangeDto.getServiceOrderChange() != null) { memberTotal.setTotalServiceOrder(memberTotal.getTotalServiceOrder() + memberTotalChangeDto.getServiceOrderChange()); } if (memberTotalChangeDto.getGoodsOrderChange() != null) { memberTotal.setTotalGoodsOrder(memberTotal.getTotalGoodsOrder() + memberTotalChangeDto.getGoodsOrderChange()); } memberTotalService.saveOrUpdate(memberTotal); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberTotalServiceImpl.java
@@ -5,6 +5,7 @@ import com.ruoyi.member.mapper.member.MemberTotalMapper; import com.ruoyi.member.service.member.MemberTotalService; import com.ruoyi.system.api.domain.dto.MemberTotalChangeDto; import com.ruoyi.system.api.domain.poji.member.Member; import org.springframework.stereotype.Service; /** @@ -19,65 +20,5 @@ public class MemberTotalServiceImpl extends ServiceImpl<MemberTotalMapper, MemberTotal> implements MemberTotalService { /** * @description 会员统计变动 * @author jqs * @date 2023/6/28 14:34 * @param memberTotalChangeDto * @return void */ @Override public void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto){ MemberTotal memberTotal = this.getById(memberTotalChangeDto.getMemberId()); //积分变动 if(memberTotalChangeDto.getChangeIntegral()!=null){ if(memberTotalChangeDto.getTypeIntegral()==2){ memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()-memberTotalChangeDto.getChangeIntegral()); memberTotal.setUsedIntegral(memberTotal.getUsedIntegral()+memberTotalChangeDto.getChangeIntegral()); }else{ memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+memberTotalChangeDto.getChangeIntegral()); memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+memberTotalChangeDto.getChangeIntegral()); } } //消费变动 if(memberTotalChangeDto.getPayMoney()!=null){ memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney())); memberTotal.setTotalPayCount(memberTotal.getTotalPayCount()+1); memberTotal.setLastPayMoney(memberTotalChangeDto.getPayMoney()); memberTotal.setLastPayTime(memberTotalChangeDto.getPayTime()); } //服务次数变动 if(memberTotalChangeDto.getServiceCount()!=null){ if(memberTotalChangeDto.getTypeService()==2){ memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount()-memberTotalChangeDto.getServiceCount()); memberTotal.setUsedServiceCount(memberTotal.getUsedServiceCount()+memberTotalChangeDto.getServiceCount()); }else{ memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+memberTotalChangeDto.getServiceCount()); memberTotal.setTotalServiceCount(memberTotal.getTotalServiceCount()+memberTotalChangeDto.getServiceCount()); } } //跟进时间 if(memberTotalChangeDto.getNextTaskTime()!=null){ memberTotal.setNextTaskTime(memberTotalChangeDto.getNextTaskTime()); } //活动次数变动 if(memberTotalChangeDto.getActivityTime()!=null){ memberTotal.setTotalActivityCount(memberTotal.getTotalActivityCount()+1); memberTotal.setLastActivityTime(memberTotalChangeDto.getActivityTime()); } //订单数量变动 if(memberTotalChangeDto.getCycleOrderChange()!=null){ memberTotal.setTotalCycleOrder(memberTotal.getTotalCycleOrder()+memberTotalChangeDto.getCycleOrderChange()); } if(memberTotalChangeDto.getExperienceOrderChange()!=null){ memberTotal.setTotalExperienceOrder(memberTotal.getTotalExperienceOrder()+memberTotalChangeDto.getExperienceOrderChange()); } if(memberTotalChangeDto.getServiceOrderChange()!=null){ memberTotal.setTotalServiceOrder(memberTotal.getTotalServiceOrder()+memberTotalChangeDto.getServiceOrderChange()); } if(memberTotalChangeDto.getGoodsOrderChange()!=null){ memberTotal.setTotalGoodsOrder(memberTotal.getTotalGoodsOrder()+memberTotalChangeDto.getGoodsOrderChange()); } this.saveOrUpdate(memberTotal); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveFieldsService.java
@@ -3,6 +3,9 @@ import com.ruoyi.member.domain.dto.MgtArchiveFieldsEditDto; import com.ruoyi.member.domain.pojo.member.MemberArchiveFields; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.member.domain.vo.MgtArchiveFieldsListVo; import java.util.List; /** * <p> @@ -14,6 +17,9 @@ */ public interface MemberArchiveFieldsService extends IService<MemberArchiveFields> { /** * @description 编辑会员档案字段 * @author jqs @@ -22,4 +28,13 @@ * @return void */ void editMemberArchiveFields(MgtArchiveFieldsEditDto mgtArchiveFieldsEditDto); /** * @description 平台获取档案字段 * @author jqs * @date 2023/6/30 9:39 * @param * @return List<MgtArchiveFieldsListVo> */ List<MgtArchiveFieldsListVo> listMgtArchiveFields(); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveService.java
@@ -17,9 +17,18 @@ public interface MemberArchiveService extends IService<MemberArchive> { /** * 获取用户档案 * 获取用户档案去除空信息 * @param userId * @return */ List<MemberArchiveVo> listVoByUserId(Long userId); List<MemberArchiveVo> listMgtVoByUserId(Long userId); /** * @description * @author jqs * @date 2023/6/30 11:20 * @param userId * @return List<MemberArchiveVo> */ List<MemberArchiveVo> listMerVoByUserId(Long userId); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
@@ -42,4 +42,14 @@ * @return MerVerifyCouponGetVo */ MerVerifyCouponGetVo sureVerifyCoupon(String memberCouponId); /** * @description * @author jqs * @date 2023/6/29 11:43 * @param userId * @param couponId * @return Integer */ Integer totalMemberCouponByUserAndCoupon(Long userId,String couponId); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
@@ -71,7 +71,7 @@ * @date 2023/5/4 23:55 * @version 1.0 */ MerMemberInfoVo getMerMemberInfo(Long userId); MerMemberInfoVo getMerMemberInfo( MerBaseGetDto merBaseGetDto); /** * 分页获取收银会员列表 @@ -266,4 +266,14 @@ * @return MgtShopTotalMemberVo */ MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList); /** * @description 会员统计变动 * @author jqs * @date 2023/6/28 14:34 * @param memberTotalChangeDto * @return void */ void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberTotalService.java
@@ -14,13 +14,6 @@ */ public interface MemberTotalService extends IService<MemberTotal> { /** * @description 会员统计变动 * @author jqs * @date 2023/6/28 14:34 * @param memberTotalChangeDto * @return void */ void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto); } ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
@@ -253,4 +253,9 @@ AND tc.create_time <= #{param.createEndTime} </if> </select> <update id="updateCouponTotal"> UPDATE t_coupon_total set send_count = send_count + #{sendTotal}, send_user_count = send_user_count + sendPerson WHERE coupon_id = #{couponId} </update> </mapper> ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveFieldsMapper.xml
@@ -81,4 +81,17 @@ </foreach> </delete> <select id="listMgtArchiveFields" resultType="com.ruoyi.member.domain.vo.MgtArchiveFieldsListVo"> SELECT id afId, field_name fieldName, required_flag requiredFlag, field_sort fieldSort, field_type fieldType, input_tip inputTip, option_values optionValues FROM t_member_archive_fields WHERE del_flag = 0 ORDER BY field_sort DESC </select> </mapper> ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveMapper.xml
@@ -66,7 +66,7 @@ </foreach> </delete> <select id="listVoByUserId" resultType="com.ruoyi.member.domain.vo.MemberArchiveVo"> <select id="listMgtVoByUserId" resultType="com.ruoyi.member.domain.vo.MemberArchiveVo"> SELECT tmaf.id fieldId, tmaf.field_name fieldName, @@ -77,4 +77,14 @@ ORDER BY tmaf.field_sort DESC </select> <select id="listMerVoByUserId" resultType="com.ruoyi.member.domain.vo.MemberArchiveVo"> SELECT tmaf.id fieldId, tmaf.field_name fieldName, tma.field_value fieldValue FROM t_member_archive_fields tmaf LEFT JOIN t_member_archive tma ON tma.field_id = tmaf.id AND tma.user_id = #{userId} AND tma.del_flag = 0 WHERE tmaf.del_flag = 0 ORDER BY tmaf.field_sort DESC </select> </mapper> ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -161,9 +161,13 @@ tm.user_tags userTags, tm.goods_type goodsType FROM t_member tm INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id WHERE tm.relation_shop_id = #{param.shopId} <if test="param.memberGender != null and param.memberGender != ''"> AND tm.gender = #{param.memberGender} </if> <if test="param.memberType != null and param.memberType != ''"> AND FIND_IN_SET(#{param.memberType},tm.goods_type) > 0 </if> <if test="param.memberTag != null and param.memberTag != ''"> AND FIND_IN_SET(#{param.memberTag},tm.user_tags) > 0 @@ -173,6 +177,27 @@ </if> <if test="param.endMemberDate!=null and param.endMemberDate!=''"> AND tm.create_time <= #{param.endMemberDate} </if> <if test="param.memberFrom != null and param.memberFrom != ''"> AND tm.customer_source = #{param.memberFrom} </if> <if test="param.taskStartDate!=null and param.taskStartDate!=''"> AND tmt.next_task_time >= #{param.taskStartDate} </if> <if test="param.taskEndDate!=null and param.taskEndDate!=''"> AND tmt.next_task_time <= #{param.taskEndDate} </if> <if test="param.surpNum != null and param.surpNum != ''"> AND tmt.useable_service_count = #{param.surpNum} </if> <if test="param.memberNurse != null and param.memberNurse != ''"> AND FIND_IN_SET(#{param.memberNurse},tm.member_nurse) > 0 </if> <if test="param.actStartDate!=null and param.actStartDate!=''"> AND tmt.last_pay_time >= #{param.actStartDate} </if> <if test="param.actEndDate!=null and param.actEndDate!=''"> AND tmt.last_pay_time <= #{param.actEndDate} </if> <if test="param.keyword != null and param.keyword != ''"> AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tm.referrer LIKE CONCAT('%',#{param.keyword},'%')) @@ -381,7 +406,7 @@ </if> </select> <select id="getTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT member_nurse mapKey, COUNT(*) mapValue FROM ( SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(member_nurse, ',', numbers.n), ',', -1) member_nurse @@ -401,7 +426,7 @@ GROUP BY member_nurse </select> <select id="getTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT goods_type mapKey, COUNT(*) mapValue FROM ( SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(goods_type, ',', numbers.n), ',', -1) goods_type @@ -438,7 +463,7 @@ </if> </select> <select id="getTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT tm.nick_name mapKey, tmt.total_pay_count mapValue @@ -457,7 +482,7 @@ ORDER BY tmt.total_pay_count DESC LIMIT 15 </select> <select id="getTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT tm.customer_source mapKey, COUNT(tm.user_id) mapValue @@ -534,7 +559,7 @@ </if> </select> <select id="getPlTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getPlTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT member_nurse mapKey, COUNT(*) mapValue FROM ( SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(member_nurse, ',', numbers.n), ',', -1) member_nurse @@ -557,7 +582,7 @@ GROUP BY member_nurse </select> <select id="getPlTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getPlTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT goods_type mapKey, COUNT(*) mapValue FROM ( SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(goods_type, ',', numbers.n), ',', -1) goods_type @@ -600,7 +625,7 @@ </if> </select> <select id="getPlTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getPlTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT tm.nick_name mapKey, tmt.total_pay_count mapValue @@ -622,7 +647,7 @@ ORDER BY tmt.total_pay_count DESC LIMIT 15 </select> <select id="getPlTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getPlTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT tm.customer_source mapKey, COUNT(tm.user_id) mapValue @@ -643,7 +668,7 @@ ORDER BY COUNT(tm.user_id) DESC LIMIT 15 </select> <select id="getPlTotalMemberRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getPlTotalMemberRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT tm.relation_shop_name mapKey, COUNT(tm.user_id) mapValue ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java
@@ -2,17 +2,19 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.domain.dto.MerBaseDto; 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.domain.vo.MgtMapIntTotalVo; 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.math.BigDecimal; import java.util.List; /** @@ -66,11 +68,25 @@ * @author jqs * @date 2023/6/21 15:27 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> */ @PostMapping("/listMemberGoodsRank") public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto){ List<MgtMapTotalVo> memberGoodsRankList = orderService.listMemberGoodsRank(mgtBasePlatformDto); public R<List<MgtMapIntTotalVo>> listMemberGoodsRank(@RequestBody MgtBasePlatformDto mgtBasePlatformDto){ List<MgtMapIntTotalVo> memberGoodsRankList = orderService.listMemberGoodsRank(mgtBasePlatformDto); return R.ok(memberGoodsRankList); } /** * @description 获取用户未支付金额 * @author jqs * @date 2023/6/29 18:00 * @param merBaseDto * @return R<BigDecimal> */ @PostMapping("/getMemberUnpaidOrder") public R<BigDecimal> getMemberUnpaidOrder(@RequestBody MerBaseDto merBaseDto){ BigDecimal unpaidMoney = orderService.getMemberUnpaidOrder(merBaseDto); return R.ok(unpaidMoney); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyCouponDto.java
@@ -1,6 +1,6 @@ package com.ruoyi.order.domain.dto; import com.ruoyi.system.api.domain.dto.MgtBaseDto; import com.ruoyi.system.api.domain.dto.MerBaseDto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -12,7 +12,7 @@ * @Version 1.0 */ @Data public class MerVerifyCouponDto extends MgtBaseDto { public class MerVerifyCouponDto extends MerBaseDto { @ApiModelProperty(value = "优惠券id") private String memberCouponId; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberConsumerGoodsTotalVo.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.order.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @ClassName MerMemberConsumerGoodsTotalVo * @Description TODO * @Author jqs * @Date 2023/6/29 15:10 * @Version 1.0 */ @Data public class MerMemberConsumerGoodsTotalVo { @ApiModelProperty(value = "周期订单") private Integer cycleOrder; @ApiModelProperty(value = "体验订单") private Integer experienceOrder; @ApiModelProperty(value = "服务订单") private Integer serviceOrder; @ApiModelProperty(value = "单品订单") private Integer goodsOrder; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
@@ -1,7 +1,7 @@ package com.ruoyi.order.domain.vo; import com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -64,13 +64,13 @@ private BigDecimal[] orderMoneyValue; @ApiModelProperty(value = "商品类型数量") private List<MgtMapTotalVo> goodsTypeTotalList; private List<MgtMapIntTotalVo> goodsTypeTotalList; @ApiModelProperty(value = "商品类型金额") private List<MgtMapBigTotalVo> goodsTypeMoneyList; @ApiModelProperty(value = "活动次数排行") private List<MgtMapTotalVo> activityRankList; private List<MgtMapIntTotalVo> activityRankList; @ApiModelProperty(value = "活动次数排行") private List<MgtMapBigTotalVo> shopSalesRankList; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
@@ -1,7 +1,7 @@ package com.ruoyi.order.domain.vo; import com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -64,7 +64,7 @@ private BigDecimal[] orderMoneyValue; @ApiModelProperty(value = "商品类型数量") private List<MgtMapTotalVo> goodsTypeTotalList; private List<MgtMapIntTotalVo> goodsTypeTotalList; @ApiModelProperty(value = "商品类型金额") private List<MgtMapBigTotalVo> goodsTypeMoneyList; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java
@@ -1,7 +1,7 @@ package com.ruoyi.order.domain.vo; import com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -70,7 +70,7 @@ private BigDecimal[] orderMoneyValue; @ApiModelProperty(value = "商品类型数量") private List<MgtMapTotalVo> goodsTypeTotalList; private List<MgtMapIntTotalVo> goodsTypeTotalList; @ApiModelProperty(value = "商品类型金额") private List<MgtMapBigTotalVo> goodsTypeMoneyList; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java
@@ -1,13 +1,14 @@ package com.ruoyi.order.mapper.order; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.order.domain.dto.AppConsumerPageDto; import com.ruoyi.order.domain.dto.MerConsumerGoodsDto; import com.ruoyi.order.domain.dto.MerConsumerGoodsPageDto; import com.ruoyi.order.domain.pojo.order.ConsumerGoods; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.domain.vo.AppConsumerPageVo; import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo; import com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -51,4 +52,14 @@ * @return */ List<MerConsumerGoodsListVo> pageMerConsumerGoodsNum(Page page,@Param("param") MerConsumerGoodsPageDto merConsumerGoodsPageDto); /** * @description 获取用户在商户 * @author jqs * @date 2023/6/29 15:13 * @param userId * @param shopId * @return MerMemberConsumerGoodsTotalVo */ MerMemberConsumerGoodsTotalVo getMemberConsumerGoodsTotalVo(@Param("userId") Long userId,@Param("shopId") Long shopId); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -5,14 +5,11 @@ import com.ruoyi.order.domain.dto.*; 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.dto.MgtPlActivityAgeDto; import com.ruoyi.system.api.domain.dto.*; 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 com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; @@ -166,7 +163,7 @@ /** * @description listTotalOrderTotal * @param mgtBaseShopDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -175,7 +172,7 @@ /** * @description listTotalOrderTotalGoodsType * @param mgtBaseShopDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -185,7 +182,7 @@ /** * @description listTotalOrderTotalGoodsRank * @param mgtBaseShopDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -194,7 +191,7 @@ /** * @description listTotalOrderTotalOrderFrom * @param mgtBaseShopDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -214,7 +211,7 @@ /** * @description listTotalActivityTotalGoodsType * @param mgtBaseShopDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -224,7 +221,7 @@ /** * @description listTotalActivityTotal * @param mgtBaseShopDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -246,7 +243,7 @@ * @param mgtActivityAgeDto * @return MgtTotalActivityTotalVo */ List<MgtMapTotalVo> getTotalActivityAgeRank(@Param("param")MgtActivityAgeDto mgtActivityAgeDto); List<MgtMapIntTotalVo> getTotalActivityAgeRank(@Param("param")MgtActivityAgeDto mgtActivityAgeDto); /** * @description @@ -280,9 +277,9 @@ * @author jqs * @date 2023/6/21 15:27 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> */ List<MgtMapTotalVo> listMemberGoodsRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> listMemberGoodsRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** @@ -306,7 +303,7 @@ /** * @description listTotalOrderTotal * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -315,7 +312,7 @@ /** * @description listTotalOrderTotalGoodsType * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -325,7 +322,7 @@ /** * @description listTotalOrderTotalGoodsRank * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -334,7 +331,7 @@ /** * @description listTotalOrderTotalOrderFrom * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -353,7 +350,7 @@ /** * @description listTotalActivityTotalGoodsType * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -363,7 +360,7 @@ /** * @description listTotalActivityTotal * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -385,12 +382,12 @@ * @param mgtActivityAgeDto * @return MgtTotalActivityTotalVo */ List<MgtMapTotalVo> getPlTotalActivityAgeRank(@Param("param")MgtPlActivityAgeDto mgtActivityAgeDto); List<MgtMapIntTotalVo> getPlTotalActivityAgeRank(@Param("param")MgtPlActivityAgeDto mgtActivityAgeDto); /** * @description listPlTotalShopActivityRank * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -399,7 +396,7 @@ /** * @description listTotalActivityTotal * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -408,7 +405,7 @@ /** * @description listTotalActivityTotal * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ @@ -431,4 +428,14 @@ * @return BigDecimal */ BigDecimal shopSalesTotal(@Param("param")MgtBaseShopDto mgtBaseShopDto); /** * @description 获取用户未支付金额 * @author jqs * @date 2023/6/29 18:00 * @param merBaseDto * @return BigDecimal */ BigDecimal getMemberUnpaidOrder(@Param("param")MerBaseDto merBaseDto); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
@@ -11,10 +11,15 @@ import com.ruoyi.order.domain.vo.AppConsumerPageVo; import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo; import com.ruoyi.order.domain.vo.MerConsumerGoodsVo; import com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo; import com.ruoyi.order.mapper.order.ConsumerGoodsMapper; import com.ruoyi.order.service.order.ConsumerGoodsService; import com.ruoyi.order.service.order.UserServiceRecordService; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.domain.dto.MemberTotalChangeDto; import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto; import com.ruoyi.system.api.service.RemoteMemberService; import com.ruoyi.system.api.service.RemoteShopService; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -37,6 +42,13 @@ @Resource private UserServiceRecordService userServiceRecordService; @Resource private RemoteMemberService remoteMemberService; @Resource private RemoteShopService remoteShopService; /** * 获取用户服务 * @param page @@ -74,12 +86,63 @@ List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList(); if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){ ConsumerGoods consumerGoods; Integer serviceCount = 0; Integer cycleService = 0; Integer cyclePerson = 0; Integer serviceService = 0; Integer servicePerson = 0; Integer experienceService = 0; Integer experiencePerson = 0; MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getUserId(), merSureConsumerGoodsDto.getShopId()); for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){ consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId()); consumerGoods.setCycleNumFlag(1); consumerGoods.setServiceNum(merSureConsumerGoodsListDto.getServiceNum()); this.saveOrUpdate(consumerGoods); //处理商品服务次数 switch (consumerGoods.getGoodsType()) { case 1: cycleService = cycleService + consumerGoods.getServiceNum(); break; case 2: serviceService = serviceService + consumerGoods.getServiceNum(); break; case 3: experienceService = experienceService + consumerGoods.getServiceNum(); break; default: break; } } //判断是否加人 if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) { cyclePerson = 1; } if (serviceService > 0 && memberConsumerGoodsTotalVo.getServiceOrder() == 0) { servicePerson = 1; } if (experienceService > 0 && memberConsumerGoodsTotalVo.getExperienceOrder() == 0) { experiencePerson = 1; } serviceCount = cycleService + serviceService + experienceService; //更新商户和会员服务统计 MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); memberTotalChangeDto.setUserId(merSureConsumerGoodsDto.getUserId()); memberTotalChangeDto.setTypeService(1); memberTotalChangeDto.setServiceCount(serviceCount); remoteMemberService.changeMemberTotal(memberTotalChangeDto); ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); shopTotalChangeDto.setShopId(merSureConsumerGoodsDto.getShopId()); shopTotalChangeDto.setTypeCycleService(1); shopTotalChangeDto.setCycleService(cycleService); shopTotalChangeDto.setCyclePerson(cyclePerson); shopTotalChangeDto.setTypeServiceService(1); shopTotalChangeDto.setServiceService(serviceService); shopTotalChangeDto.setServicePerson(servicePerson); shopTotalChangeDto.setTypeExperienceService(1); shopTotalChangeDto.setExperienceService(experienceService); shopTotalChangeDto.setExperiencePerson(experiencePerson); remoteShopService.changeShopTotal(shopTotalChangeDto); } } @@ -89,62 +152,118 @@ */ @Override public void useMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){ List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList(); if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){ ConsumerGoods consumerGoods; List<MerSureConsumerGoodsListDto> goodsList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList(); if (goodsList != null && !goodsList.isEmpty()) { ConsumerGoods goods; Integer serviceNum; Integer usedNum; Integer useNum; Integer surpNum; Integer surplusNum; Long shopId = null; Long userId = null; String consumerGoodsNames = ""; String consumerGoodsIds = ""; String goodsNames = ""; String goodsIds = ""; Integer serviceType = 1; for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){ consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId()); serviceNum = consumerGoods.getServiceNum(); usedNum = consumerGoods.getUsedNum(); surpNum = serviceNum - usedNum; useNum = merSureConsumerGoodsListDto.getServiceNum(); if(useNum>surpNum){ Integer serviceCount = 0; Integer cycleService = 0; Integer cyclePerson = 0; Integer serviceService = 0; Integer servicePerson = 0; Integer experienceService = 0; Integer experiencePerson = 0; //获取会员商品总数 MerMemberConsumerGoodsTotalVo memberGoodsTotal = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getUserId(), merSureConsumerGoodsDto.getShopId()); for (MerSureConsumerGoodsListDto goodsDto : goodsList) { goods = this.getById(goodsDto.getConsumerGoodsId()); serviceNum = goods.getServiceNum(); usedNum = goods.getUsedNum(); surplusNum = serviceNum - usedNum; useNum = goodsDto.getServiceNum(); //判断使用数量是否超过剩余数量 if (useNum > surplusNum) { throw new ServiceException(AppErrorConstant.BEYOND_SURP_NUM); } consumerGoods.setUsedNum(usedNum+useNum); consumerGoods.setUseTime(new Date()); if(consumerGoods.getUsedNum().equals(serviceNum)){ consumerGoods.setServiceStatus(2); consumerGoods.setCompleteTime(new Date()); goods.setUsedNum(usedNum + useNum); goods.setUseTime(new Date()); //判断商品是否已使用完 if (goods.getUsedNum().equals(serviceNum)) { goods.setServiceStatus(2); goods.setCompleteTime(new Date()); } this.saveOrUpdate(consumerGoods); shopId = consumerGoods.getShopId(); userId= consumerGoods.getUserId(); serviceType = consumerGoods.getGoodsType(); if(StringUtils.isBlank(consumerGoodsIds)){ consumerGoodsIds = consumerGoods.getConsumerGoodsId(); }else{ consumerGoodsIds = consumerGoodsIds + "," + consumerGoods.getConsumerGoodsId(); this.saveOrUpdate(goods); shopId = goods.getShopId(); userId = goods.getUserId(); serviceType = goods.getGoodsType(); //拼接商品ID if (StringUtils.isBlank(goodsIds)) { goodsIds = goods.getConsumerGoodsId(); } else { goodsIds = goodsIds + "," + goods.getConsumerGoodsId(); } if(StringUtils.isBlank(consumerGoodsNames)){ consumerGoodsNames = consumerGoods.getGoodsName(); }else{ consumerGoodsNames = consumerGoodsNames + "、" + consumerGoods.getGoodsName(); //拼接商品名称 if (StringUtils.isBlank(goodsNames)) { goodsNames = goods.getGoodsName(); } else { goodsNames = goodsNames + "、" + goods.getGoodsName(); } //处理商品服务次数 switch (goods.getGoodsType()) { case 1: cycleService = cycleService + useNum; break; case 2: serviceService = serviceService + useNum; break; case 3: experienceService = experienceService + useNum; break; default: break; } } UserServiceRecord userServiceRecord = new UserServiceRecord(); userServiceRecord.setCreateTime(new Date()); userServiceRecord.setServiceType(serviceType); userServiceRecord.setDelFlag(0); userServiceRecord.setShopId(shopId); userServiceRecord.setUserId(userId); userServiceRecord.setConsumerGoodsIds(consumerGoodsIds); userServiceRecord.setConsumerGoodsNames(consumerGoodsNames); userServiceRecordService.saveOrUpdate(userServiceRecord); //判断是否减人 if (cycleService > 0 && memberGoodsTotal.getCycleOrder() - cycleService < 1) { cyclePerson = 1; } if (serviceService > 0 && memberGoodsTotal.getServiceOrder() - serviceService < 1) { servicePerson = 1; } if (experienceService > 0 && memberGoodsTotal.getExperienceOrder() - experienceService < 1) { experiencePerson = 1; } serviceCount = cycleService + serviceService + experienceService; UserServiceRecord serviceRecord = new UserServiceRecord(); serviceRecord.setCreateTime(new Date()); serviceRecord.setServiceType(serviceType); serviceRecord.setDelFlag(0); serviceRecord.setShopId(shopId); serviceRecord.setUserId(userId); serviceRecord.setConsumerGoodsIds(goodsIds); serviceRecord.setConsumerGoodsNames(goodsNames); userServiceRecordService.saveOrUpdate(serviceRecord); //更新商户和会员服务统计 MemberTotalChangeDto memberTotalChange = new MemberTotalChangeDto(); memberTotalChange.setUserId(merSureConsumerGoodsDto.getUserId()); memberTotalChange.setTypeService(2); memberTotalChange.setServiceCount(serviceCount); remoteMemberService.changeMemberTotal(memberTotalChange); ShopTotalChangeDto shopTotalChange = new ShopTotalChangeDto(); shopTotalChange.setShopId(merSureConsumerGoodsDto.getShopId()); shopTotalChange.setTypeCycleService(2); shopTotalChange.setCycleService(cycleService); shopTotalChange.setCyclePerson(cyclePerson); shopTotalChange.setTypeServiceService(2); shopTotalChange.setServiceService(serviceService); shopTotalChange.setServicePerson(servicePerson); shopTotalChange.setTypeExperienceService(2); shopTotalChange.setExperienceService(experienceService); shopTotalChange.setExperiencePerson(experiencePerson); remoteShopService.changeShopTotal(shopTotalChange); } } /** * * 分页获取用户服务次数列表 * @param page * @param merConsumerGoodsPageDto * @return @@ -154,4 +273,17 @@ List<MerConsumerGoodsListVo> merConsumerGoodsListVos = consumerGoodsMapper.pageMerConsumerGoodsNum(page, merConsumerGoodsPageDto); return merConsumerGoodsListVos; } /** * @description 获取用户在商户 * @author jqs * @date 2023/6/29 15:13 * @param userId * @param shopId * @return MerMemberConsumerGoodsTotalVo */ @Override public MerMemberConsumerGoodsTotalVo getMemberConsumerGoodsTotalVo(Long userId, Long shopId){ return consumerGoodsMapper.getMemberConsumerGoodsTotalVo(userId, shopId); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -529,9 +529,13 @@ */ @Override public MerVerifyOrderVo verifyOrder(String orderId) { // 创建返回对象 MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); // 根据订单ID获取订单信息 Order order = this.getById(orderId); // 根据订单ID获取订单商品列表 List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); // 设置返回对象的属性值 merVerifyOrderVo.setOrderId(orderId); merVerifyOrderVo.setOrderNo(order.getOrderNo()); merVerifyOrderVo.setOrderStatus(order.getOrderStatus()); @@ -546,10 +550,12 @@ merVerifyOrderVo.setPayTime(order.getPayTime()); merVerifyOrderVo.setUseTime(order.getUseTime()); merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); // 根据订单用户ID获取用户信息 SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); merVerifyOrderVo.setUserName(sysUser.getNickName()); merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber()); merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); // 返回结果 return merVerifyOrderVo; } @@ -583,11 +589,19 @@ } String goodsIds = goodsIdSj.toString(); List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIds).getData(); Map<String,Goods> goodsMap = goodsList.stream() Map<String, Goods> goodsMap = goodsList.stream() .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); ConsumerGoods consumerGoods; String consumerGoodsId; Goods goods; Integer serviceCount = 0; Integer cycleService = 0; Integer cyclePerson = 0; Integer serviceService = 0; Integer servicePerson = 0; Integer experienceService = 0; Integer experiencePerson = 0; MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = consumerGoodsService.getMemberConsumerGoodsTotalVo(order.getUserId(), order.getShopId()); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { consumerGoods = new ConsumerGoods(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); @@ -611,7 +625,34 @@ consumerGoods.setGoodsNurses(goods.getGoodsNurses()); consumerGoods.setSourceFrom(1); consumerGoodsService.save(consumerGoods); //处理商品服务次数 if (consumerGoods.getCycleNumFlag() == 1) { switch (goods.getGoodsType()) { case 1: cycleService = cycleService + appUserOrderGoodsPageVo.getServiceNum(); break; case 2: serviceService = serviceService + appUserOrderGoodsPageVo.getServiceNum(); break; case 3: experienceService = experienceService + appUserOrderGoodsPageVo.getServiceNum(); break; default: break; } } } //判断是否加人 if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) { cyclePerson = 1; } if (serviceService > 0 && memberConsumerGoodsTotalVo.getServiceOrder() == 0) { servicePerson = 1; } if (experienceService > 0 && memberConsumerGoodsTotalVo.getExperienceOrder() == 0) { experiencePerson = 1; } serviceCount = cycleService + serviceService + experienceService; //生成返回 MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); merVerifyOrderVo.setOrderId(orderId); @@ -631,18 +672,36 @@ SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); merVerifyOrderVo.setUserName(sysUser.getNickName()); merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber()); //更新商户和会员服务统计 MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); memberTotalChangeDto.setUserId(order.getUserId()); memberTotalChangeDto.setTypeService(1); memberTotalChangeDto.setServiceCount(serviceCount); remoteMemberService.changeMemberTotal(memberTotalChangeDto); ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); shopTotalChangeDto.setShopId(order.getShopId()); shopTotalChangeDto.setTypeCycleService(1); shopTotalChangeDto.setCycleService(cycleService); shopTotalChangeDto.setCyclePerson(cyclePerson); shopTotalChangeDto.setTypeServiceService(1); shopTotalChangeDto.setServiceService(serviceService); shopTotalChangeDto.setServicePerson(servicePerson); shopTotalChangeDto.setTypeExperienceService(1); shopTotalChangeDto.setExperienceService(experienceService); shopTotalChangeDto.setExperiencePerson(experiencePerson); remoteShopService.changeShopTotal(shopTotalChangeDto); return merVerifyOrderVo; } /** * @description 确认核销优惠券 * @author jqs * @date 2023/6/28 11:26 * @param merVerifyCouponDto * @return MerVerifyCouponVo * @return MerVerifyCouponVo * @description 确认核销优惠券 * @author jqs * @date 2023/6/28 11:26 */ @Override public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto){ public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) { MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData(); // 创建MerVerifyCouponVo对象 MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo(); @@ -809,6 +868,10 @@ String orderNo = CodeFactoryUtil.getShopOrderNo(); OrderGoods orderGoods; String orderGoodsId; BigDecimal cycleMoney = new BigDecimal("0.00"); BigDecimal experienceMoney = new BigDecimal("0.00"); BigDecimal serviceMoney = new BigDecimal("0.00"); BigDecimal goodsMoney = new BigDecimal("0.00"); for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) { goodsId = appBuyGoodsDto.getGoodsId(); memberCouponId = appBuyGoodsDto.getMemberCouponId(); @@ -877,6 +940,22 @@ orderGoods.setServiceNum(serviceNum); orderGoods.setGoodsType(goods.getGoodsType()); orderGoodsService.save(orderGoods); switch(orderGoods.getGoodsType()){ case 1: cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney()); break; case 2: serviceMoney = serviceMoney.add(orderGoods.getGoodsReceivableMoney()); break; case 3: experienceMoney = experienceMoney.add(orderGoods.getGoodsReceivableMoney()); break; case 4: goodsMoney = goodsMoney.add(orderGoods.getGoodsReceivableMoney()); break; default: break; } } //创建订单 Order order = new Order(); @@ -951,6 +1030,13 @@ appMemberBindingDto.setBindingFlag(1); remoteMemberService.updateMemberBinding(appMemberBindingDto); } ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); shopTotalChangeDto.setShopId(order.getShopId()); shopTotalChangeDto.setCycleMoney(cycleMoney); shopTotalChangeDto.setServiceMoney(serviceMoney); shopTotalChangeDto.setExperienceMoney(experienceMoney); shopTotalChangeDto.setGoodsMoney(goodsMoney); remoteShopService.changeShopTotal(shopTotalChangeDto); } @@ -1374,53 +1460,53 @@ public MgtTotalOrderTotalVo getTotalOrderTotal(MgtBaseShopDto mgtBaseShopDto) { MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getTotalOrderTotalOrderFrom(mgtBaseShopDto); //MgtTotalOrderTotalVo mgtTotalOrderTotalVoGoodsType = orderMapper.getTotalOrderTotalGoodsType(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()]; BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()]; for (int i = 0; i < mgtMapTotalVos.size(); i++) { orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey(); orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond(); List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); } mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey); mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue); mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); } //获取商品分类销售数据 List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto); List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>(); List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto); List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>(); if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { MgtMapTotalVo mgtMapTotalVo; if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { MgtMapIntTotalVo MgtMapIntTotalVo; MgtMapBigTotalVo mgtMapBigTotalVo; // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) { mgtMapTotalVo = new MgtMapTotalVo(); for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { MgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) { mgtMapTotalVo.setMapKey("周期"); MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { MgtMapIntTotalVo.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")) { mgtMapTotalVo.setMapKey("服务"); mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { MgtMapIntTotalVo.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")) { mgtMapTotalVo.setMapKey("体验"); mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { MgtMapIntTotalVo.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")) { mgtMapTotalVo.setMapKey("单品"); mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { MgtMapIntTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapKey("单品"); } goodsTypeTotalList.add(mgtMapTotalVo); goodsTypeTotalList.add(MgtMapIntTotalVo); goodsTypeMoneyList.add(mgtMapBigTotalVo); } mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); @@ -1442,35 +1528,35 @@ } /** * @param mgtMapTotalVos * @return List<MgtMapTotalVo> * @param MgtMapIntTotalVos * @return List<MgtMapIntTotalVo> * @description 去除空字符串 * @author jqs * @date 2023/6/27 17:35 */ 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); private List<MgtMapIntTotalVo> listRemoveNull(List<MgtMapIntTotalVo> MgtMapIntTotalVos) { for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) { MgtMapIntTotalVos.remove(i); } } return mgtMapTotalVos; return MgtMapIntTotalVos; } /** * @param mgtMapTotalVos * @return List<MgtMapTotalVo> * @param MgtMapIntTotalVos * @return List<MgtMapIntTotalVo> * @description 去除空字符串 * @author jqs * @date 2023/6/27 17:35 */ 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); private List<MgtMapBigTotalVo> bigListRemoveNull(List<MgtMapBigTotalVo> MgtMapIntTotalVos) { for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) { MgtMapIntTotalVos.remove(i); } } return mgtMapTotalVos; return MgtMapIntTotalVos; } /** @@ -1485,9 +1571,9 @@ //获取基础统计 MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto); //获取商品分类销售数据 List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto); if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>(); List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto); if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>(); totalActivityTotalVo.setCycleTotal(0); totalActivityTotalVo.setCycleMoney(BigDecimal.ZERO); @@ -1496,49 +1582,49 @@ totalActivityTotalVo.setExperienceTotal(0); totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO); // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 MgtMapTotalVo mgtMapTotalVo; MgtMapIntTotalVo MgtMapIntTotalVo; MgtMapBigTotalVo mgtMapBigTotalVo; // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) { mgtMapTotalVo = new MgtMapTotalVo(); for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { MgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) { mgtMapTotalVo.setMapKey("周期"); MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { MgtMapIntTotalVo.setMapKey("周期"); mgtMapBigTotalVo.setMapKey("周期"); totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond())); } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")) { mgtMapTotalVo.setMapKey("服务"); totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { MgtMapIntTotalVo.setMapKey("服务"); mgtMapBigTotalVo.setMapKey("服务"); totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond())); } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")) { mgtMapTotalVo.setMapKey("体验"); totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { MgtMapIntTotalVo.setMapKey("体验"); mgtMapBigTotalVo.setMapKey("体验"); totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond())); } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")) { mgtMapTotalVo.setMapKey("单品"); totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { MgtMapIntTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapKey("单品"); } goodsTypeTotalList.add(mgtMapTotalVo); goodsTypeTotalList.add(MgtMapIntTotalVo); goodsTypeMoneyList.add(mgtMapBigTotalVo); } totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); } //获取订单分布 List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto); if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) { String[] orderTotalKey = new String[mgtMapTotalVos.size()]; Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()]; for (int i = 0; i < mgtMapTotalVos.size(); i++) { orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey(); orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond(); List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); } totalActivityTotalVo.setOrderTotalKey(orderTotalKey); totalActivityTotalVo.setOrderTotalValue(orderTotalValue); @@ -1560,17 +1646,17 @@ mgtActivityAgeDto.setUserIds(userIds); userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData(); mgtActivityAgeDto.setUserIds(userIds); List<MgtMapTotalVo> ageRankList = orderMapper.getTotalActivityAgeRank(mgtActivityAgeDto); List<MgtMapIntTotalVo> ageRankList = orderMapper.getTotalActivityAgeRank(mgtActivityAgeDto); ageRankList = listRemoveNull(ageRankList); MgtTotalActivityTotalVo totalActivityTotalVo = new MgtTotalActivityTotalVo(); String[] activityAgeKey = new String[ageRankList.size()]; Integer[] activityAgeValue = new Integer[ageRankList.size()]; if (!ageRankList.isEmpty()) { MgtMapTotalVo mgtMapTotalVo; MgtMapIntTotalVo MgtMapIntTotalVo; for (int i = 0; i < ageRankList.size(); i++) { mgtMapTotalVo = ageRankList.get(i); activityAgeKey[i] = mgtMapTotalVo.getMapKey(); activityAgeValue[i] = mgtMapTotalVo.getMapValue(); MgtMapIntTotalVo = ageRankList.get(i); activityAgeKey[i] = MgtMapIntTotalVo.getMapKey(); activityAgeValue[i] = MgtMapIntTotalVo.getMapValue(); } } totalActivityTotalVo.setActivityAgeKey(activityAgeKey); @@ -1600,13 +1686,13 @@ /** * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> * @description * @author jqs * @date 2023/6/21 15:26 */ @Override public List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) { public List<MgtMapIntTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) { return orderMapper.listMemberGoodsRank(mgtBasePlatformDto); } @@ -1681,23 +1767,23 @@ mgtBasePlatformDto.setShopIdList(shopIdList); //获取基础统计 MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto); if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) { String[] orderTotalKey = new String[mgtMapTotalVos.size()]; Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()]; for (int i = 0; i < mgtMapTotalVos.size(); i++) { orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey(); orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond(); List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); } mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey); mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue); mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); } //获取商品分类销售数据 List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto); List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>(); List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto); List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>(); mgtTotalOrderTotalVo.setCycleTotal(0); mgtTotalOrderTotalVo.setCycleMoney(BigDecimal.ZERO); @@ -1705,35 +1791,35 @@ mgtTotalOrderTotalVo.setServiceMoney(BigDecimal.ZERO); mgtTotalOrderTotalVo.setExperienceTotal(0); mgtTotalOrderTotalVo.setExperienceMoney(BigDecimal.ZERO); if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { MgtMapTotalVo mgtMapTotalVo; if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { MgtMapIntTotalVo MgtMapIntTotalVo; MgtMapBigTotalVo mgtMapBigTotalVo; // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) { mgtMapTotalVo = new MgtMapTotalVo(); for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { MgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) { mgtMapTotalVo.setMapKey("周期"); MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { MgtMapIntTotalVo.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")) { mgtMapTotalVo.setMapKey("服务"); mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { MgtMapIntTotalVo.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")) { mgtMapTotalVo.setMapKey("体验"); mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { MgtMapIntTotalVo.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")) { mgtMapTotalVo.setMapKey("单品"); mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { MgtMapIntTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapKey("单品"); } goodsTypeTotalList.add(mgtMapTotalVo); goodsTypeTotalList.add(MgtMapIntTotalVo); goodsTypeMoneyList.add(mgtMapBigTotalVo); } mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); @@ -1783,8 +1869,8 @@ //获取基础统计 MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto); //获取商品分类销售数据 List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listPlTotalActivityTotalGoodsType(mgtBasePlatformDto); List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>(); List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalActivityTotalGoodsType(mgtBasePlatformDto); List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>(); totalActivityTotalVo.setCycleTotal(0); totalActivityTotalVo.setCycleMoney(BigDecimal.ZERO); @@ -1792,32 +1878,32 @@ totalActivityTotalVo.setServiceMoney(BigDecimal.ZERO); totalActivityTotalVo.setExperienceTotal(0); totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO); if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { MgtMapTotalVo mgtMapTotalVo; if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { MgtMapIntTotalVo MgtMapIntTotalVo; MgtMapBigTotalVo mgtMapBigTotalVo; // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) { mgtMapTotalVo = new MgtMapTotalVo(); for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { MgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) { mgtMapTotalVo.setMapKey("周期"); MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { MgtMapIntTotalVo.setMapKey("周期"); mgtMapBigTotalVo.setMapKey("周期"); totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond())); } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")) { mgtMapTotalVo.setMapKey("服务"); totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { MgtMapIntTotalVo.setMapKey("服务"); mgtMapBigTotalVo.setMapKey("服务"); totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond())); } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")) { mgtMapTotalVo.setMapKey("体验"); totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { MgtMapIntTotalVo.setMapKey("体验"); mgtMapBigTotalVo.setMapKey("体验"); totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond())); } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")) { mgtMapTotalVo.setMapKey("单品"); totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { MgtMapIntTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapKey("单品"); } } @@ -1825,15 +1911,15 @@ totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); } //获取订单分布 List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto); if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) { String[] orderTotalKey = new String[mgtMapTotalVos.size()]; Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()]; for (int i = 0; i < mgtMapTotalVos.size(); i++) { orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey(); orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond(); List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); } totalActivityTotalVo.setOrderTotalKey(orderTotalKey); totalActivityTotalVo.setOrderTotalValue(orderTotalValue); @@ -1889,17 +1975,17 @@ mgtActivityAgeDto.setAgeType(mgtPlActivityAgeDto.getAgeType()); userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData(); mgtPlActivityAgeDto.setUserIds(userIds); List<MgtMapTotalVo> ageRankList = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto); List<MgtMapIntTotalVo> ageRankList = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto); ageRankList = listRemoveNull(ageRankList); MgtPlTotalActivityTotalVo plTotalActivityTotalVo = new MgtPlTotalActivityTotalVo(); String[] activityAgeKey = new String[ageRankList.size()]; Integer[] activityAgeValue = new Integer[ageRankList.size()]; if (!ageRankList.isEmpty()) { MgtMapTotalVo mgtMapTotalVo; MgtMapIntTotalVo MgtMapIntTotalVo; for (int i = 0; i < ageRankList.size(); i++) { mgtMapTotalVo = ageRankList.get(i); activityAgeKey[i] = mgtMapTotalVo.getMapKey(); activityAgeValue[i] = mgtMapTotalVo.getMapValue(); MgtMapIntTotalVo = ageRankList.get(i); activityAgeKey[i] = MgtMapIntTotalVo.getMapKey(); activityAgeValue[i] = MgtMapIntTotalVo.getMapValue(); } } plTotalActivityTotalVo.setActivityAgeKey(activityAgeKey); @@ -1941,4 +2027,17 @@ merVerifyCouponVo.setGoodsList(merCouponGoodsList); return merVerifyCouponVo; } /** * @description 获取用户未支付金额 * @author jqs * @date 2023/6/29 18:00 * @param merBaseDto * @return BigDecimal */ @Override public BigDecimal getMemberUnpaidOrder(MerBaseDto merBaseDto){ BigDecimal unpaidMoney = orderMapper.getMemberUnpaidOrder(merBaseDto); return unpaidMoney; } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java
@@ -1,15 +1,16 @@ package com.ruoyi.order.service.order; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.domain.dto.AppConsumerPageDto; import com.ruoyi.order.domain.dto.MerConsumerGoodsDto; import com.ruoyi.order.domain.dto.MerConsumerGoodsPageDto; import com.ruoyi.order.domain.dto.MerSureConsumerGoodsDto; import com.ruoyi.order.domain.pojo.order.ConsumerGoods; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.domain.vo.AppConsumerPageVo; import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo; import com.ruoyi.order.domain.vo.MerConsumerGoodsVo; import com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo; import java.util.List; @@ -57,4 +58,14 @@ * @return */ List<MerConsumerGoodsListVo> pageMerConsumerGoodsNum(Page page, MerConsumerGoodsPageDto merConsumerGoodsPageDto); /** * @description 获取用户在商户 * @author jqs * @date 2023/6/29 15:13 * @param userId * @param shopId * @return MerMemberConsumerGoodsTotalVo */ MerMemberConsumerGoodsTotalVo getMemberConsumerGoodsTotalVo(Long userId, Long shopId); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -9,8 +9,9 @@ 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.domain.vo.MgtMapIntTotalVo; import java.math.BigDecimal; import java.util.List; /** @@ -238,9 +239,9 @@ * @author jqs * @date 2023/6/21 15:27 * @param mgtBasePlatformDto * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> */ List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto); /** * @description 获取平台商户数据统计 @@ -286,4 +287,13 @@ * @return MerVerifyCouponVo */ MerVerifyCouponVo verifyCoupon(String verifyCode); /** * @description 获取用户未支付金额 * @author jqs * @date 2023/6/29 18:00 * @param userId * @return BigDecimal */ BigDecimal getMemberUnpaidOrder(MerBaseDto merBaseDto); } ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml
@@ -193,4 +193,13 @@ AND tcg.goods_type = #{param.goodsType} AND tcg.cycle_num_flag = 1 ORDER BY tcg.create_time DESC </select> <select id="getMemberConsumerGoodsTotalVo" resultType="com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo"> SELECT SUM(CASE WHEN goods_type = 1 THEN service_num - used_num ELSE 0 END) cycleOrder, SUM(CASE WHEN goods_type = 3 THEN service_num - used_num ELSE 0 END) experienceOrder, SUM(CASE WHEN goods_type = 2 THEN service_num - used_num ELSE 0 END) serviceOrder FROM t_consumer_goods tcg WHERE tcg.del_flag = 0 AND tcg.user_id = #{param.memberUserId} AND tcg.shop_id = #{param.shopId} </select> </mapper> ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -774,8 +774,8 @@ <select id="listTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey, COUNT(DISTINCT toc.order_id) AS mapValueFirst, SUM(toc.order_money) AS mapValueSecond, COUNT(DISTINCT order_id) AS mapValueFirst, SUM(order_money) AS mapValueSecond, FROM t_order WHERE @@ -803,7 +803,7 @@ </if> </select> <select id="getTotalActivityAgeRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getTotalActivityAgeRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey, COUNT(DISTINCT user_id) AS mapValue @@ -908,10 +908,10 @@ HAVING DATEDIFF(t2.pay_time, t1.pay_time) > 30) AS temp </select> <select id="listMemberGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="listMemberGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT tog.goods_name mapKey, COUNT(DISTINCT toc.userId) mapValue COUNT(DISTINCT toc.user_id) mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 @@ -928,7 +928,7 @@ AND toc.create_time <= #{param.endDate} </if> GROUP BY tog.goods_name ORDER BY COUNT(DISTINCT toc.userId) DESC LIMIT 15 ORDER BY COUNT(DISTINCT toc.user_id) DESC LIMIT 15 </select> @@ -1143,7 +1143,7 @@ </if> </select> <select id="getPlTotalActivityAgeRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="getPlTotalActivityAgeRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey, COUNT(DISTINCT user_id) AS mapValue @@ -1220,7 +1220,14 @@ SELECT SUM(CASE WHEN order_status = 2 THEN 1 ELSE 0 END) unHandleOrder, SUM(pay_money) shopTurnover FROM t.order FROM t_order WHERE del_flag = 0 AND shopId = #{shopId} </select> <select id="getMemberUnpaidOrder" resultType="java.math.BigDecimal"> SELECT IFNULL(SUM(receivable_money-pay_money),0) FROM t_order WHERE del_flag = 0 AND user_id = #{param.userId} AND shop_id = #{param.shopId} AND order_status IN (1,2) AND close_flag = 0 </select> </mapper> ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
@@ -5,14 +5,15 @@ import com.ruoyi.shop.domain.pojo.shop.ShopRelUser; import com.ruoyi.shop.domain.pojo.shop.ShopStaff; import com.ruoyi.shop.service.shop.*; import com.ruoyi.shop.service.task.MemberTaskService; import com.ruoyi.shop.service.task.ShopTaskService; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto; 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.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo; import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; import com.ruoyi.system.api.domain.vo.ShopRelUserVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.QwH5LoginVo; import com.ruoyi.system.api.model.QwUserDetailDto; import com.ruoyi.system.api.service.RemoteUserService; @@ -57,6 +58,8 @@ @Resource private ShopTotalService shopTotalService; @Resource private MemberTaskService memberTaskService; /** * 企业微信H5登录 @@ -202,4 +205,19 @@ shopTotalService.changeShopTotal(shopTotalChangeDto); return R.ok(); } /** * @description 获取最近任务 * @author jqs * @date 2023/6/29 18:25 * @param userId * @return R<MemberTaskSimpleVo> */ @PostMapping("/getLastMemberTask") public R<MemberTaskSimpleVo> getLastMemberTask(@RequestBody Long userId) { MemberTaskSimpleVo taskSimpleVo = memberTaskService.getLastMemberTask(userId); return R.ok(taskSimpleVo); } } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopTotal.java
@@ -60,8 +60,8 @@ /** * 总体验订单数 */ @TableField("tolta_experience_order") private Integer toltaExperienceOrder; @TableField("total_experience_order") private Integer totalExperienceOrder; /** * 总服务订单数 */ ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java
@@ -1,6 +1,6 @@ package com.ruoyi.shop.domain.vo; import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -44,13 +44,13 @@ private Integer[] ageValue; @ApiModelProperty(value = "合作商类型") private List<MgtMapTotalVo> shopTypeVos; private List<MgtMapIntTotalVo> shopTypeVos; @ApiModelProperty(value = "区域商户排行") private List<MgtMapTotalVo> areaRankVos; private List<MgtMapIntTotalVo> areaRankVos; @ApiModelProperty(value = "合作商状态") private List<MgtMapTotalVo> shopStatusVos; private List<MgtMapIntTotalVo> shopStatusVos; @ApiModelProperty(value = "合作商营业额key") private String[] shopSalesRankKey; @@ -59,5 +59,5 @@ private Integer[] shopSalesRankValue; @ApiModelProperty(value = "合作商推荐") private List<MgtMapTotalVo> shopRecommendVos; private List<MgtMapIntTotalVo> shopRecommendVos; } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
@@ -8,7 +8,7 @@ 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.MgtMapIntTotalVo; import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; import org.apache.ibatis.annotations.Param; @@ -153,43 +153,43 @@ * @author jqs * @date 2023/6/21 17:40 * @param * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> */ List<MgtMapTotalVo> listShopTypeTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> listShopTypeTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description 商户类型统计 * @author jqs * @date 2023/6/21 17:40 * @param * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> */ List<MgtMapTotalVo> listShopStatusTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> listShopStatusTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description 商户类型统计 * @author jqs * @date 2023/6/21 17:40 * @param * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> */ List<MgtMapTotalVo> listShopAreaRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> listShopAreaRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description 商户类型统计 * @author jqs * @date 2023/6/21 17:40 * @param * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> */ List<MgtMapTotalVo> listShopSalesRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> listShopSalesRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); /** * @description 商户类型统计 * @author jqs * @date 2023/6/21 17:40 * @param * @return List<MgtMapTotalVo> * @return List<MgtMapIntTotalVo> */ List<MgtMapTotalVo> listShopRecommendRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> listShopRecommendRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/MemberTaskMapper.java
@@ -5,6 +5,7 @@ import com.ruoyi.shop.domain.dto.MerMemberTaskPageDto; import com.ruoyi.shop.domain.pojo.task.MemberTask; import com.ruoyi.shop.domain.vo.MerMemberTaskPageVo; import com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -36,4 +37,14 @@ * @return Integer */ Integer getMemberIngTotal(@Param("shopId")Long shopId); /** * @description 获取最近任务 * @author jqs * @date 2023/6/29 18:25 * @param * @return MemberTaskSimpleVo */ MemberTaskSimpleVo getLastMemberTask(@Param("userId")Long userId); } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -301,7 +301,7 @@ shopTotal.setTotalActivityCount(0); shopTotal.setTotalOrder(0); shopTotal.setTotalCycleOrder(0); shopTotal.setToltaExperienceOrder(0); shopTotal.setTotalExperienceOrder(0); shopTotal.setTotalServiceOrder(0); shopTotal.setTotalGoodsOrder(0); shopTotal.setTotalServiceCount(0); @@ -850,25 +850,25 @@ plTotalShopTotalVo.setAgeValue(shopTotalMemberVo.getAgeValue()); } //获取商户类型 List<MgtMapTotalVo> shopTypeTotal = shopMapper.listShopTypeTotal(mgtBasePlatformDto); List<MgtMapIntTotalVo> shopTypeTotal = shopMapper.listShopTypeTotal(mgtBasePlatformDto); if (shopTypeTotal != null && shopTypeTotal.size() > 0) { shopTypeTotal = listRemoveNull(shopTypeTotal); plTotalShopTotalVo.setShopTypeVos(shopTypeTotal); } //获取商户状态 List<MgtMapTotalVo> shopStatusTotal = shopMapper.listShopStatusTotal(mgtBasePlatformDto); List<MgtMapIntTotalVo> shopStatusTotal = shopMapper.listShopStatusTotal(mgtBasePlatformDto); if (shopStatusTotal != null && shopStatusTotal.size() > 0) { shopStatusTotal = listRemoveNull(shopStatusTotal); plTotalShopTotalVo.setShopStatusVos(shopStatusTotal); } //获取区域排名 List<MgtMapTotalVo> shopAreaRank = shopMapper.listShopAreaRank(mgtBasePlatformDto); List<MgtMapIntTotalVo> shopAreaRank = shopMapper.listShopAreaRank(mgtBasePlatformDto); if (shopAreaRank != null && shopAreaRank.size() > 0) { shopAreaRank = listRemoveNull(shopAreaRank); plTotalShopTotalVo.setAreaRankVos(shopAreaRank); } //获取销售排名 List<MgtMapTotalVo> shopSalesRank = shopMapper.listShopSalesRank(mgtBasePlatformDto); List<MgtMapIntTotalVo> shopSalesRank = shopMapper.listShopSalesRank(mgtBasePlatformDto); if (shopSalesRank != null && shopSalesRank.size() > 0) { String[] shopSalesKey = new String[shopSalesRank.size()]; Integer[] shopSalesValue = new Integer[shopSalesRank.size()]; @@ -881,7 +881,7 @@ plTotalShopTotalVo.setShopSalesRankValue(shopSalesValue); } //获取推荐 List<MgtMapTotalVo> shopRecommendRank = shopMapper.listShopRecommendRank(mgtBasePlatformDto); List<MgtMapIntTotalVo> shopRecommendRank = shopMapper.listShopRecommendRank(mgtBasePlatformDto); if (shopRecommendRank != null && shopRecommendRank.size() > 0) { shopRecommendRank = listRemoveNull(shopRecommendRank); plTotalShopTotalVo.setShopRecommendVos(shopRecommendRank); @@ -893,16 +893,16 @@ * @description 去除空字符串 * @author jqs * @date 2023/6/27 17:35 * @param mgtMapTotalVos * @return List<MgtMapTotalVo> * @param MgtMapIntTotalVos * @return List<MgtMapIntTotalVo> */ 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); private List<MgtMapIntTotalVo> listRemoveNull(List<MgtMapIntTotalVo> MgtMapIntTotalVos){ for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { if(StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())){ MgtMapIntTotalVos.remove(i); } } return mgtMapTotalVos; return MgtMapIntTotalVos; } /** ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopTotalServiceImpl.java
@@ -7,6 +7,7 @@ import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.locks.Lock; @@ -43,8 +44,98 @@ }); } //更新商户统计实现 private void handleShopTotal(ShopTotalChangeDto shopTotalChangeDto){ ShopTotal shopTotal = this.getById(shopTotalChangeDto.getShopId()); //订单变化 BigDecimal payMoney = BigDecimal.ZERO; Boolean haveOrder = false; if(shopTotalChangeDto.getCycleMoney()!=null){ shopTotal.setTotalCycleMoney(shopTotal.getTotalCycleMoney().add(shopTotalChangeDto.getCycleMoney())); payMoney = payMoney.add(shopTotalChangeDto.getCycleMoney()); shopTotal.setTotalCycleOrder(shopTotal.getTotalCycleOrder()+1); haveOrder = true; } if(shopTotalChangeDto.getExperienceMoney()!=null){ shopTotal.setTotalExperienceMoney(shopTotal.getTotalExperienceMoney().add(shopTotalChangeDto.getExperienceMoney())); payMoney = payMoney.add(shopTotalChangeDto.getExperienceMoney()); shopTotal.setTotalExperienceOrder(shopTotal.getTotalExperienceOrder()+1); haveOrder = true; } if(shopTotalChangeDto.getServiceMoney()!=null){ shopTotal.setTotalServiceMoney(shopTotal.getTotalServiceMoney().add(shopTotalChangeDto.getServiceMoney())); payMoney = payMoney.add(shopTotalChangeDto.getServiceMoney()); shopTotal.setTotalServiceOrder(shopTotal.getTotalServiceOrder()+1); haveOrder = true; } if(shopTotalChangeDto.getGoodsMoney()!=null){ shopTotal.setTotalGoodsMoney(shopTotal.getTotalGoodsMoney().add(shopTotalChangeDto.getGoodsMoney())); payMoney = payMoney.add(shopTotalChangeDto.getGoodsMoney()); shopTotal.setTotalGoodsOrder(shopTotal.getTotalGoodsOrder()+1); haveOrder = true; } if(haveOrder){ shopTotal.setTotalOrderMoney(shopTotal.getTotalOrderMoney().add(payMoney)); shopTotal.setTotalOrder(shopTotal.getTotalOrder()+1); } //活动变化 if(shopTotalChangeDto.getActivityCount()!=null){ shopTotal.setTotalActivityCount(shopTotal.getTotalActivityCount()+shopTotalChangeDto.getActivityCount()); } //服务变化 Integer serviceCount = 0; Boolean haveService = false; if(shopTotalChangeDto.getTypeCycleService()!=null){ if(shopTotalChangeDto.getTypeCycleService()==2){ shopTotal.setUsedCycleService(shopTotal.getUsedCycleService()+shopTotalChangeDto.getCycleService()); shopTotal.setUseableCycleService(shopTotal.getUseableCycleService()-shopTotalChangeDto.getCycleService()); shopTotal.setUseableCyclePerson(shopTotal.getUseableCyclePerson()-shopTotalChangeDto.getCyclePerson()); serviceCount = serviceCount - shopTotalChangeDto.getCycleService(); }else{ shopTotal.setTotalCycleService(shopTotal.getTotalCycleService()+shopTotalChangeDto.getCycleService()); shopTotal.setUseableCycleService(shopTotal.getUseableCycleService()+shopTotalChangeDto.getCycleService()); shopTotal.setTotalCyclePerson(shopTotal.getTotalCyclePerson()+shopTotalChangeDto.getCyclePerson()); serviceCount = serviceCount + shopTotalChangeDto.getCycleService(); } haveService = true; } if(shopTotalChangeDto.getTypeServiceService()!=null){ if(shopTotalChangeDto.getTypeServiceService()==2){ shopTotal.setUsedServiceService(shopTotal.getUsedServiceService()+shopTotalChangeDto.getServiceService()); shopTotal.setUseableServiceService(shopTotal.getUseableServiceService()-shopTotalChangeDto.getServiceService()); shopTotal.setUseableServicePerson(shopTotal.getUseableServicePerson()-shopTotalChangeDto.getServicePerson()); serviceCount = serviceCount - shopTotalChangeDto.getServiceService(); }else{ shopTotal.setTotalServiceService(shopTotal.getTotalServiceService()+shopTotalChangeDto.getServiceService()); shopTotal.setUseableServiceService(shopTotal.getUseableServiceService()+shopTotalChangeDto.getServiceService()); shopTotal.setTotalServicePerson(shopTotal.getTotalServicePerson()+shopTotalChangeDto.getServicePerson()); serviceCount = serviceCount + shopTotalChangeDto.getServiceService(); } haveService = true; } if(shopTotalChangeDto.getTypeExperienceService()!=null){ if(shopTotalChangeDto.getTypeExperienceService()==2){ shopTotal.setUsedExperienceService(shopTotal.getUsedExperienceService()+shopTotalChangeDto.getExperienceService()); shopTotal.setUseableExperienceService(shopTotal.getUseableExperienceService()-shopTotalChangeDto.getExperienceService()); shopTotal.setUseableExperiencePerson(shopTotal.getUseableExperiencePerson()-shopTotalChangeDto.getExperiencePerson()); serviceCount = serviceCount - shopTotalChangeDto.getExperienceService(); }else{ shopTotal.setTotalExperienceService(shopTotal.getTotalExperienceService()+shopTotalChangeDto.getExperienceService()); shopTotal.setUseableExperienceService(shopTotal.getUseableExperienceService()+shopTotalChangeDto.getExperienceService()); shopTotal.setTotalExperiencePerson(shopTotal.getTotalExperiencePerson()+shopTotalChangeDto.getExperiencePerson()); serviceCount = serviceCount + shopTotalChangeDto.getExperienceService(); } haveService = true; } if(haveService){ if(serviceCount<0){ shopTotal.setUsedServiceCount(shopTotal.getUsedServiceCount()+serviceCount); shopTotal.setUseableServiceCount(shopTotal.getUsedServiceCount()+serviceCount); }else{ shopTotal.setTotalServiceCount(shopTotal.getTotalServiceCount()+serviceCount); shopTotal.setUseableServiceCount(shopTotal.getUsedServiceCount()+serviceCount); } } this.saveOrUpdate(shopTotal); } } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
@@ -16,6 +16,7 @@ import com.ruoyi.shop.service.task.MemberTaskService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.shop.service.task.TaskFileService; import com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo; import com.ruoyi.system.api.service.RemoteMemberService; import org.springframework.stereotype.Service; @@ -175,4 +176,15 @@ return memberTaskMapper.getMemberIngTotal(shopId); } /** * @description 获取最近任务 * @author jqs * @date 2023/6/29 18:25 * @param * @return MemberTaskSimpleVo */ @Override public MemberTaskSimpleVo getLastMemberTask(Long userId){ return memberTaskMapper.getLastMemberTask(userId); } } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
@@ -114,7 +114,7 @@ @Override public MgtBulletinBoardVo boardTaskTotal(){ MgtBulletinBoardVo mgtBulletinBoardVo = new MgtBulletinBoardVo(); LambdaQueryWrapper<ShopTask> queryWrapper = new LambdaQueryWrapper(); LambdaQueryWrapper<ShopTask> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ShopTask::getDelFlag,0); queryWrapper.eq(ShopTask::getTaskStatus,1); queryWrapper.eq(ShopTask::getTaskDate,DateUtils.getDate()); ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java
@@ -1,12 +1,13 @@ package com.ruoyi.shop.service.task; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.shop.domain.dto.MerCreateMemberTaskDto; import com.ruoyi.shop.domain.dto.MerFollowMemberTaskDto; import com.ruoyi.shop.domain.dto.MerMemberTaskPageDto; import com.ruoyi.shop.domain.pojo.task.MemberTask; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.shop.domain.vo.MerMemberTaskPageVo; import com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo; import java.util.List; @@ -48,4 +49,13 @@ * @return Integer */ Integer getMemberIngTotal(Long shopId); /** * @description 获取最近任务 * @author jqs * @date 2023/6/29 18:25 * @param * @return MemberTaskSimpleVo */ MemberTaskSimpleVo getLastMemberTask(Long userId); } ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -355,7 +355,7 @@ AND ts.shop_status = 2 </if> <if test="param.shopTags!=null and param.shopTags!=''"> AND tm.shop_tags REGEXP #{param.shopTags} AND ts.shop_tags REGEXP #{param.shopTags} </if> <if test="param.supportingCapacityFlag!=null and param.supportingCapacityFlag!=''"> AND ts.supporting_capacity_flag = #{param.supportingCapacityFlag} @@ -380,7 +380,7 @@ </if> <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 ts.shopNumber LIKE CONCAT('%',#{param.keyword},'%')) OR ts.shopowner_phone LIKE CONCAT('%',#{param.keyword},'%') OR ts.shop_number LIKE CONCAT('%',#{param.keyword},'%')) </if> ORDER BY ts.create_time DESC </select> @@ -607,7 +607,7 @@ </select> <select id="listShopTypeTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="listShopTypeTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT ts.shop_type mapKey, COUNT(ts.shop_id) mapValue @@ -637,7 +637,7 @@ GROUP BY ts.shop_type </select> <select id="listShopStatusTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="listShopStatusTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT ts.shop_custom_status mapKey, COUNT(ts.shop_id) mapValue @@ -667,7 +667,7 @@ GROUP BY ts.shop_custom_status </select> <select id="listShopAreaRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="listShopAreaRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT ts.shop_city_code mapKey, COUNT(ts.shop_id) mapValue @@ -698,7 +698,7 @@ ORDER BY COUNT(ts.shop_id) DESC LIMIT 15 </select> <select id="listShopSalesRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="listShopSalesRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT ts.shop_name mapKey, tst.total_order_money mapValue @@ -729,7 +729,7 @@ ORDER BY tst.total_order_money DESC LIMIT 15 </select> <select id="listShopRecommendRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo"> <select id="listShopRecommendRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT ts.recommend_person mapKey, COUNT(ts.shop_id) mapValue ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
@@ -98,4 +98,13 @@ FROM t_member_task WHERE del_flag = 0 AND task_status = 1 AND shop_id = #{shopId} AND task_date = DATE(NOW()) </select> <select id="getLastMemberTask" resultType="com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo"> SELECT task_date taskDate, task_content taskContent FROM t_member_task WHERE del_flag = 0 AND task_status = 2 AND user_id = #{userId} ORDER BY task_date DESC LIMIT 1 </select> </mapper> ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/business/MerConfigController.java
@@ -52,4 +52,7 @@ recommendCooperationService.recommendCooperation(merRecommendCooperationDto); return R.ok(); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
@@ -130,4 +130,17 @@ return R.ok(sysSimpleUserVoList); } /** * @description 通过名称获取活跃度 * @author jqs * @date 2023/6/29 17:20 * @param name * @return R<Activeness> */ @PostMapping("/getActivenessByName") public R<Activeness> getActivenessByName(@RequestBody String name) { Activeness activeness = activenessService.getActivenessByName(name); return R.ok(activeness); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
@@ -87,6 +87,13 @@ return R.ok(mgtCustomConfigVo); } @RequestMapping(value = "/getActivenessList", method = RequestMethod.POST) @ApiOperation(value = "获取活跃度") public R<List<String>> getActivenessList() { List<String> activenessList = activenessService.getActivenessList(); return R.ok(activenessList); } @RequestMapping(value = "/editCooperation", method = RequestMethod.POST) @Log(title = "申请合作管理", businessType = BusinessType.UPDATE,operContent = "修改申请合作") @ApiOperation(value = "修改申请合作") ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/ActivenessService.java
@@ -42,4 +42,22 @@ */ void deleteMgtActiveness(MgtBaseGetDto mgtBaseGetDto); /** * @description 获取活跃度list * @author jqs * @date 2023/6/29 17:12 * @param * @return List<String> */ List<String> getActivenessList(); /** * @description 通过名称获取活跃度 * @author jqs * @date 2023/6/29 17:18 * @param activenessName * @return Activeness */ Activeness getActivenessByName(String activenessName); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/ActivenessServiceImpl.java
@@ -12,6 +12,7 @@ import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * <p> @@ -79,4 +80,34 @@ activeness.setUpdateUserId(mgtBaseGetDto.getUserId()); this.saveOrUpdate(activeness); } /** * @description 获取活跃度list * @author jqs * @date 2023/6/29 17:12 * @param * @return List<String> */ @Override public List<String> getActivenessList(){ List<Activeness> activenessList = activenessMapper.selectList(new LambdaQueryWrapper<Activeness>().eq(Activeness::getDelFlag, 0)); List<String> nameList = activenessList.stream().map(activeness ->{ String name = activeness.getActivenessName(); return name; }).collect(Collectors.toList()); return nameList; } /** * @description 通过名称获取活跃度 * @author jqs * @date 2023/6/29 17:18 * @param activenessName * @return Activeness */ @Override public Activeness getActivenessByName(String activenessName){ Activeness activeness = this.getOne(new LambdaQueryWrapper<Activeness>().eq(Activeness::getDelFlag, 0).eq(Activeness::getActivenessName, activenessName),false); return activeness; } }