From f52355f9be7f130b6f4655c05418d5dc3cbe4d2f Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 13 五月 2026 14:35:32 +0800
Subject: [PATCH] 代码生成
---
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 166 insertions(+), 6 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 1d4bd15..e0efcdd 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
@@ -3,6 +3,7 @@
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import com.alibaba.fastjson.JSONObject;
+import com.doumee.biz.system.OperationConfigBiz;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.jwt.JwtTokenUtil;
import com.doumee.config.wx.WxMiniConfig;
@@ -13,18 +14,24 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.CouponMapper;
+import com.doumee.dao.business.MemberCouponMapper;
import com.doumee.dao.business.OrdersMapper;
import com.doumee.dao.business.ShopInfoMapper;
import com.doumee.dao.business.SmsrecordMapper;
import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Coupon;
+import com.doumee.dao.business.model.MemberCoupon;
import com.doumee.dao.business.model.Orders;
import com.doumee.dao.business.model.ShopInfo;
import com.doumee.dao.business.model.MemberRevenue;
import com.doumee.dao.business.model.Smsrecord;
import com.doumee.dao.dto.MemberListQueryDTO;
+import com.doumee.dao.dto.OperationConfigDTO;
import com.doumee.dao.dto.UpdMobileRequest;
import com.doumee.dao.dto.WxPhoneRequest;
import com.doumee.dao.vo.AccountResponse;
+import com.doumee.dao.vo.MemberContactVO;
import com.doumee.dao.vo.MemberDetailVO;
import com.doumee.dao.vo.MemberListVO;
import com.doumee.dao.vo.PlatformAboutVO;
@@ -39,6 +46,7 @@
import io.swagger.annotations.ApiModelProperty;
import me.chanjar.weixin.common.error.WxErrorException;
import nonapi.io.github.classgraph.json.Id;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@@ -48,6 +56,7 @@
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Calendar;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
@@ -62,6 +71,7 @@
* @author 姹熻箘韫�
* @date 2025/07/09 12:00
*/
+@Slf4j
@Service
public class MemberServiceImpl implements MemberService {
@@ -85,6 +95,15 @@
@Autowired
private OrdersMapper ordersMapper;
+
+ @Autowired
+ private OperationConfigBiz operationConfigBiz;
+
+ @Autowired
+ private CouponMapper couponMapper;
+
+ @Autowired
+ private MemberCouponMapper memberCouponMapper;
@Override
@@ -353,13 +372,40 @@
* 闂ㄥ簵鐢ㄦ埛韬唤鏃讹紝濉厖闂ㄥ簵瀹℃牳鐘舵��
*/
private void fillShopInfo(UserCenterVO userCenterVO, Member member) {
- ShopInfo shopInfo = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
+ // 鏌ヨ姝e紡鐗堟湰闂ㄥ簵
+ ShopInfo official = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
.eq(ShopInfo::getRegionMemberId, member.getId())
+ .eq(ShopInfo::getVersionType, Constants.ZERO)
.eq(ShopInfo::getDeleted, Constants.ZERO)
.last("limit 1"));
- if (shopInfo != null) {
- userCenterVO.setShopId(shopInfo.getId());
- userCenterVO.setShopAuditStatus(shopInfo.getAuditStatus());
+ if (official != null) {
+ userCenterVO.setShopId(official.getId());
+ if (Constants.equalsInteger(official.getAuditStatus(), Constants.THREE)) {
+ // 姝e紡鐗堟湰宸叉敮浠樻娂閲戯紝鏌ヨ鏈�鏂板彉鏇寸増鏈姸鎬�
+ ShopInfo changeVersion = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
+ .eq(ShopInfo::getRelationShopId, official.getId())
+ .eq(ShopInfo::getVersionType, Constants.ONE)
+ .eq(ShopInfo::getDeleted, Constants.ZERO)
+ .orderByDesc(ShopInfo::getCreateTime)
+ .last("limit 1"));
+ if (changeVersion != null) {
+ if (Constants.equalsInteger(changeVersion.getAuditStatus(), Constants.THREE)) {
+ userCenterVO.setShopAuditStatus(Constants.THREE);
+ } else if (Constants.equalsInteger(changeVersion.getAuditStatus(), Constants.ZERO)) {
+ userCenterVO.setShopAuditStatus(4); // 鍙樻洿涓�
+ } else if (Constants.equalsInteger(changeVersion.getAuditStatus(), Constants.TWO)) {
+ userCenterVO.setShopAuditStatus(5); // 鍙樻洿鏈�氳繃
+ } else {
+ userCenterVO.setShopAuditStatus(Constants.THREE);
+ }
+ } else {
+ // 鏃犲彉鏇寸増鏈紝淇濇寔姝e紡鐗堟湰鐘舵��
+ userCenterVO.setShopAuditStatus(Constants.THREE);
+ }
+ } else {
+ // 姝e紡鐗堟湰鏈敮浠樻娂閲戯紝鐩存帴杩斿洖褰撳墠鐘舵��
+ userCenterVO.setShopAuditStatus(official.getAuditStatus());
+ }
}
// 鏍规嵁openid鏌ヨ褰撳墠缁戝畾鐨勯棬搴�
if (StringUtils.isNotBlank(member.getOpenid())) {
@@ -458,6 +504,7 @@
vo.setDriverPrivacyPolicy(getDictValue(Constants.DRIVER_PRIVACY_POLICY));
vo.setPriceDescription(getDictValue(Constants.PRICE_DESCRIPTION));
vo.setProhibitedItems(getDictValue(Constants.PROHIBITED_ITEMS));
+ vo.setServerPhone(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.SERVER_PHONE).getCode()));
return vo;
}
@@ -473,8 +520,14 @@
public void logOut(String token,Integer userId,Integer userType){
if(Constants.equalsInteger(userType,Constants.ZERO)){
memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" openid = null ").eq(Member::getId,userId));
- }else if(Constants.equalsInteger(userType,Constants.TWO)){
- shopInfoMapper.update(new UpdateWrapper<ShopInfo>().lambda().setSql(" openid = null ").eq(ShopInfo::getId,userId));
+ }else if (Constants.equalsInteger(userType,Constants.TWO)){
+ try {
+ Integer lastIndex = token.lastIndexOf("_")+1;
+ Integer tokenId = Integer.valueOf(token.substring(lastIndex));
+ memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" LOGIN_SHOP_ID = null ").eq(Member::getId,tokenId));
+ }catch (Exception e){
+
+ }
}
jwtTokenUtil.logout(token);
}
@@ -491,6 +544,31 @@
);
}
redisTemplate.delete(token);
+ }
+
+ @Override
+ public MemberContactVO getContactInfo(Integer memberId) {
+ MemberContactVO vo = new MemberContactVO();
+ // 浼樺厛浠庡巻鍙茶鍗曞彇鏀朵欢浜轰俊鎭�
+ Orders lastOrder = ordersMapper.selectOne(new QueryWrapper<Orders>().lambda()
+ .eq(Orders::getMemberId, memberId)
+ .eq(Orders::getDeleted, Constants.ZERO)
+ .isNotNull(Orders::getTakeUser)
+ .ne(Orders::getTakeUser, "")
+ .orderByDesc(Orders::getId)
+ .last("limit 1"));
+ if (lastOrder != null && StringUtils.isNotBlank(lastOrder.getTakeUser())) {
+ vo.setName(lastOrder.getTakeUser());
+ vo.setPhone(lastOrder.getTakePhone());
+ return vo;
+ }
+ // 鍙栫敤鎴蜂俊鎭�
+ Member member = memberMapper.selectById(memberId);
+ if (member != null) {
+ vo.setName(member.getName() != null ? member.getName() : "");
+ vo.setPhone(member.getTelephone() != null ? member.getTelephone() : "");
+ }
+ return vo;
}
@@ -642,4 +720,86 @@
);
}
+ @Override
+ public void giftRegisterCoupon() {
+ // 1. 璇诲彇閰嶇疆
+ OperationConfigDTO config = operationConfigBiz.getConfig();
+ String yearsStr = config.getRegisterCouponYears();
+ String maxGiftStr = config.getRegisterCouponGiftCount();
+ String couponIdStr = config.getRegisterCouponId();
+ if (StringUtils.isBlank(yearsStr) || StringUtils.isBlank(maxGiftStr) || StringUtils.isBlank(couponIdStr)) {
+ return;
+ }
+ int configYears = Integer.parseInt(yearsStr);
+ int maxGiftCount = Integer.parseInt(maxGiftStr);
+ int couponId = Integer.parseInt(couponIdStr);
+ if (configYears <= 0 || maxGiftCount <= 0) {
+ return;
+ }
+
+ // 2. 鏍¢獙浼樻儬鍒稿瓨鍦ㄤ笖鍚敤
+ Coupon coupon = couponMapper.selectById(couponId);
+ if (coupon == null || !Constants.equalsInteger(coupon.getIsdeleted(), Constants.ZERO)
+ || !Constants.equalsInteger(coupon.getStatus(), Constants.ZERO)) {
+ return;
+ }
+
+ // 3. 鏌ヨ鎵�鏈夋櫘閫氫細鍛�
+ List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda()
+ .eq(Member::getDeleted, Constants.ZERO)
+ .eq(Member::getStatus, Constants.ZERO)
+ .eq(Member::getUserType, Constants.ZERO)
+ .isNotNull(Member::getCreateTime));
+
+ Date now = new Date();
+ long msPerYear = 365L * 24 * 60 * 60 * 1000;
+ int giftedMemberCount = 0;
+
+ for (Member member : members) {
+ int alreadyGifted = member.getRegisterCouponGiftCount() != null ? member.getRegisterCouponGiftCount() : 0;
+ // 宸叉敞鍐屽勾鏁帮紙鍙栨暣锛�
+ int registeredYears = (int) ((now.getTime() - member.getCreateTime().getTime()) / msPerYear);
+ // 搴旇禒閫佹�绘鏁�
+ int shouldGiftTotal = registeredYears / configYears;
+ // 瀹為檯杩橀渶璧犻�佹鏁�
+ int remainGift = Math.min(shouldGiftTotal, maxGiftCount) - alreadyGifted;
+ if (remainGift <= 0) {
+ continue;
+ }
+
+ // 4. 璧犻�佷紭鎯犲埜
+ for (int i = 0; i < remainGift; i++) {
+ MemberCoupon mc = new MemberCoupon();
+ mc.setCouponId(couponId);
+ mc.setMemberId(member.getId());
+ mc.setStatus(Constants.CouponStatus.waitClaim.getKey());
+ // 鎺ㄩ�佸悗棰嗗彇鏈夋晥鏈�
+ Calendar validCal = Calendar.getInstance();
+ validCal.add(Calendar.DAY_OF_MONTH, coupon.getPushDays() != null ? coupon.getPushDays() : 7);
+ mc.setValidDate(validCal.getTime());
+ // 鎷疯礉浼樻儬鍒镐俊鎭�
+ mc.setName(coupon.getName());
+ mc.setInfo(coupon.getInfo());
+ mc.setType(coupon.getType());
+ mc.setLimitPrice(coupon.getLimitPrice());
+ mc.setPrice(coupon.getPrice());
+ mc.setGetMethod(coupon.getGetMethod());
+ mc.setCouponType(coupon.getCouponType());
+ mc.setPushDays(coupon.getPushDays());
+ mc.setValidDays(coupon.getValidDays());
+ mc.setIsdeleted(Constants.ZERO);
+ mc.setCreateDate(now);
+ mc.setEditDate(now);
+ memberCouponMapper.insert(mc);
+ }
+
+ // 5. 鏇存柊浼氬憳宸茶禒閫佹鏁�
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(Member::getRegisterCouponGiftCount, alreadyGifted + remainGift)
+ .eq(Member::getId, member.getId()));
+ giftedMemberCount++;
+ }
+ log.info("娉ㄥ唽婊″勾璧犻�佷紭鎯犲埜瀹屾垚锛屽叡澶勭悊{}鍚嶄細鍛�", giftedMemberCount);
+ }
+
}
--
Gitblit v1.9.3