Bläddra i källkod

Merge remote-tracking branch 'origin/master'

叶君翔 3 år sedan
förälder
incheckning
774ef83a6c

+ 33 - 6
lb-app/src/main/java/com/ydd/app/controller/DevelopmentApi.java

@@ -2,10 +2,7 @@ package com.ydd.app.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.ydd.app.dto.*;
-import com.ydd.app.service.ApiStoreService;
-import com.ydd.app.service.Insert;
-import com.ydd.app.service.Query;
-import com.ydd.app.service.Update;
+import com.ydd.app.service.*;
 import com.ydd.common.annotation.AccessToken;
 import com.ydd.common.core.controller.BaseController;
 import com.ydd.common.core.domain.ResponseResult;
@@ -19,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
+
 /**
  * Project:lb-server
  * Class:ShopApi
@@ -35,6 +34,8 @@ public class DevelopmentApi extends BaseController {
 
     private final ApiStoreService apiStoreService;
 
+    private final ApiDevelopService apiDevelopService;
+
 
     /**
      * 刷新token
@@ -44,7 +45,7 @@ public class DevelopmentApi extends BaseController {
     @AccessToken
     public ResponseResult saveShop(@RequestBody @Validated AppTokenDto appTokenDto) {
 
-        return null;
+        return apiDevelopService.refreshToken(appTokenDto.getRefreshToken());
     }
 
     @ApiOperation("申请开发者")
@@ -52,8 +53,34 @@ public class DevelopmentApi extends BaseController {
     @AccessToken
     public ResponseResult applyDevelop(@RequestBody @Validated DevelopMerchantDto merchantDto) {
 
-        return null;
+        return apiDevelopService.saveMerchant(getLoginId(), merchantDto);
+    }
+
+    @ApiOperation("用户基本信息")
+    @RequestMapping(value = "/member/info", method = RequestMethod.GET)
+    @AccessToken
+    public ResponseResult memberInfo() {
+        return apiDevelopService.memberInfo(getLoginId());
+    }
+
+    @ApiOperation("修改联系人")
+    @RequestMapping(value = "/edit/member/info", method = RequestMethod.POST)
+    @AccessToken
+    public ResponseResult editMemberInfo(@RequestBody @Valid OpenMemberInfoDto memberInfoDto) {
+        return apiDevelopService.editMemberInfo(memberInfoDto);
     }
 
+    @ApiOperation("修改密码")
+    @RequestMapping(value = "/edit/member/password", method = RequestMethod.POST)
+    @AccessToken
+    public ResponseResult editMemberPassword(@RequestBody @Valid OpenMemberPasswordDto memberPasswordDto) {
+        return apiDevelopService.editMemberPassword(memberPasswordDto);
+    }
 
+    @ApiOperation("应用信息")
+    @RequestMapping(value = "/appSecret/info", method = RequestMethod.GET)
+    @AccessToken
+    public ResponseResult appSecretInfo() {
+        return apiDevelopService.appSecretInfo(getLoginId());
+    }
 }

+ 40 - 0
lb-app/src/main/java/com/ydd/app/dto/OpenMemberInfoDto.java

@@ -0,0 +1,40 @@
+package com.ydd.app.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.apache.ibatis.javassist.SerialVersionUID;
+
+import java.io.Serializable;
+
+/**
+ * Demo class
+ *
+ * @author 14027
+ * @date 2022/4/26 16:29
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class OpenMemberInfoDto implements Serializable {
+
+    private static final long serialVersionUID = 2L;
+
+    /** 联系人 */
+    @ApiModelProperty(value = "联系人", required = true)
+    private String contactName;
+
+    /** 联系电话 */
+    @ApiModelProperty(value = "联系电话", required = true)
+    private String contactMobile;
+
+    /** 注册手机号 */
+    @ApiModelProperty(value = "注册手机号", required = true)
+    private String resistMobile;
+
+    /** 验证码 */
+    @ApiModelProperty(value = "验证码", required = true)
+    private String code;
+
+}

+ 39 - 0
lb-app/src/main/java/com/ydd/app/dto/OpenMemberPasswordDto.java

@@ -0,0 +1,39 @@
+package com.ydd.app.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * Demo class
+ *
+ * @author 14027
+ * @date 2022/4/26 17:03
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class OpenMemberPasswordDto implements Serializable {
+
+    private static final long serialVersionUID = 2L;
+
+    /** 新密码 */
+    @ApiModelProperty(value = "新密码", required = true)
+    private String password;
+
+    /** 再次确认密码 */
+    @ApiModelProperty(value = "再次确认密码", required = true)
+    private String confirmPassword;
+
+    /** 注册手机号 */
+    @ApiModelProperty(value = "注册手机号", required = true)
+    private String resistMobile;
+
+    /** 验证码 */
+    @ApiModelProperty(value = "验证码", required = true)
+    private String code;
+
+}

+ 13 - 0
lb-app/src/main/java/com/ydd/app/service/ApiDevelopService.java

@@ -38,4 +38,17 @@ public interface ApiDevelopService {
     ResponseResult online( DevelopAuditDto developAuditDto);
 
     ResponseResult refreshToken(String refreshToken);
+
+    /**
+     * 用户中心-基本信息
+     * @param loginId
+     * @return
+     */
+    ResponseResult memberInfo(Long loginId);
+
+    ResponseResult editMemberInfo(OpenMemberInfoDto memberInfoDto);
+
+    ResponseResult editMemberPassword(OpenMemberPasswordDto memberPasswordDto);
+
+    ResponseResult appSecretInfo(Long loginId);
 }

+ 85 - 0
lb-app/src/main/java/com/ydd/app/service/impl/ApiDevelopServiceImpl.java

@@ -10,6 +10,7 @@ import com.ydd.app.ShopEditUtils;
 import com.ydd.app.ShopEntityUtils;
 import com.ydd.app.dto.*;
 import com.ydd.app.service.*;
+import com.ydd.app.vo.OpenMemberInfoVo;
 import com.ydd.common.constant.Constants;
 import com.ydd.common.core.domain.ResponseResult;
 import com.ydd.common.core.redis.RedisCache;
@@ -34,6 +35,7 @@ import com.ydd.third.common.vo.shop.ShopVo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.xmlbeans.impl.xb.xsdschema.AppinfoDocument;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -43,6 +45,8 @@ import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
+import static com.ydd.module.enums.CacheKeyEnum.SMS_REGISTER_CAPTCHA;
+
 /**
  * Project:lb-server
  * Class:ApiShopServiceImpl
@@ -213,4 +217,85 @@ public class ApiDevelopServiceImpl implements ApiDevelopService {
         redisCache.setCacheObject(Constants.APP_REFRESH_TOKEN_KEY + token.getRefreshToken(), memberId, 30, TimeUnit.DAYS);
         return ResponseResult.success(token);
     }
+
+    @Override
+    public ResponseResult memberInfo(Long loginId) {
+        Member member = iMemberService.getById(loginId);
+        if (Objects.isNull(member)) {
+            return ResponseResult.error(ResponseResultCodeEnum.REFRESH_TOKEN_INVALID);
+        }
+
+        Merchant merchant = iMerchantService.getById(member.getMerchantId());
+        OpenMemberInfoVo vo = new OpenMemberInfoVo();
+        vo.setResistMobile(member.getMobile());
+        vo.setBusinessName(merchant.getMerchantName());
+        vo.setBusinessAddress(merchant.getAddress());
+        vo.setContactName(merchant.getContactName());
+        vo.setContactMobile(merchant.getMobile());
+        return ResponseResult.success(vo);
+    }
+
+    @Override
+    public ResponseResult editMemberInfo(OpenMemberInfoDto memberInfoDto) {
+        Member member = iMemberService.getMemberByMobile(memberInfoDto.getResistMobile());
+        ResponseResult result = specialJudge(member, memberInfoDto.getResistMobile(), memberInfoDto.getCode());
+        if (result.getCode() != ResponseResultCodeEnum.SUCCESS.getCode()) {
+            return result;
+        }
+
+        Merchant merchant = iMerchantService.getById(member.getMerchantId());
+        merchant.setContactName(memberInfoDto.getContactName());
+        merchant.setMobile(memberInfoDto.getContactMobile());
+        iMerchantService.updateById(merchant);
+        return ResponseResult.success();
+    }
+
+    @Override
+    public ResponseResult editMemberPassword(OpenMemberPasswordDto memberPasswordDto) {
+        Member member = iMemberService.getMemberByMobile(memberPasswordDto.getResistMobile());
+        ResponseResult result = specialJudge(member, memberPasswordDto.getResistMobile(), memberPasswordDto.getCode());
+        if (result.getCode() != ResponseResultCodeEnum.SUCCESS.getCode()) {
+            return result;
+        }
+
+        if (!memberPasswordDto.getPassword().equals(memberPasswordDto.getConfirmPassword())) {
+            return ResponseResult.error(ResponseResultCodeEnum.INCONSISTENT_CODE);
+        }
+
+        member.setPassword(Md5Utils.hash(memberPasswordDto.getPassword()));
+        iMemberService.updateById(member);
+        return ResponseResult.success();
+    }
+
+    private ResponseResult specialJudge(Member member, String resistMobile, String code) {
+        ResponseResult result = ResponseResult.success();
+
+        if (Objects.isNull(member)) {
+            return ResponseResult.error(ResponseResultCodeEnum.FAIL);
+        }
+
+        String checkCode = redisCache.getCacheObject(SMS_REGISTER_CAPTCHA.key + resistMobile);
+        if (StringUtils.isBlank(checkCode) || !code.equals(checkCode)) {
+            return ResponseResult.error(ResponseResultCodeEnum.INVALID_SMS_CODE);
+        }
+        return result;
+    }
+
+    @Override
+    public ResponseResult appSecretInfo(Long loginId) {
+        Member member = iMemberService.getById(loginId);
+        if (Objects.isNull(member)) {
+            return ResponseResult.error(ResponseResultCodeEnum.REFRESH_TOKEN_INVALID);
+        }
+
+        Merchant merchant = iMerchantService.getById(member.getMerchantId());
+        AppInfo appInfo = iAppInfoService.getByAppId(merchant.getAppId());
+        if (Objects.isNull(appInfo)) {
+            return ResponseResult.error(ResponseResultCodeEnum.APP_ID_ERR);
+        }
+
+        List<AppInfo> appInfoList = iAppInfoService.list(new QueryWrapper<AppInfo>().eq("deleted", 0).eq("name", appInfo.getName()));
+        return ResponseResult.success(appInfoList);
+    }
+
 }

+ 38 - 0
lb-app/src/main/java/com/ydd/app/vo/OpenMemberInfoVo.java

@@ -0,0 +1,38 @@
+package com.ydd.app.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Demo class
+ *
+ * @author 14027
+ * @date 2022/4/26 16:06
+ */
+@Data
+public class OpenMemberInfoVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 注册手机号 */
+    @ApiModelProperty(value = "注册手机号")
+    private String resistMobile;
+
+    /** 企业名称 */
+    @ApiModelProperty(value = "企业名称")
+    private String businessName;
+
+    /** 企业地址 */
+    @ApiModelProperty(value = "企业地址")
+    private String businessAddress;
+
+    /** 联系人 */
+    @ApiModelProperty(value = "联系人")
+    private String contactName;
+
+    /** 联系电话 */
+    @ApiModelProperty(value = "联系电话")
+    private String contactMobile;
+}

+ 1 - 1
lb-common/src/main/java/com/ydd/common/core/domain/Result.java

@@ -22,7 +22,7 @@ public class Result extends HashMap<String, Object> {
     /**
      * 返回内容
      */
-    public static final String MSG_TAG = "msg";
+    public static final String MSG_TAG = "message";
 
     /**
      * 数据对象

+ 2 - 0
lb-common/src/main/java/com/ydd/common/enums/ResponseResultCodeEnum.java

@@ -22,6 +22,8 @@ public enum ResponseResultCodeEnum {
     APP_ID_ERR(1002, "appId无效"),
     SIGN_ERR(1003, "签名验证失败"),
     FIELD_EMPTY(1004, "参数为空"),
+    INVALID_SMS_CODE(1005, "无效的验证码"),
+    INCONSISTENT_CODE(1006, "验证码不一致"),
 
     // 门店、订单类状态码
     SHOP_NOT_EXIST(2001, "门店不存在"),