From 372822d209a560b017294b594906aa89bd46f4ce Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 11 七月 2025 09:02:41 +0800
Subject: [PATCH] 111
---
server/services/src/main/java/com/doumee/core/constants/ResponseStatus.java | 3
server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java | 76 +++
server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java | 42 -
server/web/src/main/java/com/doumee/api/web/ApiController.java | 52 ++
server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java | 12
server/services/src/main/java/com/doumee/service/business/IdentityInfoService.java | 5
server/web/src/main/java/com/doumee/api/web/AccountApi.java | 58 ++
server/services/src/main/java/com/doumee/config/mybatis/SpringUtils.java | 69 +++
server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java | 137 +++++
server/services/src/main/java/com/doumee/config/jwt/JwtProperties.java | 27 +
server/services/src/main/java/com/doumee/dao/vo/AccountResponse.java | 30 +
server/web/src/main/java/com/doumee/api/web/UserApi.java | 127 +++++
server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java | 110 ++++
server/web/src/main/java/com/doumee/api/web/OrdersApi.java | 51 ++
server/pom.xml | 19
server/services/src/main/java/com/doumee/core/constants/Constants.java | 9
server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java | 130 ++++
server/services/src/main/java/com/doumee/dao/vo/UserCenterVO.java | 46 ++
server/services/src/main/java/com/doumee/dao/business/model/Orders.java | 10
server/services/src/main/java/com/doumee/service/business/MemberService.java | 52 ++
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 216 +++++++++
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 47 +
server/services/src/main/java/com/doumee/dao/business/model/Member.java | 21
server/services/src/main/java/com/doumee/dao/dto/WxPhoneRequest.java | 28 +
24 files changed, 1,308 insertions(+), 69 deletions(-)
diff --git a/server/pom.xml b/server/pom.xml
index 1c0db03..38b3e63 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -37,6 +37,7 @@
<jna.version>5.7.0</jna.version>
<poi.version>5.0.0</poi.version>
<jjwt.version>0.9.1</jjwt.version>
+ <weixin-java-pay.version>4.1.0</weixin-java-pay.version>
</properties>
<dependencyManagement>
<dependencies>
@@ -230,6 +231,24 @@
<artifactId>bcprov-jdk15on</artifactId>
<version>1.60</version>
</dependency>
+
+ <!-- WeChat 灏忕▼搴� -->
+ <dependency>
+ <groupId>com.github.binarywang</groupId>
+ <artifactId>weixin-java-miniapp</artifactId>
+ <version>4.7.0</version>
+ </dependency>
+ <!-- WeChat 鏀粯 -->
+ <dependency>
+ <groupId>com.github.binarywang</groupId>
+ <artifactId>weixin-java-pay</artifactId>
+ <version>${weixin-java-pay.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.github.wechatpay-apiv3</groupId>
+ <artifactId>wechatpay-java</artifactId>
+ <version>0.2.12</version>
+ </dependency>
<!-- <dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-storage-blob</artifactId>
diff --git a/server/services/src/main/java/com/doumee/config/jwt/JwtProperties.java b/server/services/src/main/java/com/doumee/config/jwt/JwtProperties.java
new file mode 100644
index 0000000..790d57a
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/config/jwt/JwtProperties.java
@@ -0,0 +1,27 @@
+package com.doumee.config.jwt;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@ConfigurationProperties(prefix = "auth.jwt")
+@Component
+public class JwtProperties {
+
+ //鏄惁寮�鍚疛WT锛屽嵆娉ㄥ叆鐩稿叧鐨勭被瀵硅薄
+ private Boolean enabled;
+ //JWT瀵嗛挜
+ private String secret;
+ //JWT鏈夋晥鏃堕棿
+ private Long expiration;
+ //鍓嶇鍚戝悗绔紶閫扟WT鏃朵娇鐢℉TTP鐨刪eader鍚嶇О锛屽墠鍚庣瑕佺粺涓�
+ private String header;
+ //鐢ㄦ埛鐧诲綍-鐢ㄦ埛鍚嶅弬鏁板悕绉�
+ private String userParamName = "username";
+ //鐢ㄦ埛鐧诲綍-瀵嗙爜鍙傛暟鍚嶇О
+ private String pwdParamName = "password";
+ //鏄惁浣跨敤榛樿鐨凧WTAuthController
+ private Boolean useDefaultController = false;
+
+}
\ No newline at end of file
diff --git a/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
new file mode 100644
index 0000000..f1e4399
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -0,0 +1,137 @@
+package com.doumee.config.jwt;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.utils.HttpsUtil;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.model.SystemUser;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+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;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+@Component
+@Slf4j
+public class JwtTokenUtil {
+
+ public static final String HEADER_KEY = "token";
+
+ public static final String MEMBER_ID = "MEMBER_ID";
+
+ public static final String MEMBER_INFO = "MEMBER_INFO";
+
+ @Resource
+ private RedisTemplate<String,Object> redisTemplate;
+
+ @Resource
+ private JwtProperties jwtProperties;
+
+ /**
+ * 鐢熸垚token浠ょ墝
+ *
+ * @param member 浠ょ墝涓惡甯︾殑闄勫姞淇℃伅
+ * @return 浠oken鐗�
+ */
+ public String generateToken(Member member) {
+ if(member == null){
+ return null;
+ }
+ Map<String,Object> map = new HashMap<>();
+ map.put("id",member.getId());
+ return generateTokenDo(member);
+ }
+
+
+ public Member getUserInfoByToken(String token) {
+ try {
+ Member member = getClaimsFromToken(token);
+ return member;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ /**
+ * 鍒锋柊浠ょ墝
+ *
+ * @param token 鍘熶护鐗�
+ * @return 鏂颁护鐗�
+ */
+ public void refreshToken(String token,Member member) {
+ try {
+ if(Objects.nonNull(member)){
+ redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(member),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+ }
+ } catch (Exception e) {
+
+ }
+ }
+
+
+ /**
+ * 閫�鍑虹櫥闄�
+ *
+ * @param token 鍘熶护鐗�
+ * @return 鏂颁护鐗�
+ */
+ public void logoutForH5(String token) {
+ try {
+ //鍒犻櫎鑰佺殑token
+ redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 浠巆laims鐢熸垚浠ょ墝,濡傛灉鐪嬩笉鎳傚氨鐪嬭皝璋冪敤瀹�
+ *
+ * @return 浠ょ墝
+ */
+ private String generateTokenDo(Member member) {
+ Map<String, Object> claims = new HashMap<>();
+ claims.put("id",member.getId());
+ Date expirationDate = new Date(System.currentTimeMillis() + jwtProperties.getExpiration());
+ String token = Jwts.builder().setClaims(claims)
+ .setExpiration(expirationDate)
+ .signWith(SignatureAlgorithm.HS512, jwtProperties.getSecret())
+ .compact();
+ redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(member),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+ return token;
+ }
+
+
+ /**
+ * 浠庝护鐗屼腑鑾峰彇鏁版嵁澹版槑,楠岃瘉JWT绛惧悕
+ *
+ * @param token 浠ょ墝
+ * @return 鏁版嵁澹版槑
+ */
+ private Member getClaimsFromToken(String token) {
+ Member claims;
+ try {
+ String userInfo = (String) redisTemplate.opsForValue().get(Constants.REDIS_TOKEN_KEY+token);
+ claims = JSONObject.toJavaObject(JSONObject.parseObject(userInfo),Member.class);
+ } catch (Exception e) {
+ claims = null;
+ }
+ return claims;
+ }
+
+}
\ No newline at end of file
diff --git a/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java b/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java
new file mode 100644
index 0000000..f55b4d5
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java
@@ -0,0 +1,110 @@
+package com.doumee.config.jwt;
+
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.core.annotation.LoginRequired;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.business.model.Member;
+import io.jsonwebtoken.JwtException;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Objects;
+
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+
+ @Autowired
+ private JdbcTemplate dao;
+
+ @Resource
+ private JwtTokenUtil jwtTokenUtil;
+
+ /**
+ * 娣诲姞鎷︽埅鍣�
+ */
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ //API鎺ュ彛JwtToken鎷︽埅鍣�
+ HandlerInterceptor TokenInterceptor = new HandlerInterceptor() {
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+ // 濡傛灉涓嶆槸鏄犲皠鍒版柟娉曠洿鎺ラ�氳繃
+ if (!(handler instanceof HandlerMethod)) {
+ return true;
+ }
+ HandlerMethod handlerMethod = (HandlerMethod) handler;
+
+ Class<?> beanType = handlerMethod.getBeanType();
+
+ // 鏈� @LoginRequired 娉ㄨВ锛岄渶瑕佺櫥褰曡璇�
+ if (beanType.isAnnotationPresent(LoginRequired.class)) {
+ //鑾峰彇token
+ String token = request.getHeader(JwtTokenUtil.HEADER_KEY); // 浠� http 璇锋眰澶翠腑鍙栧嚭 token
+ if (StringUtils.isNotBlank(token)) {
+ checkLogin(request,response);
+ } else {
+ throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鏈櫥褰�");
+ }
+ }else if (handlerMethod.hasMethodAnnotation(LoginRequired.class)){
+ //鑾峰彇token
+ String token = request.getHeader(JwtTokenUtil.HEADER_KEY); // 浠� http 璇锋眰澶翠腑鍙栧嚭 token
+ if (StringUtils.isNotBlank(token)) {
+ checkLogin(request,response);
+ } else {
+ throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鏈櫥褰�");
+ }
+ }
+ return true;
+ }
+ };
+ registry.addInterceptor(TokenInterceptor).addPathPatterns("/web/**");
+ }
+
+
+
+ public Boolean checkLogin(HttpServletRequest request, HttpServletResponse response){
+ String token = request.getHeader(JwtTokenUtil.HEADER_KEY);
+ try {
+ Member member = jwtTokenUtil.getUserInfoByToken(token);
+ if(Objects.isNull(member)){
+ throw new BusinessException(ResponseStatus.TOKEN_EXCEED_TIME.getCode(),"闀挎椂闂存湭鎿嶄綔,璇烽噸鏂扮櫥褰�");
+ }
+ Integer isDeleted = dao.queryForObject(" select COALESCE(isdeleted,1) from member where id = ?", Integer.class, member.getId());
+ if(isDeleted.equals(Constants.ONE)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
+ }
+ Integer count = dao.queryForObject("select count(1) from member where id = ?", Integer.class, member.getId());
+ if (count != null && count > 0) {
+ jwtTokenUtil.refreshToken(token,member);
+ request.setAttribute(JwtTokenUtil.MEMBER_INFO, JSONObject.toJSONString(member));
+ request.setAttribute(JwtTokenUtil.MEMBER_ID, member.getId());
+ return true;
+ }else{
+ throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鐢ㄦ埛淇℃伅鍑洪敊");
+ }
+ } catch (IllegalArgumentException | JwtException e) {
+ throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鏈櫥褰�");
+ }
+ }
+
+ @Bean
+ public RestTemplate getRestTemplate(){
+ return new RestTemplate();
+ }
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/config/mybatis/SpringUtils.java b/server/services/src/main/java/com/doumee/config/mybatis/SpringUtils.java
new file mode 100644
index 0000000..f813d05
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/config/mybatis/SpringUtils.java
@@ -0,0 +1,69 @@
+package com.doumee.config.mybatis;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+/**
+ * NOTICE: NEVER USE IT WHEN REGISTERING A SPRING BEAN.
+ *
+ * @author Guang YANG
+ */
+@Component
+public class SpringUtils implements ApplicationContextAware {
+
+ private static ApplicationContext CTX;
+
+ public static ApplicationContext get() {
+ return CTX;
+ }
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ CTX = applicationContext;
+ }
+
+ /**
+ * 鍚戝鍣ㄤ腑鍔ㄦ�佹坊鍔燘ean
+ *
+ * @param ctx
+ * @param beanName
+ * @param beanClass
+ */
+ public static void addBean(ApplicationContext ctx, String beanName, Class beanClass) {
+ BeanDefinitionRegistry beanDefReg = (DefaultListableBeanFactory)ctx.getAutowireCapableBeanFactory();
+ BeanDefinitionBuilder beanDefBuilder = BeanDefinitionBuilder.genericBeanDefinition(beanClass);
+ BeanDefinition beanDef = beanDefBuilder.getBeanDefinition();
+ if (!beanDefReg.containsBeanDefinition(beanName)) {
+ beanDefReg.registerBeanDefinition(beanName, beanDef);
+ }
+ }
+
+ /**
+ * 浠庡鍣ㄤ腑绉婚櫎Bean
+ *
+ * @param ctx
+ * @param beanName
+ */
+ public static void removeBean(ApplicationContext ctx, String beanName) {
+ BeanDefinitionRegistry beanDefReg = (DefaultListableBeanFactory) ctx.getAutowireCapableBeanFactory();
+ beanDefReg.getBeanDefinition(beanName);
+ beanDefReg.removeBeanDefinition(beanName);
+ }
+
+ /**
+ * 閬嶅巻杈撳嚭鎵�鏈塀ean鐨勪俊鎭�
+ */
+ static void showAllBeans(ApplicationContext ctx) {
+ //閬嶅巻
+ for (String name : ctx.getBeanDefinitionNames()) {
+ System.out.println("name:" + name + ",class:" + ctx.getBean(name).getClass());
+ }
+ }
+
+}
diff --git a/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java b/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java
new file mode 100644
index 0000000..f93edef
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java
@@ -0,0 +1,76 @@
+package com.doumee.config.wx;
+
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
+import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.mybatis.SpringUtils;
+import com.doumee.core.constants.Constants;
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import com.github.binarywang.wxpay.constant.WxPayConstants;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * 寰俊灏忕▼搴忕粍浠�
+ */
+@Configuration
+public class WxMiniConfig {
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+ /********寰俊灏忕▼搴忔湇鍔�**********/
+ public static WxMaService wxMaService;
+ /********寰俊灏忕▼搴忔敮浠�**********/
+ public static WxPayService wxPayService;
+
+ public static WxMiniConfig me() {
+ return SpringUtils.get().getBean(WxMiniConfig.class);
+ }
+
+ @PostConstruct
+ void init() {
+ this.load_WxMaService();
+// this.load_wxPayService();
+ }
+ /**
+ * 鍒濆鍖栧井淇″皬绋嬪簭
+ */
+ public void load_WxMaService() {
+ WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
+ config.setAppid(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.WX_CONFIG,Constants.APPID).getCode()));
+ config.setSecret(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.WX_CONFIG,Constants.SECRET).getCode()));
+ config.setMsgDataFormat("JSON");
+ //config.setToken("");
+ //config.setAesKey("");
+ WxMaService wxMaService = new WxMaServiceImpl();
+ wxMaService.setWxMaConfig(config);
+ this.wxMaService = wxMaService;
+ }
+
+ /**
+ * 鍒濆鍖栧井淇″皬绋嬪簭鏀粯
+ */
+// public void load_wxPayService() {
+// WxPayConfig payConfig = new WxPayConfig();
+// payConfig.setTradeType(WxPayConstants.TradeType.JSAPI);
+// payConfig.setSignType(WxPayConstants.SignType.MD5);
+// payConfig.setAppId(StringUtils.trimToNull(sysDictService.getSysDictValue(SysDictEnum.WX_MINI_AppID.getCode())));
+// payConfig.setMchId(StringUtils.trimToNull(sysDictService.getSysDictValue(SysDictEnum.WX_MINI_MchId.getCode())));
+// payConfig.setMchKey(StringUtils.trimToNull(sysDictService.getSysDictValue(SysDictEnum.WX_MINI_MchKey.getCode())));
+// payConfig.setKeyPath(StringUtils.trimToNull(sysDictService.getSysDictValue(SysDictEnum.WX_MINI_KeyPath.getCode())));
+// payConfig.setNotifyUrl(StringUtils.trimToNull(sysDictService.getSysDictValue(SysDictEnum.WX_MINI_NotifyUrl.getCode())));
+// WxPayService wxPayService = new WxPayServiceImpl();
+// wxPayService.setConfig(payConfig);
+// this.wxPayService = wxPayService;
+// }
+
+
+
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java b/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java
new file mode 100644
index 0000000..e406b69
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java
@@ -0,0 +1,12 @@
+package com.doumee.core.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.METHOD,ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface LoginRequired {
+
+}
diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index 46e31ec..7fa6160 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -42,6 +42,15 @@
public static final String WISDOM_SYSTEM ="WISDOM_SYSTEM" ;
public static final String FOOT_WORDS ="FOOT_WORDS" ;
+ public static final String WX_CONFIG ="WX_CONFIG" ;
+ public static final String APPID ="APPID" ;
+ public static final String SECRET ="SECRET" ;
+ public static final String ACCESS_TOKEN ="ACCESS_TOKEN" ;
+ public static final String SERVER_INTRODUCE ="SERVER_INTRODUCE" ;
+ public static final String FEE_STANDARDS ="FEE_STANDARDS" ;
+ public static final String ABOUT_US ="ABOUT_US" ;
+
+
public static final String QYWX = "QYWX";
public static final Integer ONE = 1;
diff --git a/server/services/src/main/java/com/doumee/core/constants/ResponseStatus.java b/server/services/src/main/java/com/doumee/core/constants/ResponseStatus.java
index 68680c8..6e58040 100644
--- a/server/services/src/main/java/com/doumee/core/constants/ResponseStatus.java
+++ b/server/services/src/main/java/com/doumee/core/constants/ResponseStatus.java
@@ -28,7 +28,8 @@
REPEAT_REQUEST(5100, "璇峰嬁閲嶅鎻愪氦"),
MASSIVE_REQUEST(5101, "璇锋眰杩囦簬棰戠箒"),
NOT_ALLOWED(5110, "涓嶅厑璁哥殑鎿嶄綔"),
- NO_LOGIN(5112, "鏈櫥褰�"),
+ BE_OVERDUE(5112, "鏈櫥褰�"),
+ TOKEN_EXCEED_TIME(5113, "鐧婚檰宸茶繃鏈�"),
;
private int code;
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java b/server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java
index 824f8e2..2974faf 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -55,8 +56,8 @@
@ExcelColumn(name="绫诲瀷:0=鐢ㄥ伐韬唤锛�1=璐ц繍韬唤锛�2=渚涢韬唤锛�")
private Integer type;
- @ApiModelProperty(value = "浼氬憳閫愭笎", example = "1")
- @ExcelColumn(name="浼氬憳閫愭笎")
+ @ApiModelProperty(value = "浼氬憳涓婚敭", example = "1")
+ @ExcelColumn(name="浼氬憳涓婚敭")
private Integer memberId;
@ApiModelProperty(value = "璁よ瘉绫诲瀷:0=涓汉锛�1=浼佷笟", example = "1")
@@ -87,33 +88,21 @@
@ExcelColumn(name="缁忓害")
private BigDecimal lgt;
- @ApiModelProperty(value = "韬唤璇佷汉鍍忛潰")
- @ExcelColumn(name="韬唤璇佷汉鍍忛潰")
- private String identityFront;
+ @ApiModelProperty(value = "韬唤璇佷汉鍍忛潰/钀ヤ笟鎵х収")
+ @ExcelColumn(name="韬唤璇佷汉鍍忛潰/钀ヤ笟鎵х収")
+ private String img1;
- @ApiModelProperty(value = "韬唤璇佸浗寰介潰")
- @ExcelColumn(name="韬唤璇佸浗寰介潰")
- private String identityBack;
-
- @ApiModelProperty(value = "钀ヤ笟鎵х収锛堜紒涓氱被浣跨敤锛�")
- @ExcelColumn(name="钀ヤ笟鎵х収锛堜紒涓氱被浣跨敤锛�")
- private String businessLicense;
-
- @ApiModelProperty(value = "鍏朵粬璁よ瘉璧勬枡锛堜紒涓氱被浣跨敤锛�")
- @ExcelColumn(name="鍏朵粬璁よ瘉璧勬枡锛堜紒涓氱被浣跨敤锛�")
- private String otherFile;
-
- @ApiModelProperty(value = "閬撹矾杩愯緭缁忛獙璁稿彲璇侊紙浼佷笟绫昏揣杩愯韩浠戒娇鐢級")
- @ExcelColumn(name="閬撹矾杩愯緭缁忛獙璁稿彲璇侊紙浼佷笟绫昏揣杩愯韩浠戒娇鐢級")
- private String transportFile;
-
- @ApiModelProperty(value = "椋熷搧缁忚惀璁稿彲璇侊紙浼佷笟绫讳緵椁愯韩浠戒娇鐢級")
- @ExcelColumn(name="椋熷搧缁忚惀璁稿彲璇侊紙浼佷笟绫讳緵椁愯韩浠戒娇鐢級")
- private String foodBusinessFile;
+ @ApiModelProperty(value = "韬唤璇佸浗寰介潰/閬撹矾浜ら�氳惀杩愯鍙瘉/椋熷搧缁忚惀璁稿彲璇�")
+ @ExcelColumn(name="韬唤璇佸浗寰介潰/閬撹矾浜ら�氳惀杩愯鍙瘉/椋熷搧缁忚惀璁稿彲璇�")
+ private String img2;
@ApiModelProperty(value = "浠庝笟浜哄憳鍋ュ悍璇�")
@ExcelColumn(name="浠庝笟浜哄憳鍋ュ悍璇�")
- private String healthFile;
+ private String img3;
+
+ @ApiModelProperty(value = "鍏朵粬璁よ瘉璧勬枡")
+ @ExcelColumn(name="鍏朵粬璁よ瘉璧勬枡")
+ private String img4;
@ApiModelProperty(value = "璁よ瘉瀹℃壒鐘舵��:1=鐢宠涓紱2=宸查�氳繃锛�3=鏈�氳繃锛�", example = "1")
@ExcelColumn(name="璁よ瘉瀹℃壒鐘舵��:1=鐢宠涓紱2=宸查�氳繃锛�3=鏈�氳繃锛�")
@@ -128,4 +117,7 @@
@ExcelColumn(name="璁よ瘉瀹℃壒澶囨敞")
private String auditRemark;
+ @ApiModelProperty(value = "鍥剧墖鍓嶇紑")
+ @TableField(exist = false)
+ private String prefix;
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Member.java b/server/services/src/main/java/com/doumee/dao/business/model/Member.java
index a753400..6e5d6c4 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Member.java
@@ -1,11 +1,14 @@
package com.doumee.dao.business.model;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.dao.vo.UserCenterVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.models.auth.In;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
@@ -27,7 +30,7 @@
@ApiModelProperty(value = "鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�", example = "1")
@ExcelColumn(name="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�")
- private Byte deleted;
+ private Integer deleted;
@ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
@ExcelColumn(name="鍒涘缓浜虹紪鐮�")
@@ -106,7 +109,7 @@
@ApiModelProperty(value = "鎬绘帴鍗曢噺", example = "1")
@ExcelColumn(name="鎬绘帴鍗曢噺")
- private Long reciveNum;
+ private Long receiveNum;
@ApiModelProperty(value = "鎬诲彂鍗曢噺", example = "1")
@ExcelColumn(name="鎬诲彂鍗曢噺")
@@ -118,7 +121,7 @@
@ApiModelProperty(value = "瀹氫綅鍦板潃")
@ExcelColumn(name="瀹氫綅鍦板潃")
- private String localtion;
+ private String location;
@ApiModelProperty(value = "绾害", example = "1")
@ExcelColumn(name="绾害")
@@ -142,6 +145,16 @@
@ApiModelProperty(value = "鏄惁鎺ュ彈鑷姩娲惧崟:0=鍚︼紱1=鏄紱", example = "1")
@ExcelColumn(name="鏄惁鎺ュ彈鑷姩娲惧崟:0=鍚︼紱1=鏄紱")
- private Integer autoReciveStatus;
+ private Integer autoReceiveStatus;
+
+
+ @ApiModelProperty(value = "褰撳墠浣跨敤韬唤:0=鐢ㄥ伐鍙戝竷鏂�;1=鐢ㄥ伐鎺ュ崟鏂�;", example = "1")
+ @ExcelColumn(name="褰撳墠浣跨敤韬唤:0=鐢ㄥ伐鍙戝竷鏂�;1=鐢ㄥ伐鎺ュ崟鏂�;")
+ private Integer useIdentity;
+
+ @ApiModelProperty(value = "鎴戠殑 - 鏁版嵁淇℃伅", example = "1")
+ @TableField(exist = false)
+ private UserCenterVO userCenterVO;
+
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Orders.java b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
index fd7fd2a..a47edc6 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -10,6 +11,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.math.BigDecimal;
+import java.util.List;
/**
* 璁㈠崟淇℃伅璁板綍
@@ -131,7 +133,7 @@
@ApiModelProperty(value = "瀹炴敹璐圭敤", example = "1")
@ExcelColumn(name="瀹炴敹璐圭敤")
- private Long reviceAccount;
+ private Long receiveAccount;
@ApiModelProperty(value = "璐圭敤璇存槑")
@ExcelColumn(name="璐圭敤璇存槑")
@@ -240,6 +242,10 @@
@ApiModelProperty(value = "鎺ュ崟鏂归粦鍚嶅崟member:id 澶氫釜浠�,鍒嗗壊")
@ExcelColumn(name="鎺ュ崟鏂归粦鍚嶅崟member:id 澶氫釜浠�,鍒嗗壊")
- private String blackRecive;
+ private String blackReceive;
+
+ @ApiModelProperty
+ @TableField(exist = false)
+ private List<Multifile> multifileList;
}
diff --git a/server/services/src/main/java/com/doumee/dao/dto/WxPhoneRequest.java b/server/services/src/main/java/com/doumee/dao/dto/WxPhoneRequest.java
new file mode 100644
index 0000000..b3085e6
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/dto/WxPhoneRequest.java
@@ -0,0 +1,28 @@
+package com.doumee.dao.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:50
+ */
+@Data
+@ApiModel("寰俊鎺堟潈鎵嬫満鍙疯姹傜被")
+public class WxPhoneRequest implements Serializable {
+
+ @NotEmpty(message = "openid 涓嶈兘涓虹┖")
+ @ApiModelProperty(value = "openid")
+ private String openid;
+
+ @NotEmpty(message = "code")
+ @ApiModelProperty(value = "code")
+ private String code;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/vo/AccountResponse.java b/server/services/src/main/java/com/doumee/dao/vo/AccountResponse.java
new file mode 100644
index 0000000..27c4b96
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/vo/AccountResponse.java
@@ -0,0 +1,30 @@
+package com.doumee.dao.vo;
+
+import com.doumee.core.constants.Constants;
+import com.doumee.dao.business.model.Member;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:25
+ */
+@Data
+@ApiModel("鐧诲綍杩斿洖绫�")
+public class AccountResponse implements Serializable {
+
+ @ApiModelProperty(value = "鐢ㄦ埛token")
+ private String token;
+
+ @ApiModelProperty(value = "openid")
+ private String openid;
+
+ @ApiModelProperty(value = "鐢ㄦ埛淇℃伅")
+ private Member member;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/vo/UserCenterVO.java b/server/services/src/main/java/com/doumee/dao/vo/UserCenterVO.java
new file mode 100644
index 0000000..c759d08
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/vo/UserCenterVO.java
@@ -0,0 +1,46 @@
+package com.doumee.dao.vo;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/7/10 15:09
+ */
+@Data
+public class UserCenterVO {
+
+ @ApiModelProperty(value = "鍙戝竷浠诲姟鎬绘暟 - 鍙戝崟鏂逛娇鐢�")
+ private Integer releaseTaskTotal;
+
+ @ApiModelProperty(value = "寰呮帴鍗曚换鍔℃�绘暟 - 鍙戝崟鏂逛娇鐢�")
+ private Integer waitReceiveTotal;
+
+ @ApiModelProperty(value = "杩涜涓换鍔℃�绘暟 - 鍙戝崟鏂逛娇鐢�")
+ private Integer doingTotal;
+
+ @ApiModelProperty(value = "寰呰瘎浠蜂换鍔℃�绘暟 - 鍙戝崟鏂逛娇鐢�")
+ private Integer waitCommentTotal;
+
+ @ApiModelProperty(value = "杩涜涓换鍔℃暟閲� - 鎺ュ崟鏂逛娇鐢�")
+ private Integer taskingTotal;
+
+ @ApiModelProperty(value = "瀹屾垚浠诲姟鏁伴噺 - 鎺ュ崟鏂逛娇鐢�")
+ private Integer doneTotal;
+
+ @ApiModelProperty(value = "宸叉帴鍗曚换鍔℃暟閲� - 鎺ュ崟鏂逛娇鐢�")
+ private Integer receiveTotal;
+
+ @ApiModelProperty(value = "鏈嶅姟浠嬬粛")
+ private String serverIntroduce;
+
+ @ApiModelProperty(value = "鏀惰垂鏍囧噯")
+ private String feeStandards;
+
+ @ApiModelProperty(value = "鍏充簬鎴戜滑")
+ private String aboutUs;
+
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/IdentityInfoService.java b/server/services/src/main/java/com/doumee/service/business/IdentityInfoService.java
index 1e0bbbc..e7b811c 100644
--- a/server/services/src/main/java/com/doumee/service/business/IdentityInfoService.java
+++ b/server/services/src/main/java/com/doumee/service/business/IdentityInfoService.java
@@ -94,4 +94,9 @@
* @return long
*/
long count(IdentityInfo identityInfo);
+
+
+ IdentityInfo findByMemberType(Integer type,Integer memberId);
+
+ void updateLocation(IdentityInfo identityInfo);
}
diff --git a/server/services/src/main/java/com/doumee/service/business/MemberService.java b/server/services/src/main/java/com/doumee/service/business/MemberService.java
index c7080a2..683e5d1 100644
--- a/server/services/src/main/java/com/doumee/service/business/MemberService.java
+++ b/server/services/src/main/java/com/doumee/service/business/MemberService.java
@@ -1,9 +1,23 @@
package com.doumee.service.business;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.doumee.config.wx.WxMiniConfig;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Member;
+import com.doumee.dao.dto.WxPhoneRequest;
+import com.doumee.dao.vo.AccountResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* 浼氬憳淇℃伅琛⊿ervice瀹氫箟
@@ -94,4 +108,42 @@
* @return long
*/
long count(Member member);
+
+
+
+ /***************灏忕▼搴忔帴鍙�*************/
+
+ /**
+ * 鎺堟潈鐧诲綍 鏍规嵁openid鏌ヨ璐﹀彿 濡傛灉鏌ヨ鍒� 鍒欒嚜鍔ㄧ櫥褰�
+ * @param code
+ * @return
+ */
+ AccountResponse wxLogin(String code);
+
+ /**
+ * 鎺堟潈鎵嬫満鍙� 鏍规嵁鎵嬫満鍙锋煡璇㈢敤鎴蜂俊鎭� 濡傛灉鏌ヨ鍒� 杩斿洖鐧诲綍淇℃伅
+ * @param wxPhoneRequest
+ * @return
+ */
+ AccountResponse wxAuthPhone(WxPhoneRequest wxPhoneRequest);
+
+
+ /**
+ * 鏇存柊涓汉淇℃伅
+ * @param member
+ */
+ void editMemberInfo(Member member);
+
+ /**
+ * 鍒囨崲鐢ㄥ伐韬唤
+ * @param member
+ */
+ void editUseIdentity(Member member);
+
+ /**
+ * 涓汉淇℃伅
+ * @param memberId
+ * @return
+ */
+ Member getMemberInfo(Integer memberId);
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
index c017ad6..f7095cb 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
@@ -1,5 +1,8 @@
package com.doumee.service.business.impl;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
@@ -13,8 +16,11 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* 浼氬憳韬唤璁よ瘉淇℃伅琛⊿ervice瀹炵幇
@@ -29,6 +35,30 @@
@Override
public Integer create(IdentityInfo identityInfo) {
+ if(Objects.isNull(identityInfo)
+ || Objects.isNull(identityInfo.getType())
+ || Objects.isNull(identityInfo.getMemberId())
+ || Objects.isNull(identityInfo.getAuthType())
+ || StringUtils.isEmpty(identityInfo.getLinkName())
+ || StringUtils.isEmpty(identityInfo.getTelephone())
+ || StringUtils.isEmpty(identityInfo.getLocation())
+ || StringUtils.isEmpty(identityInfo.getImg1())
+ || Objects.isNull(identityInfo.getLat())
+ || Objects.isNull(identityInfo.getLgt())
+ || (Constants.equalsInteger(identityInfo.getAuthType(),Constants.ONE) && StringUtils.isEmpty(identityInfo.getCompanyName()))
+ || (Constants.equalsInteger(identityInfo.getAuthType(),Constants.ZERO) && StringUtils.isEmpty(identityInfo.getImg2()))
+ || (Constants.equalsInteger(identityInfo.getAuthType(),Constants.ONE) && Constants.equalsInteger(identityInfo.getType(),Constants.ONE) && StringUtils.isEmpty(identityInfo.getImg2()))
+ || (Constants.equalsInteger(identityInfo.getAuthType(),Constants.ONE) && Constants.equalsInteger(identityInfo.getType(),Constants.TWO) && (StringUtils.isEmpty(identityInfo.getImg2())||StringUtils.isEmpty(identityInfo.getImg3())))
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ //鏌ヨ鐢ㄦ埛鏄惁宸插瓨鍦ㄥ綋鍓嶈韩浠�
+ if(identityInfoMapper.selectCount(new QueryWrapper<IdentityInfo>().lambda().eq(IdentityInfo::getMemberId,identityInfo.getMemberId())
+ .eq(IdentityInfo::getType,identityInfo.getType()))>Constants.ZERO){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸插瓨鍦ㄨ韬唤璇峰埛鏂版煡鐪嬶紒");
+ };
+ identityInfo.setCreateTime(new Date());
+ identityInfo.setAuditStatus(Constants.ZERO);
identityInfoMapper.insert(identityInfo);
return identityInfo.getId();
}
@@ -54,7 +84,65 @@
@Override
public void updateById(IdentityInfo identityInfo) {
+ if(Objects.isNull(identityInfo)
+ || Objects.isNull(identityInfo.getId())
+ || Objects.isNull(identityInfo.getType())
+ || Objects.isNull(identityInfo.getMemberId())
+ || Objects.isNull(identityInfo.getAuthType())
+ || StringUtils.isEmpty(identityInfo.getLinkName())
+ || StringUtils.isEmpty(identityInfo.getTelephone())
+ || StringUtils.isEmpty(identityInfo.getLocation())
+ || StringUtils.isEmpty(identityInfo.getImg1())
+ || Objects.isNull(identityInfo.getLat())
+ || Objects.isNull(identityInfo.getLgt())
+ || (Constants.equalsInteger(identityInfo.getAuthType(),Constants.ONE) && StringUtils.isEmpty(identityInfo.getCompanyName()))
+ || (Constants.equalsInteger(identityInfo.getAuthType(),Constants.ZERO) && StringUtils.isEmpty(identityInfo.getImg2()))
+ || (Constants.equalsInteger(identityInfo.getAuthType(),Constants.ONE) && Constants.equalsInteger(identityInfo.getType(),Constants.ONE) && StringUtils.isEmpty(identityInfo.getImg2()))
+ || (Constants.equalsInteger(identityInfo.getAuthType(),Constants.ONE) && Constants.equalsInteger(identityInfo.getType(),Constants.TWO) && (StringUtils.isEmpty(identityInfo.getImg2())||StringUtils.isEmpty(identityInfo.getImg3())))
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ IdentityInfo model = identityInfoMapper.selectById(identityInfo.getId());
+ if (Objects.isNull(model)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(!Constants.equalsInteger(model.getMemberId(),identityInfo.getMemberId())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勬暟鎹棤娉曡繘琛岃鎿嶄綔");
+ }
+ if(!Constants.equalsInteger(model.getAuditStatus(),Constants.THREE)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鐘舵�佹棤娉曡繘琛岃鎿嶄綔");
+ }
+ identityInfo.setUpdateTime(new Date());
identityInfoMapper.updateById(identityInfo);
+ }
+
+
+ @Override
+ public void updateLocation(IdentityInfo identityInfo) {
+ if(Objects.isNull(identityInfo)
+ || Objects.isNull(identityInfo.getId())
+ || Objects.isNull(identityInfo.getMemberId())
+ || StringUtils.isEmpty(identityInfo.getLocation())
+ || Objects.isNull(identityInfo.getLat())
+ || Objects.isNull(identityInfo.getLgt())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ IdentityInfo model = identityInfoMapper.selectById(identityInfo.getId());
+ if (Objects.isNull(model)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(!Constants.equalsInteger(model.getMemberId(),identityInfo.getMemberId())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勬暟鎹棤娉曡繘琛岃鎿嶄綔");
+ }
+ if(!Constants.equalsInteger(model.getAuditStatus(),Constants.TWO)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鐘舵�佹棤娉曡繘琛岃鎿嶄綔");
+ }
+ model.setLocation(identityInfo.getLocation());
+ model.setLat(identityInfo.getLat());
+ model.setLgt(identityInfo.getLgt());
+ model.setUpdateTime(new Date());
+ identityInfoMapper.updateById(model);
}
@Override
@@ -69,8 +157,27 @@
@Override
public IdentityInfo findById(Integer id) {
- return identityInfoMapper.selectById(id);
+ IdentityInfo identityInfo = identityInfoMapper.selectById(id);
+ //缂哄け鍓嶇紑
+ identityInfo.setPrefix("");
+ return identityInfo;
}
+
+
+ @Override
+ public IdentityInfo findByMemberType(Integer type,Integer memberId){
+ IdentityInfo identityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
+ .eq(IdentityInfo::getMemberId,memberId).eq(IdentityInfo::getType,type));
+ if(Objects.nonNull(identityInfo)){
+ //缂哄け鍓嶇紑
+ identityInfo.setPrefix("");
+ }else{
+ identityInfo = new IdentityInfo();
+ }
+ return identityInfo;
+ }
+
+
@Override
public IdentityInfo findOne(IdentityInfo identityInfo) {
@@ -138,27 +245,6 @@
}
if (pageWrap.getModel().getLgt() != null) {
queryWrapper.lambda().eq(IdentityInfo::getLgt, pageWrap.getModel().getLgt());
- }
- if (pageWrap.getModel().getIdentityFront() != null) {
- queryWrapper.lambda().eq(IdentityInfo::getIdentityFront, pageWrap.getModel().getIdentityFront());
- }
- if (pageWrap.getModel().getIdentityBack() != null) {
- queryWrapper.lambda().eq(IdentityInfo::getIdentityBack, pageWrap.getModel().getIdentityBack());
- }
- if (pageWrap.getModel().getBusinessLicense() != null) {
- queryWrapper.lambda().eq(IdentityInfo::getBusinessLicense, pageWrap.getModel().getBusinessLicense());
- }
- if (pageWrap.getModel().getOtherFile() != null) {
- queryWrapper.lambda().eq(IdentityInfo::getOtherFile, pageWrap.getModel().getOtherFile());
- }
- if (pageWrap.getModel().getTransportFile() != null) {
- queryWrapper.lambda().eq(IdentityInfo::getTransportFile, pageWrap.getModel().getTransportFile());
- }
- if (pageWrap.getModel().getFoodBusinessFile() != null) {
- queryWrapper.lambda().eq(IdentityInfo::getFoodBusinessFile, pageWrap.getModel().getFoodBusinessFile());
- }
- if (pageWrap.getModel().getHealthFile() != null) {
- queryWrapper.lambda().eq(IdentityInfo::getHealthFile, pageWrap.getModel().getHealthFile());
}
if (pageWrap.getModel().getAuditStatus() != null) {
queryWrapper.lambda().eq(IdentityInfo::getAuditStatus, pageWrap.getModel().getAuditStatus());
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 8defece..ec42cb3 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,20 +1,45 @@
package com.doumee.service.business.impl;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
+import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.jwt.JwtTokenUtil;
+import com.doumee.config.wx.WxMiniConfig;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.IdentityInfoMapper;
import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.OrdersMapper;
+import com.doumee.dao.business.model.IdentityInfo;
import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Orders;
+import com.doumee.dao.dto.WxPhoneRequest;
+import com.doumee.dao.vo.AccountResponse;
+import com.doumee.dao.vo.UserCenterVO;
import com.doumee.service.business.MemberService;
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.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
+import io.swagger.annotations.ApiModelProperty;
+import me.chanjar.weixin.common.error.WxErrorException;
+import nonapi.io.github.classgraph.json.Id;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import java.util.Date;
import java.util.List;
+import java.util.Objects;
+import java.util.Random;
+import java.util.stream.Collectors;
/**
* 浼氬憳淇℃伅琛⊿ervice瀹炵幇
@@ -26,6 +51,18 @@
@Autowired
private MemberMapper memberMapper;
+
+ @Autowired
+ private IdentityInfoMapper identityInfoMapper;
+
+ @Autowired
+ private OrdersMapper ordersMapper;
+
+ @Autowired
+ private JwtTokenUtil jwtTokenUtil;
+
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
@Override
public Integer create(Member member) {
@@ -152,17 +189,11 @@
if (pageWrap.getModel().getLoginTimes() != null) {
queryWrapper.lambda().eq(Member::getLoginTimes, pageWrap.getModel().getLoginTimes());
}
- if (pageWrap.getModel().getReciveNum() != null) {
- queryWrapper.lambda().eq(Member::getReciveNum, pageWrap.getModel().getReciveNum());
- }
if (pageWrap.getModel().getPublishNum() != null) {
queryWrapper.lambda().eq(Member::getPublishNum, pageWrap.getModel().getPublishNum());
}
if (pageWrap.getModel().getScore() != null) {
queryWrapper.lambda().eq(Member::getScore, pageWrap.getModel().getScore());
- }
- if (pageWrap.getModel().getLocaltion() != null) {
- queryWrapper.lambda().eq(Member::getLocaltion, pageWrap.getModel().getLocaltion());
}
if (pageWrap.getModel().getLat() != null) {
queryWrapper.lambda().eq(Member::getLat, pageWrap.getModel().getLat());
@@ -179,9 +210,6 @@
if (pageWrap.getModel().getArea() != null) {
queryWrapper.lambda().eq(Member::getArea, pageWrap.getModel().getArea());
}
- if (pageWrap.getModel().getAutoReciveStatus() != null) {
- queryWrapper.lambda().eq(Member::getAutoReciveStatus, pageWrap.getModel().getAutoReciveStatus());
- }
for(PageWrap.SortData sortData: pageWrap.getSorts()) {
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
queryWrapper.orderByDesc(sortData.getProperty());
@@ -197,4 +225,174 @@
QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
return memberMapper.selectCount(wrapper);
}
+
+
+ /***************灏忕▼搴忔帴鍙�*************/
+
+
+
+ /**
+ * 寰俊灏忕▼搴忕櫥褰�
+ * @param code
+ * @return
+ */
+ @Override
+ public AccountResponse wxLogin(String code) {
+ if(StringUtils.isBlank(code)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ try {
+ //鑾峰彇寰俊鏁忔劅鏁版嵁
+ WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
+ String openId = session.getOpenid();
+ 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"));
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setOpenid(openId);
+ if(Objects.isNull(member)){
+ return accountResponse;
+ }
+ accountResponse.setToken(jwtTokenUtil.generateToken(member));
+ accountResponse.setMember(member);
+ return accountResponse;
+ } catch (WxErrorException e) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�");
+ }
+ }
+
+
+
+
+ @Override
+ public AccountResponse wxAuthPhone(WxPhoneRequest wxPhoneRequest) {
+ try {
+ if(Objects.isNull(wxPhoneRequest)
+ || StringUtils.isBlank(wxPhoneRequest.getCode())
+ || StringUtils.isBlank(wxPhoneRequest.getOpenid())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNumber(wxPhoneRequest.getCode());
+ String mobile = userPhoneInfo.getPhoneNumber();
+ if(Objects.isNull(mobile)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈幏鍙栧埌鎵嬫満鍙�");
+ }
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getTelephone,mobile).last("limit 1"));
+ member.setOpenid(wxPhoneRequest.getOpenid());
+ if(Objects.nonNull(member)){
+ memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getTelephone,mobile)
+ .set(Member::getOpenid,wxPhoneRequest.getOpenid()).set(Member::getUpdateTime,new Date()).eq(Member::getId,member.getId()));
+ }else{
+ member = new Member();
+ member.setCreateTime(new Date());
+ member.setDeleted(Constants.ZERO);
+ member.setOpenid(wxPhoneRequest.getOpenid());
+ member.setTelephone(mobile);
+ member.setNickName(mobile);
+ member.setCoverImage("");
+ member.setWorkerIdentity(Constants.ZERO);
+ member.setDriverIdentity(Constants.ZERO);
+ member.setChefIdentity(Constants.ZERO);
+ member.setAmount(Constants.ZERO.longValue());
+ member.setTotalAmount(Constants.ZERO.longValue());
+ member.setStatus(Constants.ZERO);
+ member.setLoginTime(new Date());
+ member.setLoginTimes(Constants.ONE.longValue());
+ member.setReceiveNum(Constants.ZERO.longValue());
+ member.setPublishNum(Constants.ZERO.longValue());
+ member.setAutoReceiveStatus(Constants.ONE);
+ member.setUseIdentity(Constants.ZERO);
+ memberMapper.insert(member);
+ }
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setToken(jwtTokenUtil.generateToken(member));
+ accountResponse.setMember(member);
+ return accountResponse;
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈В鏋愬埌鎵嬫満鍙�");
+ }
+ }
+
+
+
+ @Override
+ public void editMemberInfo(Member member){
+ if(Objects.isNull(member)
+ || ( StringUtils.isBlank(member.getCoverImage()) || StringUtils.isBlank(member.getName()) || StringUtils.isBlank(member.getNickName()) || Objects.isNull(member.getAutoReceiveStatus()) )){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(StringUtils.isNotBlank(member.getNickName()),Member::getNickName,member.getNickName())
+ .set(StringUtils.isNotBlank(member.getName()),Member::getName,member.getName())
+ .set(StringUtils.isNotBlank(member.getCoverImage()),Member::getCoverImage,member.getCoverImage())
+ .set(Objects.nonNull(member.getAutoReceiveStatus()),Member::getCoverImage,member.getAutoReceiveStatus())
+ .set(Member::getUpdateTime,new Date())
+ .eq(Member::getId,member.getId()));
+ }
+
+
+ @Override
+ public void editUseIdentity(Member member){
+ if(Objects.isNull(member)
+ || Objects.isNull(member.getUseIdentity())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ if(Constants.equalsInteger(member.getUseIdentity(),Constants.ZERO)){
+ member.setUseIdentity(Constants.ZERO);
+ memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getUseIdentity,Constants.ZERO).eq(Member::getId,member.getId()));
+ }else{
+ if(identityInfoMapper.selectCount(new QueryWrapper<IdentityInfo>().lambda().eq(IdentityInfo::getDeleted,Constants.ZERO)
+ .eq(IdentityInfo::getMemberId,member.getId())
+ .eq(IdentityInfo::getAuditStatus,Constants.TWO))>Constants.ZERO){
+ memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getUseIdentity,Constants.ONE).eq(Member::getId,member.getId()));
+ }else{
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鏃犲彲鐢ㄦ帴鍗曡韩浠�!");
+ }
+ }
+ }
+
+
+ @Override
+ public Member getMemberInfo(Integer memberId){
+ Member member = this.findById(memberId);
+ if(Objects.isNull(member)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ UserCenterVO userCenterVO = new UserCenterVO();
+ userCenterVO.setReleaseTaskTotal(Constants.ZERO);
+ userCenterVO.setWaitReceiveTotal(Constants.ZERO);
+ userCenterVO.setDoingTotal(Constants.ZERO);
+ userCenterVO.setWaitCommentTotal(Constants.ZERO);
+ userCenterVO.setTaskingTotal(Constants.ZERO);
+ userCenterVO.setDoneTotal(Constants.ZERO);
+ userCenterVO.setReceiveTotal(Constants.ZERO);
+ List<Orders> releaseOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO).eq(Orders::getReleaseMemberId,member));
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(releaseOrders)){
+ userCenterVO.setReleaseTaskTotal(releaseOrders.size());
+ userCenterVO.setWaitCommentTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ZERO)).collect(Collectors.toList()).size());
+ userCenterVO.setDoingTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.TWO)).collect(Collectors.toList()).size());
+ userCenterVO.setWaitCommentTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.THREE)&&Constants.equalsInteger(i.getCommentStatus(),Constants.ZERO)).collect(Collectors.toList()).size());
+ }
+ List<Orders> acceptOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO).eq(Orders::getAcceptMemberId,member));
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(acceptOrders)){
+ userCenterVO.setReceiveTotal(acceptOrders.size());
+ userCenterVO.setTaskingTotal(acceptOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.TWO)).collect(Collectors.toList()).size());
+ userCenterVO.setDoneTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.THREE)).collect(Collectors.toList()).size());
+ }
+
+ userCenterVO.setAboutUs(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ABOUT_US).getCode()));
+ userCenterVO.setFeeStandards(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FEE_STANDARDS).getCode()));
+ userCenterVO.setServerIntroduce(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SERVER_INTRODUCE).getCode()));
+ member.setUserCenterVO(userCenterVO);
+ return member;
+ }
+
+
+
+
+
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
index 36a4040..73c6b13 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -1,5 +1,8 @@
package com.doumee.service.business.impl;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
@@ -10,11 +13,14 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
import java.util.List;
+import java.util.Objects;
/**
* 璁㈠崟淇℃伅璁板綍Service瀹炵幇
@@ -29,9 +35,44 @@
@Override
public Integer create(Orders orders) {
+
+
ordersMapper.insert(orders);
return orders.getId();
}
+
+
+
+ public void initVerification(Orders orders){
+ if(Objects.isNull(orders)
+ || Objects.isNull(orders.getType())
+ || Objects.isNull(orders.getStartDate())
+ || Objects.isNull(orders.getEndDate())
+ || StringUtil.isBlank(orders.getLocation())
+ || StringUtil.isBlank(orders.getLocationRemark())
+ || Objects.isNull(orders.getLat())
+ || Objects.isNull(orders.getLgt())
+ || Objects.isNull(orders.getCategoryId())
+ || (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Objects.isNull(orders.getWorkType()))
+ || Objects.isNull(orders.getPriceNum1())
+ || (!( Constants.equalsInteger(orders.getType(),Constants.ZERO)
+ && Constants.equalsInteger(orders.getWorkType(),Constants.TWO) ) && Objects.isNull(orders.getPrice()) )
+ || ( Constants.equalsInteger(orders.getType(),Constants.ONE) && Objects.isNull(orders.getTransportTypeId()) )
+
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+
+ if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
+
+
+ }
+
+
+ }
+
+
+
@Override
public void deleteById(Integer id) {
@@ -171,9 +212,6 @@
if (pageWrap.getModel().getPayAccount() != null) {
queryWrapper.lambda().eq(Orders::getPayAccount, pageWrap.getModel().getPayAccount());
}
- if (pageWrap.getModel().getReviceAccount() != null) {
- queryWrapper.lambda().eq(Orders::getReviceAccount, pageWrap.getModel().getReviceAccount());
- }
if (pageWrap.getModel().getPriceRemark() != null) {
queryWrapper.lambda().eq(Orders::getPriceRemark, pageWrap.getModel().getPriceRemark());
}
@@ -253,9 +291,6 @@
}
if (pageWrap.getModel().getIsUpdate() != null) {
queryWrapper.lambda().eq(Orders::getIsUpdate, pageWrap.getModel().getIsUpdate());
- }
- if (pageWrap.getModel().getBlackRecive() != null) {
- queryWrapper.lambda().eq(Orders::getBlackRecive, pageWrap.getModel().getBlackRecive());
}
for(PageWrap.SortData sortData: pageWrap.getSorts()) {
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
diff --git a/server/web/src/main/java/com/doumee/api/web/AccountApi.java b/server/web/src/main/java/com/doumee/api/web/AccountApi.java
new file mode 100644
index 0000000..66c5721
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/web/AccountApi.java
@@ -0,0 +1,58 @@
+package com.doumee.api.web;
+
+import com.doumee.core.annotation.LoginRequired;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.dto.WxPhoneRequest;
+import com.doumee.dao.vo.AccountResponse;
+import com.doumee.service.business.MemberService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/7/10 9:29
+ */
+@Api(tags = "1銆佺櫥褰曚笟鍔�")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/web/account")
+@Slf4j
+public class AccountApi extends ApiController{
+
+
+ @Autowired
+ private MemberService memberService;
+
+
+ @Trace
+ @ApiOperation(value = "寰俊鎺堟潈", notes = "灏忕▼搴忕")
+ @GetMapping("/wxLogin")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "寰俊code", required = true)
+ })
+ public ApiResponse<AccountResponse> wxLogin(@RequestParam String code) {
+ return ApiResponse.success("鎿嶄綔鎴愬姛",memberService.wxLogin(code));
+ }
+
+
+ @ApiOperation(value = "鎺堟潈鎵嬫満鍙�", notes = "灏忕▼搴忕")
+ @PostMapping("/wxAuthPhone")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "寰俊code", required = true)
+ })
+ public ApiResponse<AccountResponse> wxAuthPhone(@RequestBody WxPhoneRequest wxPhoneRequest) {
+ return ApiResponse.success("鎿嶄綔鎴愬姛",memberService.wxAuthPhone(wxPhoneRequest));
+ }
+
+
+
+}
diff --git a/server/web/src/main/java/com/doumee/api/web/ApiController.java b/server/web/src/main/java/com/doumee/api/web/ApiController.java
new file mode 100644
index 0000000..56227eb
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/web/ApiController.java
@@ -0,0 +1,52 @@
+package com.doumee.api.web;
+
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.config.jwt.JwtTokenUtil;
+import com.doumee.dao.business.model.Member;
+import com.doumee.service.business.MemberService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Controller鍩虹被
+ * @author Eva.Caesar Liu
+ * @date 2022/03/15 09:54
+ */
+@Slf4j
+@Service
+public class ApiController {
+
+ /**
+ * 寰楀埌request瀵硅薄
+ *
+ * @return
+ */
+ public HttpServletRequest getRequest() {
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ return request;
+ }
+
+
+ protected Integer getMemberId() {
+ Object obj = this.getRequest().getAttribute(JwtTokenUtil.MEMBER_ID);
+ return obj != null ? (Integer) obj : null;
+ }
+
+ /**
+ * 鑾峰彇鐧诲綍鐢ㄦ埛瀵硅薄淇℃伅
+ * @return
+ */
+ protected Member getMemberResponse(){
+ Object obj = this.getRequest().getAttribute(JwtTokenUtil.MEMBER_INFO);
+ if(obj != null){
+ return JSONObject.parseObject(obj.toString(),Member.class);
+ }
+ return null;
+ }
+
+}
diff --git a/server/web/src/main/java/com/doumee/api/web/OrdersApi.java b/server/web/src/main/java/com/doumee/api/web/OrdersApi.java
new file mode 100644
index 0000000..dac3322
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/web/OrdersApi.java
@@ -0,0 +1,51 @@
+package com.doumee.api.web;
+
+import com.doumee.core.annotation.LoginRequired;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.dao.business.model.IdentityInfo;
+import com.doumee.dao.business.model.Member;
+import com.doumee.service.business.IdentityInfoService;
+import com.doumee.service.business.MemberService;
+import com.doumee.service.business.OrdersService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/7/10 9:29
+ */
+@Api(tags = "1銆佽鍗曚笟鍔�")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/web/orders")
+@Slf4j
+public class OrdersApi extends ApiController{
+
+
+ @Autowired
+ private MemberService memberService;
+
+ @Autowired
+ private OrdersService ordersService;
+
+ @LoginRequired
+ @ApiOperation(value = "缂栬緫涓汉淇℃伅", notes = "灏忕▼搴忕")
+ @GetMapping("/getMemberInfo")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<Member> getMemberInfo() {
+ return ApiResponse.success("鏌ヨ鎴愬姛",memberService.getMemberInfo(getMemberId()));
+ }
+
+
+
+}
diff --git a/server/web/src/main/java/com/doumee/api/web/UserApi.java b/server/web/src/main/java/com/doumee/api/web/UserApi.java
new file mode 100644
index 0000000..fea1b3d
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/web/UserApi.java
@@ -0,0 +1,127 @@
+package com.doumee.api.web;
+
+import com.doumee.core.annotation.LoginRequired;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.dao.business.model.IdentityInfo;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.dto.WxPhoneRequest;
+import com.doumee.dao.vo.AccountResponse;
+import com.doumee.service.business.IdentityInfoService;
+import com.doumee.service.business.MemberService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/7/10 9:29
+ */
+@Api(tags = "2銆佺敤鎴蜂俊鎭�")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/web/user")
+@Slf4j
+public class UserApi extends ApiController{
+
+
+ @Autowired
+ private MemberService memberService;
+
+ @Autowired
+ private IdentityInfoService identityInfoService;
+
+ @LoginRequired
+ @ApiOperation(value = "缂栬緫涓汉淇℃伅", notes = "灏忕▼搴忕")
+ @GetMapping("/getMemberInfo")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<Member> getMemberInfo() {
+ return ApiResponse.success("鏌ヨ鎴愬姛",memberService.getMemberInfo(getMemberId()));
+ }
+
+
+ @LoginRequired
+ @ApiOperation(value = "缂栬緫涓汉淇℃伅", notes = "灏忕▼搴忕")
+ @PostMapping("/editMemberInfo")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse editMemberInfo(@RequestBody Member member) {
+ member.setId(getMemberId());
+ memberService.editMemberInfo(member);
+ return ApiResponse.success("鎿嶄綔鎴愬姛");
+ }
+
+ @LoginRequired
+ @ApiOperation(value = "鍒囨崲鐢ㄥ伐韬唤", notes = "灏忕▼搴忕")
+ @PostMapping("/editUseIdentity")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse editUseIdentity(@RequestBody Member member) {
+ member.setId(getMemberId());
+ memberService.editUseIdentity(member);
+ return ApiResponse.success("鎿嶄綔鎴愬姛");
+ }
+
+
+
+ @LoginRequired
+ @ApiOperation(value = "鑾峰彇韬唤璁よ瘉淇℃伅", notes = "灏忕▼搴忕")
+ @GetMapping("/getIdentityInfo")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<IdentityInfo> getIdentityInfo(@RequestParam Integer type) {
+ return ApiResponse.success("鏌ヨ鎴愬姛",identityInfoService.findByMemberType(type,getMemberId()));
+ }
+
+
+ @LoginRequired
+ @ApiOperation(value = "鐢宠韬唤淇℃伅", notes = "灏忕▼搴忕")
+ @PostMapping("/applyForIdentity")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse applyForIdentity(@RequestBody IdentityInfo identityInfo) {
+ identityInfo.setMemberId(getMemberId());
+ identityInfoService.create(identityInfo);
+ return ApiResponse.success("鎿嶄綔鎴愬姛");
+ }
+
+
+
+ @LoginRequired
+ @ApiOperation(value = "淇敼韬唤淇℃伅锛堣璇佸け璐ュ悗浣跨敤锛�", notes = "灏忕▼搴忕")
+ @PostMapping("/updateIdentity")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse updateIdentity(@RequestBody IdentityInfo identityInfo) {
+ identityInfo.setMemberId(getMemberId());
+ identityInfoService.updateById(identityInfo);
+ return ApiResponse.success("鎿嶄綔鎴愬姛");
+ }
+
+
+ @LoginRequired
+ @ApiOperation(value = "淇敼韬唤淇℃伅浣嶇疆锛堣璇佹垚鍔熷悗浣跨敤锛�", notes = "灏忕▼搴忕")
+ @PostMapping("/updateLocation")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse updateLocation(@RequestBody IdentityInfo identityInfo) {
+ identityInfo.setMemberId(getMemberId());
+ identityInfoService.updateLocation(identityInfo);
+ return ApiResponse.success("鎿嶄綔鎴愬姛");
+ }
+
+}
--
Gitblit v1.9.3