From c6675b55023dff3c4f441ab0bb9493198949126e Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期五, 16 一月 2026 18:22:41 +0800
Subject: [PATCH] 小程序 接口开发
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 224 ++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 171 insertions(+), 53 deletions(-)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 1dfd46f..f3e00a0 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -20,12 +20,10 @@
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.WxMiniConfig;
import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.ShopMapper;
import com.doumee.dao.business.SmsrecordMapper;
import com.doumee.dao.business.join.MemberJoinMapper;
-import com.doumee.dao.business.model.Areas;
-import com.doumee.dao.business.model.Goodsorder;
-import com.doumee.dao.business.model.Member;
-import com.doumee.dao.business.model.Smsrecord;
+import com.doumee.dao.business.model.*;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.dto.MemberRechargeDTO;
import com.doumee.dao.web.dto.MemberOwnDTO;
@@ -44,6 +42,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.models.auth.In;
+import io.swagger.util.Yaml;
import lombok.extern.log4j.Log4j;
import me.chanjar.weixin.common.error.WxErrorException;
import okhttp3.OkHttpClient;
@@ -77,6 +77,9 @@
@Autowired
private MemberMapper memberMapper;
+
+ @Autowired
+ private ShopMapper shopMapper;
@Autowired
private SmsrecordMapper smsrecordMapper;
@@ -241,38 +244,38 @@
if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
}
- Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPEN_ID", openId));
- if (member == null) {
- member = new Member();
- member.setImgurl("20230410/4010b821-2137-4e6d-86e4-5ab9c06184a4.png");
- member.setNickname("寰俊鐢ㄦ埛"+ CodeVerifyUtils.createVerificationCode(4));
- member.setCreateDate(new Date());
- member.setIsdeleted(Constants.ZERO);
- member.setType(Constants.ZERO);
- member.setOrigin(Constants.ZERO);
- member.setRecId(recId);
- member.setOpenId(openId);
- memberMapper.insert(member);
- }
- member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
- systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, openId)
+ .eq(Member::getIsdeleted,Constants.ZERO)
+ .last(" limit 1"));
//鍒涘缓token
- JwtPayLoad payLoad = new JwtPayLoad(member.getId());
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
String token = JwtTokenUtil.generateToken(payLoad);
AccountResponse accountResponse = new AccountResponse();
- accountResponse.setToken(token);
accountResponse.setSessionKey(session.getSessionKey());
- accountResponse.setMember(member);
+ if(Objects.nonNull(member)){
+ if(Objects.isNull(member.getRecId())){
+ member.setRecId(recId);
+ }
+ memberMapper.updateById(member);
+ member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
+ accountResponse.setToken(token);
+ accountResponse.setMember(member);
+ }else{
+ accountResponse.setOpenid(openId);
+ }
return accountResponse;
} catch (WxErrorException e) {
e.printStackTrace();
}
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�");
}
+
+
@Override
public AccountResponse wxLoginTest( Integer memberId){
//鍒涘缓token
- JwtPayLoad payLoad = new JwtPayLoad(memberId);
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+memberId);
String token = JwtTokenUtil.generateToken(payLoad);
AccountResponse accountResponse = new AccountResponse();
accountResponse.setToken(token);
@@ -280,9 +283,82 @@
}
+ /**
+ * 鏍规嵁openid鑾峰彇鏄惁缁戝畾浜嗗晢鎴�
+ * @param openid
+ * @param memberId
+ * @return
+ */
+ public AccountResponse shopOpenidLogin(String openid, Integer memberId){
+ Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda().eq(Shop::getOpenId, openid)
+ .eq(Shop::getIsdeleted,Constants.ZERO)
+ .last("limit 1")
+ );
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setOpenid(openid);
+ if(Objects.nonNull(shop)){
+ if(Objects.isNull(memberId)
+ && ( Objects.isNull(shop.getMemberId())
+ || !Constants.equalsInteger(shop.getMemberId(),memberId))){
+ shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+ .set(Shop::getMemberId,memberId)
+ .eq(Shop::getId,shop.getId())
+ );
+ }
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
+ String token = JwtTokenUtil.generateToken(payLoad);
+ accountResponse.setToken(token);
+ }
+ return accountResponse;
+ }
+
+
+ /**
+ * 鍟嗘埛璐﹀彿瀵嗙爜鐧诲綍
+ * @param userName
+ * @param password
+ * @param openid
+ * @param memberId
+ * @return
+ */
+ public AccountResponse shopPasswordLogin(String userName,String password,String openid,String memberId){
+ if(StringUtils.isBlank(userName)
+ || StringUtils.isBlank(password)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶈兘涓虹┖");
+ }
+ Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda().eq(Shop::getUsername, userName)
+ .eq(Shop::getIsdeleted,Constants.ZERO)
+ .last("limit 1")
+ );
+ if(shop==null){
+ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }
+ //鍔犲瘑瀵嗙爜
+ String pwd = Utils.Secure.encryptPassword(password, shop.getSalt());
+ if(!pwd.equals(shop.getPassword())){
+ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }
+ //鍒涘缓token
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
+ String token = JwtTokenUtil.generateToken(payLoad);
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setToken(token);
+ shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+ .set(Shop::getOpenId,openid)
+ .set(Shop::getMemberId,memberId)
+ .eq(Shop::getId,shop.getId())
+ );
+ shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+ .set(Shop::getOpenId,null)
+ .eq(Shop::getOpenId,openid)
+ .ne(Shop::getId,shop.getId())
+ );
+ return accountResponse;
+ }
+
@Override
- public void wxPhone(WxPhoneRequest wxPhoneRequest){
+ public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest){
try {
WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNoInfo(
wxPhoneRequest.getSessionKey(), wxPhoneRequest.getEncryptedData(), wxPhoneRequest.getIv());
@@ -291,46 +367,79 @@
if(Objects.isNull(phone)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈幏鍙栧埌鎵嬫満鍙�");
}
- Member member = memberMapper.selectById(wxPhoneRequest.getMemberId());
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, wxPhoneRequest.getOpenid())
+ .eq(Member::getIsdeleted,Constants.ZERO)
+ .last(" limit 1"));
+ if (member == null) {
+ member = new Member();
+ member.setImgurl("20230410/4010b821-2137-4e6d-86e4-5ab9c06184a4.png");
+ member.setNickname("寰俊鐢ㄦ埛"+ CodeVerifyUtils.createVerificationCode(4));
+ member.setCreateDate(new Date());
+ member.setIsdeleted(Constants.ZERO);
+ member.setType(Constants.ZERO);
+ member.setOrigin(Constants.ZERO);
+ member.setRecId(wxPhoneRequest.getRecId());
+ member.setOpenId(wxPhoneRequest.getOpenid());
+ }
member.setPhone(phone);
member.setEditDate(new Date());
- member.setEditor(wxPhoneRequest.getMemberId());
member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
- //鐢熸垚鍒嗕韩鐮�
- String accessToken = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ACCESS_TOKEN).getCode();
- if(StringUtils.isBlank(member.getSharingCode())){
- //鐢熸垚鍥剧墖涓婁紶OSS
- Map<String,Object> body = new HashMap<>();
- // 鍦烘櫙鐮侊紝涓庡墠绔害瀹氾紝鏈�缁堟槸闇�瑕佸墠绔В鏋�
- body.put("scene", member.getId());
- // 姝e紡鐗堜负 "release"锛屼綋楠岀増涓� "trial"锛屽紑鍙戠増涓� "develop"銆傞粯璁ゆ槸姝e紡鐗堛��
- body.put("env_version", "release");
- // 閫忔槑锛屾牴鎹綘鐨勫満鏅嚜琛岃缃産ody鍙傛暟
- body.put("is_hyaline", true);
- OkHttpClient client = new OkHttpClient().newBuilder().build();
- okhttp3.MediaType mediaType = okhttp3.MediaType.parse("application/json");
- okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType, JSONObject.toJSONString(body));
- Request request = new Request.Builder().url("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken)
- .method("POST", requestBody).build();
- try {
- Response response = client.newCall(request).execute();
- if (response.isSuccessful()) {
- InputStream inputStream = new ByteArrayInputStream(response.body().bytes());
- FileModel fileModel = uploadFileService.uploadWxCode(inputStream,member.getId().toString());
- member.setSharingCode(fileModel.getFileUrl());
- inputStream.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
+ if(Objects.isNull(member.getId())){
+ memberMapper.insert(member);
+ member.setSharingCode(this.createShareCode(member.getId()));
+ memberMapper.updateById(member);
+ }else{
+ if(StringUtils.isBlank(member.getSharingCode())){
+ member.setSharingCode(this.createShareCode(member.getId()));
}
+ memberMapper.updateById(member);
}
- memberMapper.updateById(member);
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
+ String token = JwtTokenUtil.generateToken(payLoad);
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setToken(token);
+ accountResponse.setMember(member);
+ return accountResponse;
} catch (Exception e) {
e.printStackTrace();
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏇存柊鎵嬫満鍙峰け璐�");
}
}
+
+
+
+ public String createShareCode(Integer memberId){
+ //鐢熸垚鍒嗕韩鐮�
+ String accessToken = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ACCESS_TOKEN).getCode();
+ //鐢熸垚鍥剧墖涓婁紶OSS
+ Map<String,Object> body = new HashMap<>();
+ // 鍦烘櫙鐮侊紝涓庡墠绔害瀹氾紝鏈�缁堟槸闇�瑕佸墠绔В鏋�
+ body.put("scene", memberId);
+ // 姝e紡鐗堜负 "release"锛屼綋楠岀増涓� "trial"锛屽紑鍙戠増涓� "develop"銆傞粯璁ゆ槸姝e紡鐗堛��
+ body.put("env_version", "release");
+ // 閫忔槑锛屾牴鎹綘鐨勫満鏅嚜琛岃缃産ody鍙傛暟
+ body.put("is_hyaline", true);
+ OkHttpClient client = new OkHttpClient().newBuilder().build();
+ okhttp3.MediaType mediaType = okhttp3.MediaType.parse("application/json");
+ okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType, JSONObject.toJSONString(body));
+ Request request = new Request.Builder().url("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken)
+ .method("POST", requestBody).build();
+ try {
+ Response response = client.newCall(request).execute();
+ if (response.isSuccessful()) {
+ InputStream inputStream = new ByteArrayInputStream(response.body().bytes());
+ FileModel fileModel = uploadFileService.uploadWxCode(inputStream,memberId.toString());
+ inputStream.close();
+ return fileModel.getFileUrl();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
@Override
public Member updateMember(UpdateMemberRequest updateMemberRequest){
@@ -571,4 +680,13 @@
Integer integer = integralService.dealIntegral(dealIntegralRequest);
return integer;
}
+
+
+
+
+
+
+
+
+
}
--
Gitblit v1.9.3