From 4f30734588eb34ea2d7c27856f72ce40da8ab365 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期六, 28 二月 2026 12:01:10 +0800
Subject: [PATCH] 小程序 接口开发
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 163 +++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 112 insertions(+), 51 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 75d7051..217c3c1 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
@@ -57,6 +57,7 @@
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -120,6 +121,9 @@
@Autowired
private IntegralService integralService;
+
+ @Autowired
+ private RedisTemplate<String,Object> redisTemplate;
@Override
public Integer create(Member member) {
@@ -249,13 +253,13 @@
.or().like(Member::getName,pageWrap.getModel().getNickname())
.or().like(Member::getPhone,pageWrap.getModel().getNickname())
);
- queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getShopName()),Shop::getStatus,pageWrap.getModel().getShopName());
+ queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getShopName()),Shop::getName,pageWrap.getModel().getShopName());
queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Member::getStatus,pageWrap.getModel().getStatus());
queryWrapper.eq(Member::getIsdeleted,Constants.ZERO);
queryWrapper.ge(pageWrap.getModel().getStarttime()!=null, Member::getCreateDate,pageWrap.getModel().getStarttime());
queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Member::getCreateDate, pageWrap.getModel().getEndtime());
- queryWrapper.orderByDesc(Member::getCreateDate);
+ queryWrapper.orderByDesc(Member::getId);
IPage<Member> result = memberJoinMapper.selectJoinPage(page, Member.class, queryWrapper);
@@ -265,6 +269,10 @@
for(Member model:result.getRecords()){
if(StringUtils.isNotBlank(model.getImgurl())){
model.setImgFullUrl(path);
+ }
+ model.setTotalReduceIntegral(Constants.formatBigdecimal(model.getTotalIntegral()).subtract(Constants.formatBigdecimal(model.getIntegral())));
+ if(model.getTotalReduceIntegral().compareTo(new BigDecimal(0)) <=0){
+ model.setTotalReduceIntegral(new BigDecimal(0));
}
}
}
@@ -308,17 +316,16 @@
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
}
Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, openId)
- .eq(Member::getIsdeleted,Constants.ZERO)
+ .eq(Member::getIsdeleted,Constants.ZERO).eq(Member::getStatus,Constants.ZERO)
.last(" limit 1"));
AccountResponse accountResponse = new AccountResponse();
if(Objects.nonNull(member)){
memberMapper.updateById(member);
- member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
- systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
- //鍒涘缓token
- JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
- String token = JwtTokenUtil.generateToken(payLoad);
+ member.setImgFullUrl(StringUtils.isNotBlank(member.getImgurl())?systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl():null);
+ String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
accountResponse.setToken(token);
+ accountResponse.setOpenid(openId);
accountResponse.setMember(member);
}else{
accountResponse.setOpenid(openId);
@@ -332,16 +339,7 @@
@Override
- public AccountResponse wxLoginTest( Integer memberId){
- //鍒涘缓token
- JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+memberId);
- String token = JwtTokenUtil.generateToken(payLoad);
- AccountResponse accountResponse = new AccountResponse();
- accountResponse.setToken(token);
- return accountResponse;
- }
-
- @Override
+ @Transactional(rollbackFor = {Exception.class,BusinessException.class})
public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest){
try {
WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNumber(wxPhoneRequest.getCode());
@@ -349,43 +347,41 @@
if(Objects.isNull(phone)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈幏鍙栧埌鎵嬫満鍙�");
}
- Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, wxPhoneRequest.getOpenid())
- .eq(Member::getIsdeleted,Constants.ZERO)
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getPhone, phone)
+ .eq(Member::getIsdeleted,Constants.ZERO).eq(Member::getStatus,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);
if(!this.checkIsCreateInvite(phone)){
- member.setRecId(Constants.getInviteCode(wxPhoneRequest.getRecId()));
+ member.setRecId(wxPhoneRequest.getRecId());
}
- member.setOpenId(wxPhoneRequest.getOpenid());
+ member.setIntegral(BigDecimal.ZERO);
+ member.setPhone(phone);
+ member.setStatus(Constants.ZERO);
}
- member.setPhone(phone);
+ member.setOpenId(wxPhoneRequest.getOpenid());
member.setEditDate(new Date());
- member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
- systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
+ member.setImgFullUrl(StringUtils.isNotBlank(member.getImgurl())?systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl():null);
if(Objects.isNull(member.getId())){
memberMapper.insert(member);
-
PlatformConfigDTO platformConfigDTO = systemDictDataService.getPlatformConfigDTO();
this.createRegionReward(member,platformConfigDTO);
//鍒涘缓閭�璇疯褰�
this.createInviteRecord(member,platformConfigDTO);
- member.setSharingCode(this.createShareCode(member.getId()));
memberMapper.updateById(member);
}else{
- if(StringUtils.isBlank(member.getSharingCode())){
- member.setSharingCode(this.createShareCode(member.getId()));
- }
memberMapper.updateById(member);
}
- JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
- String token = JwtTokenUtil.generateToken(payLoad);
+ if(Objects.nonNull(wxPhoneRequest.getShopId())){
+ this.bindShopInfo(member.getId(),wxPhoneRequest.getShopId());
+ }
+ String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
AccountResponse accountResponse = new AccountResponse();
accountResponse.setToken(token);
accountResponse.setMember(member);
@@ -417,7 +413,7 @@
dealIntegralRequest.setDealType(Constants.ZERO);
dealIntegralRequest.setMemberId(member.getId());
dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.REGISTER);
- integralService.dealIntegral(dealIntegralRequest);
+ integralService.dealIntegral(dealIntegralRequest,null);
}
//寮�鍚敞鍐岄�佷紭鎯犲埜
if(Constants.equalsInteger(platformConfigDTO.getRegCouponRewardStatus(),Constants.ZERO)){
@@ -426,6 +422,9 @@
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(regCouponRewardList)){
List<MemberCoupon> memberCouponList = new ArrayList<>();
for (JSONObject jsonObject:regCouponRewardList) {
+ if(!jsonObject.containsKey("couponId")||!jsonObject.containsKey("num")){
+ continue;
+ }
Integer couponId = jsonObject.getInteger("couponId");
Integer num = jsonObject.getInteger("num");
Coupon coupon = couponMapper.selectById(couponId);
@@ -434,6 +433,10 @@
}
MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,member,new Date(),Constants.ZERO,null);
for (int i = 0; i < num; i++) {
+ //婊″噺鍗蜂笉浼氱敓鎴恗axPrice 闇�瑕佹牴鎹紭鎯犲埜鍑忓皯閲戦璁剧疆
+ if(Constants.equalsInteger(coupon.getCouponType(),Constants.ZERO)){
+ memberCoupon.setMaxPrice(coupon.getPrice());
+ }
memberCouponList.add(memberCoupon);
}
}
@@ -463,6 +466,21 @@
platformConfigDTO.getShareIntegralReward():BigDecimal.ZERO);
inviteRecord.setFirstOrderStatus(Constants.ZERO);
inviteRecordMapper.insert(inviteRecord);
+ //璧犻�侀個璇风Н鍒�
+ //寮�鍚個璇锋敞鍐岄�佺Н鍒�
+ if(Constants.equalsInteger(platformConfigDTO.getShareIntegralRewardStatus(),Constants.ZERO)){
+ DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+ dealIntegralRequest.setIntegralNum(platformConfigDTO.getShareIntegralReward());
+ dealIntegralRequest.setDealType(Constants.ZERO);
+ dealIntegralRequest.setMemberId(member.getRecId());
+ dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.INVITENEWUSER);
+ dealIntegralRequest.setParam1(member.getNickname());
+ integralService.dealIntegral(dealIntegralRequest,null);
+ //娣诲姞娑堟伅璁板綍
+
+
+
+ }
}
@@ -514,23 +532,20 @@
@Override
- public Member updateMember(UpdateMemberRequest updateMemberRequest){
+ public void updateMember(UpdateMemberRequest updateMemberRequest){
if(StringUtils.isBlank(updateMemberRequest.getImgurl())
&& StringUtils.isBlank(updateMemberRequest.getNickname())
&& StringUtils.isBlank(updateMemberRequest.getName())
){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
- Member member = new Member();
- BeanUtils.copyProperties(updateMemberRequest,member);
- member.setId(updateMemberRequest.getMemberId());
- member.setEditor(updateMemberRequest.getMemberId());
- member.setEditDate(new Date());
- memberMapper.updateById(member);
- Member dbMember = memberMapper.selectById(updateMemberRequest.getMemberId());
- dbMember.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
- systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+dbMember.getImgurl());
- return dbMember;
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(StringUtils.isNotBlank(updateMemberRequest.getImgurl()),Member::getImgurl,updateMemberRequest.getImgurl())
+ .set(StringUtils.isNotBlank(updateMemberRequest.getNickname()),Member::getNickname,updateMemberRequest.getNickname())
+ .set(StringUtils.isNotBlank(updateMemberRequest.getName()),Member::getName,updateMemberRequest.getName())
+ .set(Member::getEditDate,DateUtil.getCurrDateTime())
+ .eq(Member::getId,updateMemberRequest.getMemberId())
+ );
}
@@ -614,15 +629,15 @@
if(StringUtils.isNotBlank(member.getPhone())&&!member.getPhone().equals(request.getPhone())){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎵嬫満鍙烽敊璇�");
}
- this.verifyPhoneCode(request.getCode(),request.getMemberId());
+ this.verifyPhoneCode(request.getCode(),request.getPhone());
}
- public void verifyPhoneCode(String code,Integer memberId){
+ public void verifyPhoneCode(String code,String phone){
//楠岃瘉鐮�
Smsrecord smsrecord = smsrecordMapper.selectOne(new QueryWrapper<Smsrecord>().lambda()
.eq(Smsrecord::getIsdeleted,Constants.ZERO)
.eq(Smsrecord::getCode,code)
- .eq(Smsrecord::getMemberId,memberId)
+ .eq(Smsrecord::getPhone,phone)
.last(" limit 1")
);
if(Objects.isNull(smsrecord)){
@@ -650,11 +665,15 @@
){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
+ //鍒ゆ柇鏂版墜鏈哄彿鏄惁宸茶浣跨敤
+ if(memberMapper.selectCount(new QueryWrapper<Member>().lambda().eq(Member::getPhone,request.getPhone()))>Constants.ZERO){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,鏂版墜鏈哄彿宸茶缁戝畾,鏃犳硶杩涜鎹㈢粦锛�");
+ }
Member member = memberMapper.selectById(request.getMemberId());
if(StringUtils.isNotBlank(member.getPhone())&&member.getPhone().equals(request.getPhone())){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犳硶鏇存崲鐩稿悓鎵嬫満鍙�");
}
- this.verifyPhoneCode(request.getCode(),request.getMemberId());
+ this.verifyPhoneCode(request.getCode(),request.getPhone());
memberMapper.update(new UpdateWrapper<Member>().lambda()
.eq(Member::getPhone,request.getPhone())
.eq(Member::getId,request.getMemberId())
@@ -715,7 +734,7 @@
dealIntegralRequest.setObjId(s.getId());
dealIntegralRequest.setOrderCode(null);
dealIntegralRequest.setDealType(memberRechargeDTO.getIntegralType());
- integralService.dealIntegral(dealIntegralRequest);
+ integralService.dealIntegral(dealIntegralRequest,null);
});
// integralService.dealIntegral()
} catch (Exception e) {
@@ -749,15 +768,57 @@
dealIntegralRequest.setObjId(memberRechargeDTO.getMemberId());
dealIntegralRequest.setOrderCode(null);
dealIntegralRequest.setDealType(memberRechargeDTO.getIntegralType());
- Integer integer = integralService.dealIntegral(dealIntegralRequest);
+ Integer integer = integralService.dealIntegral(dealIntegralRequest,null);
return integer;
}
+ @Override
+ public void logOut(String token,Integer memberId){
+ Member member = memberMapper.selectById(memberId);
+ if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getOpenId())){
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(Member::getOpenId,null)
+ .eq(Member::getId,member.getId())
+ );
+ }
+ redisTemplate.delete(token);
+ }
+ @Override
+ public void logOff(String token,Integer memberId){
+ Member member = memberMapper.selectById(memberId);
+ if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getOpenId())){
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+// .set(Member::getOpenId,null)
+ .set(Member::getStatus,Constants.TWO)
+ .eq(Member::getId,member.getId())
+ );
+ }
+ redisTemplate.delete(token);
+ }
+ @Override
+ public void bindShopInfo(Integer memberId,Integer recId){
+ Member member = memberMapper.selectById(memberId);
+ if(Objects.isNull(member)){
+ return;
+ }
+ if (Objects.nonNull(member.getBindShopId())) {
+ return;
+ }
+ Shop shop = shopMapper.selectById(recId);
+ if(Objects.nonNull(shop)){
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(Member::getBindShopId,recId)
+ .set(Member::getBindShopDate,new Date())
+ .eq(Member::getId,member.getId())
+ );
+ }
+ }
+
--
Gitblit v1.9.3