| | |
| | | |
| | | import cn.hutool.core.convert.Convert; |
| | | import cn.hutool.core.text.CharSequenceUtil; |
| | | import cn.hutool.crypto.SecureUtil; |
| | | import cn.lili.base.Result; |
| | | import cn.lili.cache.Cache; |
| | | import cn.lili.cache.CachePrefix; |
| | |
| | | import cn.lili.modules.connect.entity.dto.ConnectAuthUser; |
| | | import cn.lili.modules.connect.service.ConnectService; |
| | | import cn.lili.modules.lmk.domain.entity.VideoAccount; |
| | | import cn.lili.modules.lmk.domain.form.MemberNickNameForm; |
| | | import cn.lili.modules.lmk.domain.form.MemberTagForm; |
| | | import cn.lili.modules.lmk.domain.vo.PrizeRecordVO; |
| | | import cn.lili.modules.lmk.enums.general.PrizeDistributeStatusEnum; |
| | | import cn.lili.modules.lmk.enums.general.PrizeGrantStatusEnums; |
| | | import cn.lili.modules.lmk.enums.general.PrizeStatusEnum; |
| | | import cn.lili.modules.lmk.service.MemberTagService; |
| | | import cn.lili.modules.lmk.service.VideoAccountService; |
| | | import cn.lili.modules.member.aop.annotation.PointLogPoint; |
| | |
| | | import cn.lili.modules.member.entity.dto.*; |
| | | import cn.lili.modules.member.entity.enums.PointTypeEnum; |
| | | import cn.lili.modules.member.entity.enums.QRCodeLoginSessionStatusEnum; |
| | | import cn.lili.modules.member.entity.vo.MemberSearchVO; |
| | | import cn.lili.modules.member.entity.vo.MemberVO; |
| | | import cn.lili.modules.member.entity.vo.QRCodeLoginSessionVo; |
| | | import cn.lili.modules.member.entity.vo.QRLoginResultVo; |
| | | import cn.lili.modules.member.entity.vo.*; |
| | | import cn.lili.modules.member.mapper.MemberMapper; |
| | | import cn.lili.modules.member.service.MemberService; |
| | | import cn.lili.modules.member.token.MemberTokenGenerate; |
| | | import cn.lili.modules.member.token.StoreTokenGenerate; |
| | | import cn.lili.modules.order.order.entity.dto.PrizeRecordExportDetailDTO; |
| | | import cn.lili.modules.store.entity.dos.Store; |
| | | import cn.lili.modules.store.entity.enums.StoreStatusEnum; |
| | | import cn.lili.modules.store.service.StoreService; |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.apache.poi.ss.usermodel.Cell; |
| | | import org.apache.poi.ss.usermodel.Row; |
| | | import org.apache.poi.ss.usermodel.Sheet; |
| | | import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
| | | import org.apache.rocketmq.spring.core.RocketMQTemplate; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.ApplicationEventPublisher; |
| | | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import javax.servlet.ServletOutputStream; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.net.URLEncoder; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 会员接口业务层实现 |
| | |
| | | throw new ServiceException(ResultCode.USER_NOT_EXIST); |
| | | } |
| | | //判断密码是否输入正确 |
| | | |
| | | if (!new BCryptPasswordEncoder().matches(password, member.getPassword())) { |
| | | throw new ServiceException(ResultCode.USER_PASSWORD_ERROR); |
| | | } |
| | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public Member autoRegister(ConnectAuthUser authUser) { |
| | | public Member autoRegister(ConnectAuthUser authUser,Boolean encryptTwice) { |
| | | |
| | | if (CharSequenceUtil.isEmpty(authUser.getNickname())) { |
| | | authUser.setNickname(CommonUtil.getSpecialStr("用户")); |
| | |
| | | // String username = UuidUtils.getUUID(); |
| | | Member member = new Member(authUser.getUsername(), UuidUtils.getUUID(), authUser.getAvatar(), authUser.getNickname(), |
| | | authUser.getGender() != null ? Convert.toInt(authUser.getGender().getCode()) : 0, authUser.getPhone()); |
| | | member.setPassword(DEFAULT_PASSWORD); |
| | | if(encryptTwice){ |
| | | member.setPassword( new BCryptPasswordEncoder().encode(SecureUtil.md5(DEFAULT_PASSWORD))); |
| | | }else { |
| | | member.setPassword( new BCryptPasswordEncoder().encode(DEFAULT_PASSWORD)); |
| | | } |
| | | member.setUuId(authUser.getUuid()); |
| | | // 发送会员注册信息 |
| | | registerHandler(member); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Result updateMemberNickName(MemberNickNameForm form) { |
| | | Member member = baseMapper.selectById(form.getMemberId()); |
| | | boolean update = false; |
| | | if ("微信用户".equals(member.getNickName()) || StringUtils.isBlank(member.getNickName())) { |
| | | member.setNickName(form.getNickName()); |
| | | update = true; |
| | | } |
| | | if (update){ |
| | | baseMapper.updateById(member); |
| | | } |
| | | return Result.ok().data(member.getNickName()); |
| | | } |
| | | |
| | | @Override |
| | | public Result resetPassword(String id) { |
| | | String password = "123456"; |
| | | String password = "111111"; |
| | | Member member = this.getById(id); |
| | | member.setPassword(new BCryptPasswordEncoder().encode(password)); |
| | | member.setPassword(new BCryptPasswordEncoder().encode(SecureUtil.md5(password))); |
| | | this.updateById(member); |
| | | return Result.ok("重置成功"); |
| | | } |
| | |
| | | queryWrapper.eq(CharSequenceUtil.isNotBlank(memberSearchVO.getDisabled()), "disabled", |
| | | memberSearchVO.getDisabled().equals(SwitchEnum.OPEN.name()) ? 1 : 0); |
| | | queryWrapper.orderByDesc("create_time"); |
| | | |
| | | return this.baseMapper.pageByMemberVO(PageUtil.initPage(page), queryWrapper); |
| | | } |
| | | @Override |
| | | public IPage<MemberVO> getMemberPageAndTag(MemberSearchVO memberSearchVO, PageVO page) { |
| | | QueryWrapper<Member> queryWrapper = Wrappers.query(); |
| | | //用户名查询 |
| | | queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getUsername()), "username", memberSearchVO.getUsername()); |
| | | //用户名查询 |
| | | queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getNickName()), "nick_name", memberSearchVO.getNickName()); |
| | | //按照电话号码查询 |
| | | queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getMobile()), "mobile", memberSearchVO.getMobile()); |
| | | //按照会员状态查询 |
| | | queryWrapper.eq(CharSequenceUtil.isNotBlank(memberSearchVO.getDisabled()), "disabled", |
| | | memberSearchVO.getDisabled().equals(SwitchEnum.OPEN.name()) ? 1 : 0); |
| | | queryWrapper.orderByDesc("create_time"); |
| | | if (CollectionUtils.isNotEmpty(memberSearchVO.getTagIds())) { |
| | | // 使用inSql方法进行安全的子查询 |
| | | String tagIdsStr = memberSearchVO.getTagIds().stream() |
| | | .map(String::valueOf) |
| | | .collect(Collectors.joining(",")); |
| | | queryWrapper.inSql("id", |
| | | "SELECT DISTINCT member_id FROM lmk_member_tag WHERE tag_id IN (" + |
| | | tagIdsStr + ")"); |
| | | |
| | | return this.baseMapper.pageByMemberVO(PageUtil.initPage(page), queryWrapper); |
| | | } |
| | | return this.baseMapper.pageByMemberVO(PageUtil.initPage(page),queryWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public void exportMember(MemberSearchVO memberSearchVO) { |
| | | HttpServletResponse response = ThreadContextHolder.getHttpResponse(); |
| | | QueryWrapper<Member> queryWrapper = Wrappers.query(); |
| | | //用户名查询 |
| | | queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getUsername()), "username", memberSearchVO.getUsername()); |
| | | //用户名查询 |
| | | queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getNickName()), "nick_name", memberSearchVO.getNickName()); |
| | | //按照电话号码查询 |
| | | queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getMobile()), "mobile", memberSearchVO.getMobile()); |
| | | //按照会员状态查询 |
| | | queryWrapper.eq(CharSequenceUtil.isNotBlank(memberSearchVO.getDisabled()), "disabled", |
| | | memberSearchVO.getDisabled().equals(SwitchEnum.OPEN.name()) ? 1 : 0); |
| | | queryWrapper.orderByDesc("create_time"); |
| | | if (CollectionUtils.isNotEmpty(memberSearchVO.getTagIds())) { |
| | | // 使用inSql方法进行安全的子查询 |
| | | String tagIdsStr = memberSearchVO.getTagIds().stream() |
| | | .map(String::valueOf) |
| | | .collect(Collectors.joining(",")); |
| | | queryWrapper.inSql("id", |
| | | "SELECT DISTINCT member_id FROM lmk_member_tag WHERE tag_id IN (" + |
| | | tagIdsStr + ")"); |
| | | } |
| | | List<MemberVO> memberVOS = this.baseMapper.exportMember(queryWrapper); |
| | | XSSFWorkbook workbook = initExportMember(memberVOS); |
| | | try { |
| | | // 设置响应头 |
| | | String fileName = URLEncoder.encode("会员列表", "UTF-8"); |
| | | response.setContentType("application/vnd.ms-excel;charset=UTF-8"); |
| | | response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); |
| | | |
| | | ServletOutputStream out = response.getOutputStream(); |
| | | workbook.write(out); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | workbook.close(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | public XSSFWorkbook initExportMember(List<MemberVO> list){ |
| | | List<MemberExportVO> exportDetailDTOS = new ArrayList<>(); |
| | | for (MemberVO vo : list){ |
| | | MemberExportVO detailDtO = new MemberExportVO(); |
| | | BeanUtils.copyProperties(vo,detailDtO); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | // 将Date类型转换为指定格式的字符串 |
| | | Date createTime = vo.getCreateTime(); |
| | | if (createTime != null) { |
| | | String createTimeStr = sdf.format(createTime); |
| | | detailDtO.setCreateTime(createTimeStr); |
| | | }else { |
| | | detailDtO.setCreateTime(""); |
| | | } |
| | | Date lastLoginDate1 = vo.getLastLoginDate(); |
| | | if (lastLoginDate1 != null) { |
| | | String lastLoginDate = sdf.format(lastLoginDate1); |
| | | detailDtO.setLastLoginDate(lastLoginDate); |
| | | }else { |
| | | detailDtO.setLastLoginDate(""); |
| | | } |
| | | // 设置到DTO中 |
| | | exportDetailDTOS.add(detailDtO); |
| | | } |
| | | XSSFWorkbook workbook = new XSSFWorkbook(); |
| | | |
| | | Sheet sheet = workbook.createSheet("会员列表"); |
| | | // 创建表头 |
| | | Row header = sheet.createRow(0); |
| | | String[] headers = { |
| | | "会员名称", "会员昵称","联系方式", |
| | | "注册时间","最后登录时间" |
| | | }; |
| | | for(int i= 0 ;i< headers.length;i++){ |
| | | Cell cell = header.createCell(i); |
| | | cell.setCellValue(headers[i]); |
| | | } |
| | | for (int i=0;i< exportDetailDTOS.size();i++){ |
| | | MemberExportVO dto = exportDetailDTOS.get(i); |
| | | Row row = sheet.createRow(i+1); |
| | | row.createCell(0).setCellValue(dto.getUsername()); |
| | | row.createCell(1).setCellValue(dto.getNickName()); |
| | | row.createCell(2).setCellValue(dto.getMobile()); |
| | | row.createCell(3).setCellValue(dto.getCreateTime()); |
| | | row.createCell(4).setCellValue(dto.getLastLoginDate()); |
| | | } |
| | | |
| | | return workbook; |
| | | |
| | | } |
| | | |
| | | @Override |
| | |
| | | public MemberVO getMember(String id) { |
| | | MemberVO member = baseMapper.getVoById(id); |
| | | if (Objects.nonNull(member)) { |
| | | member.setFace(cosUtil.getPreviewUrl(member.getFace())); |
| | | if(StringUtils.isNotBlank(member.getFace()) && !member.getFace().contains("https")){ |
| | | member.setFace(cosUtil.getPreviewUrl(member.getFace())); |
| | | } |
| | | } |
| | | return member; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | System.err.println(SecureUtil.md5("111111")); |
| | | } |
| | | |
| | | } |