From 56fcde8c93a1a10bc50fac775e370a2db57f520e Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期二, 20 一月 2026 17:08:30 +0800
Subject: [PATCH] 小程序   接口开发

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  183 ++++++++++++++++++++++++++-------------------
 1 files changed, 104 insertions(+), 79 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 f405e38..51363f3 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
@@ -27,6 +27,7 @@
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.system.SystemUserMapper;
 import com.doumee.dao.system.dto.MemberRechargeDTO;
+import com.doumee.dao.system.dto.PlatformConfigDTO;
 import com.doumee.dao.web.dto.MemberOwnDTO;
 import com.doumee.dao.web.dto.shop.Position;
 import com.doumee.dao.system.model.SystemUser;
@@ -42,6 +43,7 @@
 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.service.system.SystemDictDataService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import io.swagger.models.auth.In;
 import io.swagger.util.Yaml;
@@ -79,6 +81,10 @@
     @Autowired
     private MemberMapper memberMapper;
     @Autowired
+    private CouponMapper couponMapper;
+    @Autowired
+    private MemberCouponJoinMapper memberCouponJoinMapper;
+    @Autowired
     private IntegralMapper integralMapper;
     @Autowired
     private ShopMapper shopMapper;
@@ -93,12 +99,18 @@
     @Autowired
     private MemberJoinMapper memberJoinMapper;
 
+    @Autowired
+    private InviteRecordMapper inviteRecordMapper;
+
 
     @Autowired
     private SystemUserMapper systemUserMapper;
 
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
+
+    @Autowired
+    private SystemDictDataService systemDictDataService;
 
     @Autowired
     private UploadFileService uploadFileService;
@@ -287,7 +299,7 @@
 
 
     @Override
-    public AccountResponse wxLogin(String code,Integer recId){
+    public AccountResponse wxLogin(String code){
         try {
             //鑾峰彇寰俊鏁忔劅鏁版嵁
             WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
@@ -304,9 +316,6 @@
             AccountResponse accountResponse = new AccountResponse();
             accountResponse.setSessionKey(session.getSessionKey());
             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());
@@ -333,80 +342,6 @@
         return accountResponse;
     }
 
-
-    /**
-     * 鏍规嵁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 AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest){
         try {
@@ -428,7 +363,9 @@
                 member.setIsdeleted(Constants.ZERO);
                 member.setType(Constants.ZERO);
                 member.setOrigin(Constants.ZERO);
-                member.setRecId(wxPhoneRequest.getRecId());
+                if(!this.checkIsCreateInvite(phone)){
+                    member.setRecId(Constants.getInviteCode(wxPhoneRequest.getRecId()));
+                }
                 member.setOpenId(wxPhoneRequest.getOpenid());
             }
             member.setPhone(phone);
@@ -437,6 +374,11 @@
                     systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
             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{
@@ -458,6 +400,89 @@
     }
 
 
+    /**
+     * 鍙戞斁娉ㄥ唽濂栧姳淇℃伅
+     * @param member
+     * @param platformConfigDTO
+     */
+    public void createRegionReward(Member member,PlatformConfigDTO platformConfigDTO){
+        //鏌ヨ鐢ㄦ埛鏄惁娉ㄩ攢杩�
+        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda()
+                .eq(Member::getIsdeleted,Constants.ONE)
+                .eq(Member::getPhone,member.getPhone())
+        )>Constants.ZERO){
+            return;
+        }
+        //寮�鍚敞鍐岄�佺Н鍒�
+        if(Constants.equalsInteger(platformConfigDTO.getRegIntegralRewardStatus(),Constants.ZERO)){
+            DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+            dealIntegralRequest.setIntegralNum(platformConfigDTO.getRegIntegralReward());
+            dealIntegralRequest.setDealType(Constants.ZERO);
+            dealIntegralRequest.setMemberId(member.getId());
+            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.REGISTER);
+            integralService.dealIntegral(dealIntegralRequest);
+        }
+        //寮�鍚敞鍐岄�佷紭鎯犲埜
+        if(Constants.equalsInteger(platformConfigDTO.getRegCouponRewardStatus(),Constants.ZERO)){
+            List<JSONObject> regCouponRewardList = platformConfigDTO.getRegCouponRewardList();
+            //[{"num":"2","couponId":6},{"num":"3","couponId":5}]
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(regCouponRewardList)){
+                List<MemberCoupon> memberCouponList = new ArrayList<>();
+                for (JSONObject jsonObject:regCouponRewardList) {
+                    Integer couponId = jsonObject.getInteger("couponId");
+                    Integer num = jsonObject.getInteger("num");
+                    Coupon coupon =  couponMapper.selectById(couponId);
+                    if(Objects.isNull(coupon)||Constants.equalsInteger(coupon.getIsdeleted(),Constants.ONE)&&num>Constants.ZERO){
+                        continue;
+                    }
+                    MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,member,new Date(),Constants.ZERO,null);
+                    for (int i = 0; i < num; i++) {
+                        memberCouponList.add(memberCoupon);
+                    }
+                }
+                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberCouponList)){
+                    memberCouponJoinMapper.insert(memberCouponList);
+                }
+            }
+        }
+    }
+
+
+    /**
+     * 鍒涘缓閭�璇疯褰�
+     * @param member
+     */
+    public void createInviteRecord(Member member,PlatformConfigDTO platformConfigDTO){
+        if(Objects.isNull(member.getRecId())){
+            return;
+        }
+        InviteRecord inviteRecord = new InviteRecord();
+        inviteRecord.setCreateDate(new Date());
+        inviteRecord.setIsdeleted(Constants.ZERO);
+        inviteRecord.setInviteId(member.getRecId());
+        inviteRecord.setMemberId(member.getId());
+        inviteRecord.setPhone(member.getPhone());
+        inviteRecord.setRewardIntegral(Objects.nonNull(platformConfigDTO)&&Constants.equalsInteger(platformConfigDTO.getShareIntegralRewardStatus(),Constants.ZERO)?
+                platformConfigDTO.getShareIntegralReward():BigDecimal.ZERO);
+        inviteRecord.setFirstOrderStatus(Constants.ZERO);
+        inviteRecordMapper.insert(inviteRecord);
+    }
+
+
+    /**
+     * 鏌ヨ鏄惁鍒涘缓杩囬個璇�
+     * @param mobile
+     * @return
+     */
+    public Boolean checkIsCreateInvite(String mobile){
+        return inviteRecordMapper.selectCount(new QueryWrapper<InviteRecord>()
+                .lambda()
+                .eq(InviteRecord::getPhone,mobile)
+        )>Constants.ZERO?true:false;
+    }
+
+
+
 
     public String createShareCode(Integer memberId){
         //鐢熸垚鍒嗕韩鐮�

--
Gitblit v1.9.3