| | |
| | | |
| | | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; |
| | | import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.LoginUserInfo; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Utils; |
| | |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.web.request.RegisterRequest; |
| | | import com.doumee.dao.business.web.request.WxPhoneRequest; |
| | | import com.doumee.dao.business.web.response.AccountResponse; |
| | | import com.doumee.dao.business.web.response.HomeResponse; |
| | | import com.doumee.dao.business.web.response.UserResponse; |
| | | import com.doumee.dao.system.SystemUserMapper; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.MemberService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import me.chanjar.weixin.common.error.WxErrorException; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.checkerframework.checker.units.qual.A; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | * @date 2023/09/27 18:06 |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class MemberServiceImpl implements MemberService { |
| | | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | @Autowired |
| | | private SystemUserMapper systemUserMapper; |
| | | |
| | | |
| | | @Override |
| | | public String create(Member member) { |
| | | memberMapper.insert(member); |
| | | return member.getId(); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public String createManageMember(Member member) { |
| | | LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | |
| | | QueryWrapper<Member> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | | .eq(Member::getIsdeleted,Constants.ZERO) |
| | | .eq(Member::getType,Constants.ONE) |
| | | .eq(Member::getCardNo,member.getCardNo()); |
| | | long integer = memberMapper.selectCount(wrapper); |
| | | |
| | | if (integer > 0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"卡号存在重复"); |
| | | } |
| | | Member insert = new Member(); |
| | | insert.setCreateDate(new Date()); |
| | | insert.setCreator(principal.getId()); |
| | | insert.setEditDate(new Date()); |
| | | insert.setEditor(principal.getId()); |
| | | insert.setIsdeleted(Constants.ZERO); |
| | | insert.setName(member.getName()); |
| | | insert.setNickname(member.getNickname()); |
| | | insert.setStatus(member.getStatus()); |
| | | insert.setRegisterDate(new Date()); |
| | | insert.setCardNo(member.getCardNo()); |
| | | insert.setType(Constants.ONE); |
| | | memberMapper.insert(insert); |
| | | return insert.getId(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void update(Member member) { |
| | | |
| | | QueryWrapper<Member> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | | .eq(Member::getIsdeleted,Constants.ZERO) |
| | | .eq(Member::getType,Constants.ONE) |
| | | .eq(Member::getCardNo,member.getCardNo()); |
| | | Member member1 = memberMapper.selectOne(wrapper); |
| | | if (Objects.nonNull(member1) && !member1.getId().equals(member.getId())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"卡号存在重复"); |
| | | } |
| | | LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | Member update = new Member(); |
| | | update.setId(member.getId()); |
| | | update.setName(member.getName()); |
| | | update.setStatus(member.getStatus()); |
| | | update.setEditDate(new Date()); |
| | | update.setEditor(principal.getId()); |
| | | memberMapper.updateById(member); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void updateByIdInBatch(List<Member> members) { |
| | | if (CollectionUtils.isEmpty(members)) { |
| | | return; |
| | |
| | | @Override |
| | | public Member findOne(Member member) { |
| | | QueryWrapper<Member> wrapper = new QueryWrapper<>(member); |
| | | return memberMapper.selectOne(wrapper); |
| | | return memberMapper.selectOne(wrapper.last(" limit 1")); |
| | | } |
| | | |
| | | @Override |
| | |
| | | QueryWrapper<Member> wrapper = new QueryWrapper<>(member); |
| | | return memberMapper.selectList(wrapper); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public PageData<Member> findPage(PageWrap<Member> pageWrap) { |
| | | IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | |
| | | queryWrapper.lambda().eq(Member::getInfo, pageWrap.getModel().getInfo()); |
| | | } |
| | | if (pageWrap.getModel().getName() != null) { |
| | | queryWrapper.lambda().eq(Member::getName, pageWrap.getModel().getName()); |
| | | queryWrapper.lambda().like(Member::getName, pageWrap.getModel().getName()); |
| | | } |
| | | if (pageWrap.getModel().getNickname() != null) { |
| | | queryWrapper.lambda().eq(Member::getNickname, pageWrap.getModel().getNickname()); |
| | |
| | | queryWrapper.lambda().eq(Member::getPassword, pageWrap.getModel().getPassword()); |
| | | } |
| | | if (pageWrap.getModel().getCardNo() != null) { |
| | | queryWrapper.lambda().eq(Member::getCardNo, pageWrap.getModel().getCardNo()); |
| | | queryWrapper.lambda().like(Member::getCardNo, pageWrap.getModel().getCardNo()); |
| | | } |
| | | if (pageWrap.getModel().getCardSign() != null) { |
| | | queryWrapper.lambda().eq(Member::getCardSign, pageWrap.getModel().getCardSign()); |
| | |
| | | queryWrapper.orderByAsc(sortData.getProperty()); |
| | | } |
| | | } |
| | | return PageData.from(memberMapper.selectPage(page, queryWrapper)); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public PageData<Member> findManagerMemberPage(PageWrap<Member> pageWrap) { |
| | | |
| | | IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | QueryWrapper<Member> queryWrapper = new QueryWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | if (pageWrap.getModel().getName() != null) { |
| | | queryWrapper.lambda().like(Member::getName, pageWrap.getModel().getName()); |
| | | } |
| | | if (pageWrap.getModel().getCardNo() != null) { |
| | | queryWrapper.lambda().like(Member::getCardNo, pageWrap.getModel().getCardNo()); |
| | | } |
| | | queryWrapper.lambda().eq(Member::getType, Constants.ONE); |
| | | return PageData.from(memberMapper.selectPage(page, queryWrapper)); |
| | | } |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public AccountResponse wxLogin(String code) { |
| | | log.error("================================"+code+ JSONObject.toJSONString( WxMiniConfig.wxMaService.getWxMaConfig())); |
| | | try { |
| | | //获取微信敏感数据 |
| | | WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code); |
| | | log.error("================================"+ JSONObject.toJSONString(session)); |
| | | String openId = session.getOpenid(); |
| | | String unionId = session.getUnionid(); |
| | | if (StringUtils.isBlank(openId)) { |
| | |
| | | if(Objects.isNull(member)){ |
| | | //新增用户 需要进行用户绑定手机号 |
| | | member = new Member(); |
| | | member.setId(Constants.getUUID()); |
| | | member.setCreateDate(new Date()); |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setOpenid(openId); |
| | | member.setUnionid(unionId); |
| | | member.setType(Constants.ZERO); |
| | | member.setRegisterDate(new Date()); |
| | | member.setOrigin(Constants.ZERO.toString()); |
| | | member.setStatus(Constants.ZERO); |
| | | memberMapper.insert(member); |
| | | accountResponse.setStatus(Constants.ONE); |
| | | }else{ |
| | | UserResponse userResponse = getUserInfo(member.getId()); |
| | | if(StringUtils.isBlank(member.getPhone())){ |
| | | accountResponse.setStatus(Constants.ONE); |
| | | }else{ |
| | | JwtPayLoad payLoad = new JwtPayLoad(userResponse.getId()); |
| | | accountResponse.setToken(JwtTokenUtil.generateToken(payLoad)); |
| | | } |
| | | accountResponse.setUserResponse(userResponse); |
| | | } |
| | | |
| | | UserResponse userResponse = getUserInfo(member.getId()); |
| | | if(StringUtils.isBlank(member.getPhone())){ |
| | | accountResponse.setStatus(Constants.ONE); |
| | | } |
| | | JwtPayLoad payLoad = new JwtPayLoad(member.getId()); |
| | | accountResponse.setToken(JwtTokenUtil.generateToken(payLoad)); |
| | | accountResponse.setSessionKey(session.getSessionKey()); |
| | | accountResponse.setUserResponse(userResponse); |
| | | return accountResponse; |
| | | } catch (WxErrorException e) { |
| | | log.error(e.getMessage()); |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "微信登录异常!请联系管理员"); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 解析微信手机号 |
| | | * @param memberId |
| | | * @param encryptedData |
| | | * @param iv |
| | | * @param sessionKey |
| | | * @param wxPhoneRequest |
| | | * @return |
| | | */ |
| | | @Override |
| | | public AccountResponse wxPhone(String memberId,String encryptedData, String iv,String sessionKey) { |
| | | public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest) { |
| | | try { |
| | | Member member = memberMapper.selectById(memberId); |
| | | WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv); |
| | | Member member = memberMapper.selectById(wxPhoneRequest.getMemberId()); |
| | | WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNoInfo(wxPhoneRequest.getSessionKey(), wxPhoneRequest.getEncryptedData(), wxPhoneRequest.getIv()); |
| | | //获取手机号 |
| | | String mobile= userPhoneInfo.getPurePhoneNumber(); |
| | | if(Objects.isNull(mobile)){ |
| | |
| | | UserResponse userResponse = new UserResponse(); |
| | | BeanUtils.copyProperties(member,userResponse); |
| | | userResponse.setMobile(member.getPhone()); |
| | | if(member.getSysuserId()!=null){ |
| | | SystemUser user= systemUserMapper.selectById(member.getSysuserId()); |
| | | if(user !=null && !Constants.equalsInteger(user.getDeleted(),Constants.ONE) |
| | | && !Constants.equalsInteger(user.getStatus(),Constants.ONE)){ |
| | | SystemUser u = new SystemUser(); |
| | | u.setId(user.getId()); |
| | | u.setUsername(user.getUsername()); |
| | | u.setNickname(user.getNickname()); |
| | | u.setRealname(user.getRealname()); |
| | | userResponse.setSysuser(u); |
| | | } |
| | | } |
| | | return userResponse; |
| | | } |
| | | |
| | | |
| | | |
| | | } |