From f9691d544e62d6c04dbfe45d05a6c7bc5e004291 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 29 十二月 2023 11:52:29 +0800
Subject: [PATCH] 服务商

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  164 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 151 insertions(+), 13 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 5d255d6..e6471a7 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1,15 +1,19 @@
 package com.doumee.service.business.impl;
 
 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.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.Jwt.JwtPayLoad;
 import com.doumee.core.Jwt.JwtTokenUtil;
 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;
@@ -17,15 +21,24 @@
 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.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;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestParam;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
@@ -35,15 +48,48 @@
  * @date 2023/09/27 18:06
  */
 @Service
+@Slf4j
 public class MemberServiceImpl implements MemberService {
 
     @Autowired
     private MemberMapper memberMapper;
 
+
     @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());
+        Integer 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
@@ -71,6 +117,29 @@
     }
 
     @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;
@@ -88,7 +157,7 @@
     @Override
     public Member findOne(Member member) {
         QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
-        return memberMapper.selectOne(wrapper);
+        return memberMapper.selectOne(wrapper.last(" limit 1"));
     }
 
     @Override
@@ -96,7 +165,7 @@
         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());
@@ -126,7 +195,7 @@
             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());
@@ -164,7 +233,7 @@
             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());
@@ -182,6 +251,23 @@
                 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));
     }
 
@@ -210,7 +296,7 @@
             //鑾峰彇寰俊鏁忔劅鏁版嵁
             WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
             String openId = session.getOpenid();
-            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
+            if (StringUtils.isBlank(openId)) {
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
             }
             member.setOpenid(openId);
@@ -226,32 +312,85 @@
     }
 
 
+    /**
+     * 寰俊灏忕▼搴忕櫥褰�
+     * @param code
+     * @return
+     */
     @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();
-            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
+            String unionId = session.getUnionid();
+            if (StringUtils.isBlank(openId)) {
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
             }
-            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId).eq("ISDELETED", Constants.ZERO).last("limit 1"));
+            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("openid", openId).eq("isdeleted", Constants.ZERO).last("limit 1"));
             AccountResponse accountResponse = new AccountResponse();
-            if (Objects.isNull(member)) {
-                return accountResponse;
+            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);
             }
+            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(), "寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�");
+        }
+    }
 
+
+    /**
+     * 瑙f瀽寰俊鎵嬫満鍙�
+     * @param wxPhoneRequest
+     * @return
+     */
+    @Override
+    public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest) {
+        try {
+            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)){
+               throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈В鏋愬埌鎵嬫満鍙�");
+            }
+            member.setPhone(mobile);
             memberMapper.updateById(member);
+            AccountResponse accountResponse = new AccountResponse();
             UserResponse userResponse = getUserInfo(member.getId());
             JwtPayLoad payLoad = new JwtPayLoad(userResponse.getId());
             accountResponse.setToken(JwtTokenUtil.generateToken(payLoad));
             accountResponse.setUserResponse(userResponse);
+            accountResponse.setStatus(Constants.ZERO);
             return accountResponse;
-        } catch (WxErrorException e) {
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�");
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈В鏋愬埌鎵嬫満鍙�");
         }
-
     }
+
 
     @Override
     public UserResponse getUserInfo(String id) {
@@ -259,7 +398,6 @@
         UserResponse userResponse = new UserResponse();
         BeanUtils.copyProperties(member,userResponse);
         userResponse.setMobile(member.getPhone());
-
         return userResponse;
     }
 

--
Gitblit v1.9.3