package org.dromara.app; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.wzj.soopin.member.convert.AccountBillConvert; import com.wzj.soopin.member.convert.MemberAccountConvert; import com.wzj.soopin.member.convert.MemberBankConvert; import com.wzj.soopin.member.convert.MemberConvert; import com.wzj.soopin.member.domain.bo.AccountBillBO; import com.wzj.soopin.member.domain.bo.MemberBankBO; import com.wzj.soopin.member.domain.po.AccountBill; import com.wzj.soopin.member.domain.po.Member; import com.wzj.soopin.member.domain.po.MemberAccount; import com.wzj.soopin.member.domain.po.MemberBank; import com.wzj.soopin.member.domain.vo.AccountBillVO; import com.wzj.soopin.member.domain.vo.MemberAccountVO; import com.wzj.soopin.member.domain.vo.MemberBankVO; import com.wzj.soopin.member.domain.vo.MemberVO; import com.wzj.soopin.member.service.IAccountBillService; import com.wzj.soopin.member.service.IMemberAccountService; import com.wzj.soopin.member.service.IMemberBankService; import com.wzj.soopin.member.service.IMemberService; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import me.zhyd.oauth.model.AuthResponse; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.domain.model.SocialLoginBody; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.ValidatorUtils; import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.social.config.properties.SocialProperties; import org.dromara.common.social.utils.SocialUtils; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/app/member") @Tag(name = "会员管理") @RequiredArgsConstructor public class AppMemberController { private final IMemberService service; private final MemberConvert convert; private final MemberAccountConvert accountConvert; private final IMemberAccountService accountService; private final IAccountBillService accountBillService; private final AccountBillConvert accountBillConvert; private final SocialProperties socialProperties; private final IMemberBankService memberBankService; private final MemberBankConvert memberBankConvert; @Tag(name = "获取会员账户信息详细信息") @GetMapping(value = "/info") public R getInfo() { //获取用户信息 LoginUser loginUser = LoginHelper.getLoginUser(); if (loginUser == null) { throw new ServiceException("用户未登录"); } return R.ok(convert.toVO(service.getById(loginUser.getUserId()))); } @Tag(name = "获取会员账户表详细信息") @GetMapping(value = "/account") public R accountInfo() { //获取用户信息 LoginUser loginUser = LoginHelper.getLoginUser(); if (loginUser == null) { throw new ServiceException("用户未登录"); } return R.ok(accountConvert.toVO(accountService.getMemberAccount(loginUser.getUserId()))); } @Tag(name = "查询账单") @PostMapping("/bank") public R> list(@RequestBody MemberBankBO bo, @RequestBody Page page) { //获取用户信息 LoginUser loginUser = LoginHelper.getLoginUser(); if (loginUser == null) { throw new ServiceException("用户未登录"); } Long memberId = loginUser.getUserId(); bo.setMemberId(memberId); Page memberPage = memberBankService.page(page, bo.toWrapper()); return R.ok(memberBankConvert.toVO(memberPage)); } @Tag(name = "查询账单") @PostMapping("/bills") public R> list(@RequestBody AccountBillBO bo, @RequestBody Page page) { //获取用户信息 LoginUser loginUser = LoginHelper.getLoginUser(); if (loginUser == null) { throw new ServiceException("用户未登录"); } Long memberId = loginUser.getUserId(); //根据会员获取账户信息 MemberAccount memberAccount = accountService.getMemberAccount(memberId); if (memberAccount == null) { throw new ServiceException("用户未绑定账户"); } bo.setAccountId(memberAccount.getId()); Page memberPage = accountBillService.page(page, bo.toWrapper()); return R.ok(accountBillConvert.toVO(memberPage)); } @Tag(name = "绑定微信") @PostMapping("/bind/wechat") public R bindWechat(@RequestBody SocialLoginBody loginBody) { //获取用户信息 LoginUser loginUser = LoginHelper.getLoginUser(); if (loginUser == null) { throw new ServiceException("用户未登录"); } Long memberId = loginUser.getUserId(); ValidatorUtils.validate(loginBody); AuthResponse response = SocialUtils.loginAuth( loginBody.getSource(), loginBody.getSocialCode(), loginBody.getSocialState(), socialProperties); if (!response.ok()) { throw new ServiceException(response.getMsg()); } AuthUser authUserData = response.getData(); String unionId=authUserData.getToken().getUnionId(); Member member = Member.builder().id(memberId).openId(unionId).build(); service.updateById(member); // 更新用户的微信信息 // 返回给前端 return R.ok(authUserData.getToken()); } }