package com.doumee.api.web; import com.doumee.config.Jwt.JwtTokenUtil; import com.doumee.config.annotation.LoginRequired; import com.doumee.config.annotation.LoginShopRequired; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; import com.doumee.core.utils.Constants; import com.doumee.core.utils.aliyun.ALiYunSmSUtil; import com.doumee.dao.business.model.Areas; import com.doumee.dao.business.model.Member; import com.doumee.dao.web.dto.UserCenterVO; import com.doumee.dao.web.request.UpdateMemberRequest; import com.doumee.dao.web.request.WxPhoneRequest; import com.doumee.dao.web.response.AccountResponse; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.java.Log; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.HashMap; import java.util.Map; import java.util.Optional; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2023/3/23 9:12 */ @Api(tags = "小程序用户业务") @Trace(exclude = true) @RestController @RequestMapping("/web/account") @Slf4j public class AccountApi extends ApiController{ @ApiOperation(value = "小程序登陆方式", notes = "小程序端") @GetMapping("/wxLogin") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "微信code", required = true) }) public ApiResponse wxLogin(@RequestParam String code) { return ApiResponse.success(memberService.wxLogin(code)); } @ApiOperation(value = "绑定手机号", notes = "小程序端") @PostMapping("/wxPhone") public ApiResponse wxPhone(@Valid @RequestBody WxPhoneRequest wxPhoneRequest) { return ApiResponse.success(memberService.wxPhone(wxPhoneRequest)); } // @ApiOperation(value = "测试登陆接口", notes = "小程序端") // @GetMapping("/testLogin") // @ApiImplicitParams({ // @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "memberId", value = "用户编码", required = false) // }) // public ApiResponse testLogin(@RequestParam Integer memberId) { // return ApiResponse.success(memberService.wxLoginTest(memberId)); // } @ApiOperation(value = "获取系统配置", notes = "小程序端") @GetMapping("/getPlatformAboutUs") public ApiResponse getPlatformAboutUs() { return ApiResponse.success("查询成功",shopcartService.getPlatformAboutUs()); } @LoginRequired @ApiOperation(value = "更新用户信息", notes = "小程序端") @PostMapping("/updateMember") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse updateMember(@RequestBody UpdateMemberRequest UpdateMemberRequest) { UpdateMemberRequest.setMemberId(getMemberId()); memberService.updateMember(UpdateMemberRequest); return ApiResponse.success("操作成功"); } @LoginRequired @ApiOperation(value = "获取用户信息", notes = "小程序端") @PostMapping("/getUserInfo") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse getUserInfo() { Member member = memberService.findById(getMemberId()); if(StringUtils.isNotBlank(member.getImgurl())){ member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode() +member.getImgurl()); } Areas areas = areasService.findById(member.getCityId(), Constants.ONE); member.setCityName(Optional.ofNullable(areas).map(s->s.getName()).orElse("")); return ApiResponse.success("获取成功",member); } @LoginRequired @ApiOperation(value = "发送短信验证码", notes = "小程序端") @GetMapping("/sendSmsCode") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "phone", value = "手机号码", required = true) }) public ApiResponse sendSmsCode(@RequestParam String phone) { smsrecordService.sendSms(getMemberId(),phone); return ApiResponse.success("操作成功"); } @LoginRequired @ApiOperation(value = "验证短信验证码", notes = "小程序端") @GetMapping("/verifyCode") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "phone", value = "手机号码", required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "验证码", required = true) }) public ApiResponse verifyCode(@RequestParam String phone,@RequestParam String code) { smsrecordService.verifyCode(getMemberId(),phone,code); return ApiResponse.success("操作成功"); } @LoginRequired @ApiOperation("消费者 - 退出登录") @GetMapping("/logOut") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse logOut(HttpServletRequest request) { memberService.logOut(request.getHeader(JwtTokenUtil.HEADER_KEY),getMemberId()); return ApiResponse.success("操作成功"); } @LoginRequired @ApiOperation("用户注销") @GetMapping("/logOff") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse logOff(HttpServletRequest request) { memberService.logOff(request.getHeader(JwtTokenUtil.HEADER_KEY),getMemberId()); return ApiResponse.success("操作成功"); } }