| | |
| | | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | |
| | | import com.ruoyi.member.domain.pojo.member.MemberTotal; |
| | | import com.ruoyi.member.domain.vo.*; |
| | | import com.ruoyi.member.mapper.member.MemberMapper; |
| | | import com.ruoyi.member.service.member.*; |
| | | import com.ruoyi.member.service.member.IntegralRecordService; |
| | | import com.ruoyi.member.service.member.MemberArchiveService; |
| | | import com.ruoyi.member.service.member.MemberService; |
| | | import com.ruoyi.member.service.member.MemberTotalService; |
| | | import com.ruoyi.member.util.HttpUtils; |
| | | import com.ruoyi.system.api.constant.AppErrorConstant; |
| | | import com.ruoyi.system.api.constant.SecurityConstant; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | |
| | | @Resource |
| | | private RemoteOrderService orderService; |
| | | |
| | | @Resource |
| | | private MemberNurseService memberNurseService; |
| | | |
| | | @Resource |
| | | private RemoteConfigService remoteConfigService; |
| | |
| | | String errcode = jsonUserPhoneNumber.getString("errcode"); |
| | | String errmsg = jsonUserPhoneNumber.getString("errmsg"); |
| | | if (!"0".equals(errcode)) { |
| | | throw new ServiceException(errmsg); |
| | | //因为生产测试差异,临时更新token |
| | | redisService.deleteObject(SecurityConstant.WX_TOKEN); |
| | | String responseAccessToken = getAccessTokenByWX(); |
| | | JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken); |
| | | accessToken = jsonAccessToken.getString("access_token"); |
| | | errmsg = jsonAccessToken.getString("errmsg"); |
| | | Long expiresIn = jsonAccessToken.getLong("expires_in"); |
| | | if (StringUtils.isBlank(accessToken)) { |
| | | throw new ServiceException(errmsg); |
| | | } else { |
| | | expiresIn = expiresIn - 100; |
| | | redisService.setCacheObject(SecurityConstant.WX_TOKEN, accessToken, Long.valueOf(expiresIn), TimeUnit.SECONDS); |
| | | } |
| | | responseUserPhoneNumber = getMobileByWX(accessToken, appUserRegisterDto.getMobileCode()); |
| | | jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber); |
| | | errcode = jsonUserPhoneNumber.getString("errcode"); |
| | | errmsg = jsonUserPhoneNumber.getString("errmsg"); |
| | | if (!"0".equals(errcode)) { |
| | | throw new ServiceException(errmsg); |
| | | } |
| | | } |
| | | String phoneInfo = jsonUserPhoneNumber.getString("phone_info"); |
| | | JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo); |
| | |
| | | sysUser.setUserName(memberId); |
| | | sysUser.setUserType("03"); |
| | | sysUser.setNickName("鸿瑞堂用户"); |
| | | sysUser.setPhonenumber(mobile); |
| | | sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); |
| | | String password = "hongruitang"; |
| | | sysUser.setPassword(SecurityUtils.encryptPassword(password)); |
| | |
| | | member.setMemberNo(memberNo); |
| | | member.setUserId(sysUser.getUserId()); |
| | | member.setDelFlag(0); |
| | | member.setFrozenFlag(0); |
| | | member.setNickName("鸿瑞堂用户"); |
| | | member.setRealName("鸿瑞堂用户"); |
| | | member.setCustomerSource("小程序"); |
| | |
| | | member.setCreateTime(new Date()); |
| | | member.setMobile(mobile); |
| | | initMemberTotal(memberId); |
| | | log.info("sysUser01-----------------" + sysUser.toString()); |
| | | } else { |
| | | sysUser = sysUserService.getSysUser(member.getUserId()).getData(); |
| | | log.info("sysUser02-----------------" + sysUser.toString()); |
| | | } |
| | | member.setWxUnionid(appUserRegisterDto.getWxUnionid()); |
| | | member.setMiniOpenid(appUserRegisterDto.getMiniOpenid()); |
| | | log.info("member-----------------" + member.toString()); |
| | | log.info("member02-----------------" + member.toString()); |
| | | this.saveOrUpdate(member); |
| | | appUserRegisterVo.setMobile(mobile); |
| | | appUserRegisterVo.setNickName(member.getNickName()); |
| | |
| | | AppOrderTotalVo appOrderTotalVo = orderService.getAppOrderTotal(userId).getData(); |
| | | appUserInfoVo.setNoPayCount(appOrderTotalVo.getNoPayCount()); |
| | | appUserInfoVo.setNoUseCount(appOrderTotalVo.getNoUseCount()); |
| | | MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); |
| | | appUserInfoVo.setIntegral(memberTotal.getUseableIntegral()); |
| | | return appUserInfoVo; |
| | | } |
| | | |
| | |
| | | switch (editType) { |
| | | case 1: |
| | | member.setNickName(editValue); |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUserId(appEditUserDto.getUserId()); |
| | | this.saveOrUpdate(member); |
| | | break; |
| | | case 2: |
| | | member.setAvatar(editValue); |
| | | break; |
| | | case 3: |
| | | member.setGender(Integer.valueOf(editValue)); |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUserId(appEditUserDto.getUserId()); |
| | | this.saveOrUpdate(member); |
| | | break; |
| | | case 4: |
| | | member.setBirthday(editValue); |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUserId(appEditUserDto.getUserId()); |
| | | this.saveOrUpdate(member); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUserId(appEditUserDto.getUserId()); |
| | | this.saveOrUpdate(member); |
| | | sysUserService.editUserInfo(appEditUserDto); |
| | | } |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto) { |
| | | List<Activeness> activenessList = remoteConfigService.listActiveness().getData(); |
| | | 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); |
| | | if(!activenessList.isEmpty()){ |
| | | for(Activeness activeness : activenessList){ |
| | | if(activeness.getActivenessName().equals(merMemberPageDto.getMemberActiveness())){ |
| | | 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); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page, merMemberPageDto); |
| | | //处理活跃度返回 |
| | | if (merMemberPageVoList != null && !merMemberPageVoList.isEmpty()) { |
| | | if (activenessList != null && !activenessList.isEmpty()) { |
| | | //生成活跃度时间段列表 |
| | | List<MgtActivenessJudgeVo> mgtActivenessJudgeVoList = new ArrayList<>(); |
| | | MgtActivenessJudgeVo mgtActivenessJudgeVo; |
| | | 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.setActivenessName(activeness.getActivenessName()); |
| | | } |
| | | //活跃度赋值 |
| | | Date lastPayTime; |
| | | for (MerMemberPageVo mgtMemberPageVo : merMemberPageVoList) { |
| | | 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) { |
| | | sj.add(entity.getActivenessName()); |
| | | } |
| | | } |
| | | if (sj.length() > 0) { |
| | | mgtMemberPageVo.setMemberActiveness(sj.toString()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return merMemberPageVoList; |
| | | } |
| | | |
| | |
| | | member.setMemberId(memberId); |
| | | member.setUserId(sysUser.getUserId()); |
| | | member.setDelFlag(0); |
| | | member.setFrozenFlag(0); |
| | | member.setNickName(merMemberAddDto.getNickName()); |
| | | member.setRealName(merMemberAddDto.getNickName()); |
| | | member.setGender(merMemberAddDto.getGender()); |
| | |
| | | */ |
| | | @Override |
| | | public void updateMemberGoodsType(AppMemberGoodsTypeDto appMemberGoodsTypeDto) { |
| | | // 根据用户ID获取会员信息 |
| | | Member member = this.getByUserId(appMemberGoodsTypeDto.getUserId()); |
| | | // 获取商品类型集合和商品护理集合 |
| | | HashSet<String> goodsTypeSet = appMemberGoodsTypeDto.getGoodsTypeSet(); |
| | | HashSet<String> goodsNurseSet = appMemberGoodsTypeDto.getGoodsNurseSet(); |
| | | // 如果会员存在 |
| | | if (member != null) { |
| | | String goodsType = member.getGoodsType(); |
| | | // 标识是否有变化 |
| | | Boolean change = false; |
| | | for (String str : goodsTypeSet) { |
| | | if (goodsType != null) { |
| | | if (!goodsType.contains(str)) { |
| | | goodsType = goodsType + "," + str; |
| | | // 更新商品类型 |
| | | if (goodsTypeSet != null && goodsTypeSet.size() > 0) { |
| | | String goodsType = member.getGoodsType(); |
| | | HashSet<String> goodsTypeOldSet = new HashSet<>(); |
| | | // 如果商品类型不为空 |
| | | if (StringUtils.isNotBlank(goodsType)) { |
| | | goodsTypeOldSet = new HashSet<>(Arrays.asList(goodsType.split(","))); |
| | | // 如果商品类型集合相等 |
| | | if (!goodsTypeSet.equals(goodsTypeOldSet)) { |
| | | change = true; |
| | | } |
| | | } else { |
| | | goodsType = str; |
| | | change = true; |
| | | } |
| | | goodsTypeOldSet.addAll(goodsTypeSet); |
| | | member.setGoodsType(String.join(",", goodsTypeOldSet)); |
| | | } |
| | | // 更新商品护理 |
| | | if (goodsNurseSet != null && goodsNurseSet.size() > 0) { |
| | | String memberNurse = member.getMemberNurse(); |
| | | HashSet<String> memberNurseOldSet = new HashSet<>(); |
| | | // 如果会员护理不为空 |
| | | if (StringUtils.isNotBlank(memberNurse)) { |
| | | memberNurseOldSet = new HashSet<>(Arrays.asList(memberNurse.split(","))); |
| | | // 如果商品护理集合相等 |
| | | if (!goodsNurseSet.equals(memberNurseOldSet)) { |
| | | change = true; |
| | | } |
| | | } else { |
| | | change = true; |
| | | } |
| | | memberNurseOldSet.addAll(goodsNurseSet); |
| | | member.setMemberNurse(String.join(",", memberNurseOldSet)); |
| | | } |
| | | // 如果有变化,则保存或更新会员信息 |
| | | if (change) { |
| | | member.setGoodsType(goodsType); |
| | | this.saveOrUpdate(member); |
| | | } |
| | | } |
| | |
| | | String memberNo = createMemberNo(); |
| | | member.setMemberNo(memberNo); |
| | | member.setDelFlag(0); |
| | | member.setFrozenFlag(0); |
| | | member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); |
| | | member.setBindingFlag(0); |
| | | member.setCreateTime(new Date()); |
| | | member.setCustomerSource("商户订单添加"); |
| | | this.saveOrUpdate(member); |
| | |
| | | memberTotal.setTotalExperienceOrder(0); |
| | | memberTotal.setTotalServiceOrder(0); |
| | | memberTotal.setTotalGoodsOrder(0); |
| | | memberTotal.setShareFlag(0); |
| | | memberTotal.setPlSuggestFlag(0); |
| | | memberTotal.setShopSuggestFlag(0); |
| | | memberTotal.setSignFlag(0); |
| | | memberTotal.setBuyFlag(0); |
| | | memberTotalService.saveOrUpdate(memberTotal); |
| | | } |
| | | |
| | |
| | | //处理标签为正则表达 |
| | | if (StringUtils.isNotBlank(merMemberPageDto.getMemberTags())) { |
| | | merMemberPageDto.setMemberTags(merMemberPageDto.getMemberTags().replace(",", "|")); |
| | | } |
| | | //处理生日 |
| | | if(merMemberPageDto.getStartAge()!=null){ |
| | | LocalDate currentDate = LocalDate.now(); |
| | | LocalDate endBirthday = currentDate.minusYears(merMemberPageDto.getStartAge()); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | merMemberPageDto.setEndBirthday(endBirthday.format(formatter)); |
| | | } |
| | | if(merMemberPageDto.getEndAge()!=null){ |
| | | LocalDate currentDate = LocalDate.now(); |
| | | LocalDate startBirthday = currentDate.minusYears(merMemberPageDto.getEndAge()); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | merMemberPageDto.setStartBirthday(startBirthday.format(formatter)); |
| | | } |
| | | //查询获取结果列表 |
| | | List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto); |
| | |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUserId(mgtMemberRelEditDto.getUserId()); |
| | | this.saveOrUpdate(member); |
| | | memberMapper.updateById(member); |
| | | } |
| | | } |
| | | } |
| | |
| | | mgtMemberGetVo.setNickName(member.getNickName()); |
| | | mgtMemberGetVo.setAvatar(member.getAvatar()); |
| | | mgtMemberGetVo.setMobile(member.getMobile()); |
| | | mgtMemberGetVo.setGender(member.getGender() == 0 ? "男" : member.getGender() == 1 ? "女" : null); |
| | | if(member.getGender()!=null){ |
| | | if (member.getGender() == 0) { |
| | | mgtMemberGetVo.setGender("男"); |
| | | } else if (member.getGender() == 1) { |
| | | mgtMemberGetVo.setGender("女"); |
| | | } |
| | | }else { |
| | | mgtMemberGetVo.setGender("未知"); |
| | | } |
| | | mgtMemberGetVo.setBirthday(member.getBirthday()); |
| | | mgtMemberGetVo.setBelongDistrict(member.getBelongDistrict()); |
| | | mgtMemberGetVo.setCreateTime(member.getCreateTime()); |
| | |
| | | // 获取总会员数和不同年龄段的会员数 |
| | | MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto); |
| | | MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto); |
| | | Integer manTotal = mgtAgeTotalVo.getManTotal(); |
| | | Integer womenTotal = mgtAgeTotalVo.getWomenTotal(); |
| | | mgtTotalMemberTotalVo.setManTotal(manTotal); |
| | | mgtTotalMemberTotalVo.setWomenTotal(womenTotal); |
| | | Integer personTotal = manTotal + womenTotal; |
| | | BigDecimal manTotalBig = new BigDecimal(manTotal); |
| | | BigDecimal personTotalBig = new BigDecimal(personTotal); |
| | | BigDecimal bigTen = new BigDecimal("100.00"); |
| | | BigDecimal menPercent = new BigDecimal("100.00"); |
| | | BigDecimal womenPercent = new BigDecimal("100.00"); |
| | | if(manTotal==0&&womenTotal==0){ |
| | | menPercent = new BigDecimal("50.00"); |
| | | womenPercent = new BigDecimal("50.00"); |
| | | }else if(manTotal==0&&womenTotal>0){ |
| | | menPercent = new BigDecimal("0.00"); |
| | | womenPercent = new BigDecimal("100.00"); |
| | | }else if(manTotal>0&&womenTotal==0){ |
| | | menPercent = new BigDecimal("100.00"); |
| | | womenPercent = new BigDecimal("0.00"); |
| | | }else{ |
| | | menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP); |
| | | womenPercent = bigTen.subtract(menPercent); |
| | | } |
| | | mgtTotalMemberTotalVo.setManPercent(menPercent); |
| | | mgtTotalMemberTotalVo.setWomenPercent(womenPercent); |
| | | // 年龄段数组 |
| | | String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; |
| | | // 不同年龄段的会员数数组 |
| | |
| | | if (nurseTotalVos != null && nurseTotalVos.size() > 0) { |
| | | nurseTotalVos = listRemoveNull(nurseTotalVos); |
| | | mgtTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos); |
| | | } |
| | | //获取不同等级的会员数 |
| | | List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getTotalMemberTotalLevel(mgtBaseShopDto); |
| | | if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) { |
| | | memberLevelTotalVos = listRemoveNull(memberLevelTotalVos); |
| | | mgtTotalMemberTotalVo.setMemberLevelTotalVos(memberLevelTotalVos); |
| | | } |
| | | // 获取不同商品类型的会员数 |
| | | List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getTotalMemberTotalGoodsType(mgtBaseShopDto); |
| | |
| | | if (nurseTotalVos != null && nurseTotalVos.size() > 0) { |
| | | nurseTotalVos = listRemoveNull(nurseTotalVos); |
| | | plTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos); |
| | | } |
| | | //获取不同等级的会员数 |
| | | List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getPlTotalMemberTotalLevel(mgtBasePlatformDto); |
| | | if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) { |
| | | memberLevelTotalVos = listRemoveNull(memberLevelTotalVos); |
| | | plTotalMemberTotalVo.setMemberLevelTotalVos(memberLevelTotalVos); |
| | | } |
| | | // 获取不同商品类型的会员数 |
| | | List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto); |
| | |
| | | } |
| | | //消费变动 |
| | | 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.getPayMoney().compareTo(BigDecimal.ZERO)>=0){ |
| | | memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney())); |
| | | memberTotal.setTotalPayCount(memberTotal.getTotalPayCount() + 1); |
| | | memberTotal.setLastPayMoney(memberTotalChangeDto.getPayMoney()); |
| | | memberTotal.setLastPayTime(memberTotalChangeDto.getPayTime()); |
| | | }else{ |
| | | memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney())); |
| | | memberTotal.setTotalPayCount(memberTotal.getTotalPayCount() - 1); |
| | | } |
| | | } |
| | | //服务次数变动 |
| | | if (memberTotalChangeDto.getServiceCount() != null) { |
| | |
| | | merTotalDto.setShopId(null); |
| | | } |
| | | MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getMerMemberTotalAge(merTotalDto); |
| | | Integer manTotal = mgtAgeTotalVo.getManTotal(); |
| | | Integer womenTotal = mgtAgeTotalVo.getWomenTotal(); |
| | | memberFixedTotalVo.setManTotal(manTotal); |
| | | memberFixedTotalVo.setWomenTotal(womenTotal); |
| | | Integer personTotal = manTotal + womenTotal; |
| | | BigDecimal manTotalBig = new BigDecimal(manTotal); |
| | | BigDecimal personTotalBig = new BigDecimal(personTotal); |
| | | BigDecimal bigTen = new BigDecimal("100.00"); |
| | | BigDecimal menPercent = new BigDecimal("100.00"); |
| | | BigDecimal womenPercent = new BigDecimal("100.00"); |
| | | if(manTotal==0&&womenTotal==0){ |
| | | menPercent = new BigDecimal("50.00"); |
| | | womenPercent = new BigDecimal("50.00"); |
| | | }else if(manTotal==0&&womenTotal>0){ |
| | | menPercent = new BigDecimal("0.00"); |
| | | womenPercent = new BigDecimal("100.00"); |
| | | }else if(manTotal>0&&womenTotal==0){ |
| | | menPercent = new BigDecimal("100.00"); |
| | | womenPercent = new BigDecimal("0.00"); |
| | | }else{ |
| | | menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP); |
| | | womenPercent = bigTen.subtract(menPercent); |
| | | } |
| | | memberFixedTotalVo.setManPercent(menPercent); |
| | | memberFixedTotalVo.setWomenPercent(womenPercent); |
| | | // 年龄段数组 |
| | | String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; |
| | | // 不同年龄段的会员数数组 |
| | |
| | | nurseTotalVos = listRemoveNull(nurseTotalVos); |
| | | memberFixedTotalVo.setNurseTotalVos(nurseTotalVos); |
| | | } |
| | | //获取不同等级的会员数 |
| | | List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getMerMemberTotalLevel(merTotalDto); |
| | | if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) { |
| | | memberLevelTotalVos = listRemoveNull(memberLevelTotalVos); |
| | | memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos); |
| | | } |
| | | // 获取不同商品类型的会员数 |
| | | List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getMerMemberTotalGoodsType(merTotalDto); |
| | | if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) { |
| | | goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos); |
| | | memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); |
| | | } |
| | | //获取会员消费排名 |
| | | List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto); |
| | | if (memberPayList != null && memberPayList.size() > 0) { |
| | | memberPayList = listRemoveNull(memberPayList); |
| | | memberFixedTotalVo.setMemberPayList(memberPayList); |
| | | } |
| | | // 获取不同活跃度的会员数 |
| | | List<Activeness> activenessList = remoteConfigService.listActiveness().getData(); |
| | |
| | | MgtMapIntTotalVoList.add(MgtMapIntTotalVo); |
| | | } |
| | | memberFixedTotalVo.setActivenessList(MgtMapIntTotalVoList); |
| | | } |
| | | //获取会员消费排名 |
| | | List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto); |
| | | if (memberPayList != null && memberPayList.size() > 0) { |
| | | memberPayList = listRemoveNull(memberPayList); |
| | | memberFixedTotalVo.setMemberPayList(memberPayList); |
| | | } |
| | | return memberFixedTotalVo; |
| | | } |
| | |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/7/5 21:18 |
| | | * @param mgtBaseGetDto |
| | | * @param mgtFrozenMemberDto |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public void mgtFrozenMember(MgtBaseGetDto mgtBaseGetDto){ |
| | | sysUserService.frozenUser(Long.valueOf(mgtBaseGetDto.getId())); |
| | | public void mgtFrozenMember(MgtFrozenMemberDto mgtFrozenMemberDto){ |
| | | Long userId = mgtFrozenMemberDto.getId(); |
| | | Member member = this.getByUserId(userId); |
| | | member.setFrozenFlag(mgtFrozenMemberDto.getFrozenFlag()); |
| | | this.saveOrUpdate(member); |
| | | sysUserService.frozenUser(mgtFrozenMemberDto); |
| | | } |
| | | |
| | | /** |
| | | * @description 获取用户任务列表 |
| | | * @author jqs |
| | | * @date 2023/7/12 15:07 |
| | | * @param userId |
| | | * @return List<AppIntegralTaskListVo> |
| | | */ |
| | | @Override |
| | | public List<AppIntegralTaskListVo> listAppMemberIntegralTask(Long userId){ |
| | | // 获取指定用户的会员信息 |
| | | Member member = this.getByUserId(userId); |
| | | // 获取会员的总积分信息 |
| | | MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); |
| | | // 获取其他配置信息 |
| | | AppOtherConfigGetVo appOtherConfigGetVo = remoteConfigService.getAppOtherConfigGetVo().getData(); |
| | | // 创建一个空的积分任务列表 |
| | | List<AppIntegralTaskListVo> appIntegralTaskListVoList = new ArrayList<>(); |
| | | // 创建分享小程序任务 |
| | | AppIntegralTaskListVo shareTask = new AppIntegralTaskListVo(); |
| | | shareTask.setTaskContent("分享小程序给微信好友"); |
| | | shareTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getShareIntegral() + "积分"); |
| | | shareTask.setRecommendFlag(1); |
| | | shareTask.setCompleteFlag(memberTotal.getShareFlag()); |
| | | appIntegralTaskListVoList.add(shareTask); |
| | | // 创建提交平台建议任务 |
| | | AppIntegralTaskListVo plSuggestTask = new AppIntegralTaskListVo(); |
| | | plSuggestTask.setTaskContent("提交平台建议"); |
| | | plSuggestTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getSuggestPlatformIntegral() + "积分"); |
| | | plSuggestTask.setRecommendFlag(1); |
| | | plSuggestTask.setCompleteFlag(memberTotal.getPlSuggestFlag()); |
| | | appIntegralTaskListVoList.add(plSuggestTask); |
| | | // 创建提交门店建议任务 |
| | | AppIntegralTaskListVo shopSuggestTask = new AppIntegralTaskListVo(); |
| | | shopSuggestTask.setTaskContent("提交门店建议"); |
| | | shopSuggestTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getSuggestShopIntegral() + "积分"); |
| | | shopSuggestTask.setRecommendFlag(1); |
| | | shopSuggestTask.setCompleteFlag(memberTotal.getShopSuggestFlag()); |
| | | appIntegralTaskListVoList.add(shopSuggestTask); |
| | | // 创建每日签到任务 |
| | | AppIntegralTaskListVo signTask = new AppIntegralTaskListVo(); |
| | | signTask.setTaskContent("每日签到"); |
| | | signTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getSignInIntegral() + "积分"); |
| | | signTask.setRecommendFlag(1); |
| | | signTask.setCompleteFlag(memberTotal.getSignFlag()); |
| | | appIntegralTaskListVoList.add(signTask); |
| | | // 创建消费得积分任务 |
| | | AppIntegralTaskListVo buyTask = new AppIntegralTaskListVo(); |
| | | buyTask.setTaskContent("消费得积分"); |
| | | buyTask.setTaskDesc("每消费1元+" + appOtherConfigGetVo.getPayMoneyIntegral() + "积分"); |
| | | buyTask.setRecommendFlag(1); |
| | | buyTask.setCompleteFlag(memberTotal.getBuyFlag()); |
| | | appIntegralTaskListVoList.add(buyTask); |
| | | // 返回积分任务列表 |
| | | return appIntegralTaskListVoList; |
| | | } |
| | | |
| | | /** |
| | | * @description 积分变动 |
| | | * @author jqs |
| | | * @date 2023/7/12 15:59 |
| | | * @param integralChangeDto |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public Boolean changeIntegral(IntegralChangeDto integralChangeDto){ |
| | | Member member = this.getByUserId(integralChangeDto.getUserId()); |
| | | Integer integralType = integralChangeDto.getIntegralType(); |
| | | Integer changeIntegral = integralChangeDto.getChangeIntegral(); |
| | | MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); |
| | | Boolean completeFlag = false; |
| | | switch(integralType){ |
| | | case 1: |
| | | if(memberTotal.getShareFlag()==1){ |
| | | completeFlag = true; |
| | | } |
| | | break; |
| | | case 2: |
| | | if(memberTotal.getPlSuggestFlag()==1){ |
| | | completeFlag = true; |
| | | } |
| | | break; |
| | | case 3: |
| | | if(memberTotal.getShopSuggestFlag()==1){ |
| | | completeFlag = true; |
| | | } |
| | | break; |
| | | case 4: |
| | | if(memberTotal.getSignFlag()==1){ |
| | | completeFlag = true; |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | if(completeFlag){ |
| | | return completeFlag; |
| | | } |
| | | AppOtherConfigGetVo appOtherConfigGetVo = remoteConfigService.getAppOtherConfigGetVo().getData(); |
| | | IntegralRecord integralRecord = new IntegralRecord(); |
| | | integralRecord.setDelFlag(0); |
| | | integralRecord.setUserId(integralChangeDto.getUserId()); |
| | | integralRecord.setChangeType(integralType); |
| | | integralRecord.setCreateTime(new Date()); |
| | | //1分享获取2平台建议获取3门店建议获取4每日签到5消费得积分 |
| | | switch(integralType){ |
| | | case 1: |
| | | changeIntegral = appOtherConfigGetVo.getShareIntegral(); |
| | | integralRecord.setChangeIntegral(changeIntegral); |
| | | integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral); |
| | | integralRecord.setChangeReason("每日任务【分享小程序】获得积分"); |
| | | memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral); |
| | | memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral); |
| | | memberTotal.setShareFlag(1); |
| | | break; |
| | | case 2: |
| | | changeIntegral = appOtherConfigGetVo.getSuggestPlatformIntegral(); |
| | | integralRecord.setChangeIntegral(changeIntegral); |
| | | integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral); |
| | | integralRecord.setChangeReason("每日任务【提交平台建议】获得积分"); |
| | | memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral); |
| | | memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral); |
| | | memberTotal.setPlSuggestFlag(1); |
| | | break; |
| | | case 3: |
| | | changeIntegral = appOtherConfigGetVo.getSuggestShopIntegral(); |
| | | integralRecord.setChangeIntegral(changeIntegral); |
| | | integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral); |
| | | integralRecord.setChangeReason("每日任务【提交门店建议】获得积分"); |
| | | memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral); |
| | | memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral); |
| | | memberTotal.setShopSuggestFlag(1); |
| | | break; |
| | | case 4: |
| | | changeIntegral = appOtherConfigGetVo.getSignInIntegral(); |
| | | integralRecord.setChangeIntegral(changeIntegral); |
| | | integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral); |
| | | integralRecord.setChangeReason("每日任务【签到】获得积分"); |
| | | memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral); |
| | | memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral); |
| | | memberTotal.setSignFlag(1); |
| | | break; |
| | | case 5: |
| | | integralRecord.setChangeIntegral(changeIntegral); |
| | | integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral); |
| | | integralRecord.setChangeReason("订单【"+integralChangeDto.getOrderNo()+"】获得积分"); |
| | | integralRecord.setOrderId(integralChangeDto.getOrderId()); |
| | | integralRecord.setOrderNo(integralChangeDto.getOrderNo()); |
| | | memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral); |
| | | memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral); |
| | | memberTotal.setBuyFlag(1); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | memberTotalService.saveOrUpdate(memberTotal); |
| | | integralRecordService.saveOrUpdate(integralRecord); |
| | | return completeFlag; |
| | | } |
| | | |
| | | /** |
| | | * @description 统计商户今日新增会员 |
| | | * @author jqs |
| | | * @date 2023/7/14 19:54 |
| | | * @param shopIdList |
| | | * @return Integer |
| | | */ |
| | | @Override |
| | | public Integer getAreaNewMember(List<Long> shopIdList){ |
| | | return memberMapper.getAreaNewMember(shopIdList); |
| | | } |
| | | |
| | | /** |
| | | * @description 更新会员绑定商户名 |
| | | * @author jqs |
| | | * @date 2023/7/26 17:08 |
| | | * @param mgtMemberShopNameDto |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public void updateMemberShopName(MgtMemberShopNameDto mgtMemberShopNameDto){ |
| | | LambdaUpdateWrapper<Member> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(Member::getRelationShopId,mgtMemberShopNameDto.getShopId()); |
| | | updateWrapper.set(Member::getRelationShopName,mgtMemberShopNameDto.getShopName()); |
| | | this.update(updateWrapper); |
| | | } |
| | | } |