rentaiming
2024-05-28 74b3557bf43308d8d663565ca0aa37d58ec2781a
写用户端接口
6个文件已添加
34个文件已修改
1867 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/SecurityConstant.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AppMiniLoginVO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Member.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppMiniLoginDTO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppMiniRegisterDTO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/MemberFallbackFactory.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/MemberClient.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/ArticleCommentsController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/ArticleController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/MemberArticleCollectionController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/MemberLikeController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/pom.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionBidRecordController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/HttpUtils.java 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/AlipayAppController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberAddressController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberPointsController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/WeiXinAppController.java 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java 296 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/util/HttpUtils.java 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceOrderController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceRiseController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/CouponMemberController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/PromotionWishListController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/pom.xml
@@ -16,6 +16,12 @@
    </description>
    <dependencies>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>
        
        <!-- RuoYi Common Core-->
        <dependency>
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
@@ -48,4 +48,10 @@
    public R<?> changePassword(@RequestParam("username") String username,
            @RequestParam("password") String password,
            @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    @PostMapping("/user/getSysUser")
    public R<SysUser> getSysUser(@RequestBody Long userId);
    @PostMapping("/user/registerUser")
    public R<SysUser> registerUser(@RequestBody SysUser sysUser);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/SecurityConstant.java
New file
@@ -0,0 +1,69 @@
package com.ruoyi.system.api.constants;
/**
 * @author jqs34
 * @ClassName SecurityConstant
 * @description: TODO
 * @date 2023年02月21日
 * @version: 1.0
 */
public interface SecurityConstant {
    /**
     * 微信sessionKey前缀
     */
    String SESSION_KEY = "SESSION_KEY:";
    /**
     * 用户验证码前缀key
     */
    String MESSAGE_CODE = "MESSAGE_CODE:";
    /**
     * 用户验证码前缀key
     */
    String MINI_CODE = "MINI_CODE:";
    /**
     * 用户验证码前缀key
     */
    String WX_TOKEN = "WX_TOKEN";
    /**
     * 省市区列表key
     */
    String REGION_LIST = "REGION_LIST";
    /**
     * 省市区列表key
     */
    String CITY_LIST = "CITY_LIST";
    /**
     * 秒杀活动商品key前缀
     */
    String ACTIVITY_GOODS = "ACTIVITY_GOODS";
    /**
     * 自动取消订单时间
     */
    String AUTO_CANCEL_ORDER_TIME = "AUTO_CANCEL_ORDER_TIME";
    /**
     * 商户统一分成
     */
    String SHOP_COMMON_PROPORTION = "SHOP_COMMON_PROPORTION";
    /**
     * 自动取消订单时间
     */
    String PAY_MONEY_INTEGRAL = "PAY_MONEY_INTEGRAL";
    /**
     * 用户验证码前缀key
     */
    String QY_TOKEN = "QY_TOKEN";
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AppMiniLoginVO.java
New file
@@ -0,0 +1,33 @@
package com.ruoyi.system.api.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class AppMiniLoginVO {
    @ApiModelProperty(value = "小程序openid")
    private String miniOpenid;
    @ApiModelProperty(value = "微信unionid")
    private String wxUnionid;
    @ApiModelProperty(value = "微信sessionKey")
    private String sessionKey;
    @ApiModelProperty("支付宝用戶ID")
    private String zfbuserid;
    @ApiModelProperty(value = "用户信息")
    private SysUser sysUser;
    @ApiModelProperty(value = "会员id")
    private Long memberid;
    @ApiModelProperty(value = "拍卖师电话")
    private String phone;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Member.java
@@ -98,6 +98,7 @@
    @ApiModelProperty(value = "1未认证,2已认证")
    private Integer isAuthentication;
    @ApiModelProperty(value = "后天对应id")
    private  Long userId;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppMiniLoginDTO.java
New file
@@ -0,0 +1,21 @@
package com.ruoyi.system.api.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class AppMiniLoginDTO {
    //微信的
    @ApiModelProperty(value = "微信的code")
    private String code;
    //支付宝微信的
    @ApiModelProperty(value = "支付宝的auth_code")
    private String auth_code;
    @ApiModelProperty("1支付宝 , 2微信")
    private Integer type;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppMiniRegisterDTO.java
New file
@@ -0,0 +1,20 @@
package com.ruoyi.system.api.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class AppMiniRegisterDTO {
    @ApiModelProperty(value = "openid")
    private String miniOpenid;
    @ApiModelProperty(value = "wxUnionid")
    private String wxUnionid;
    @ApiModelProperty(value = "支付寶的用戶id")
    private String zfbuserid;
    @ApiModelProperty("1支付宝 , 2微信")
    private Integer type;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/MemberFallbackFactory.java
@@ -1,8 +1,11 @@
package com.ruoyi.system.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.MemberAddress;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO;
import com.ruoyi.system.api.feignClient.MemberClient;
import java.util.List;
import java.util.Set;
@@ -33,6 +36,21 @@
            public R<List<Member>> getMemberListByIds(Set<Long> memberIdList, String source) {
                return R.fail("获取用户列表失败:" + cause.getMessage());
            }
            public R<AppMiniLoginVO> miniLogin(AppMiniLoginDTO appMiniLoginDto)
            {
                return R.fail("登录用户失败:" + cause.getMessage());
            }
            @Override
            public R<AppMiniLoginVO> actionMiniLogin(AppMiniLoginDTO appMiniLoginDto) {
                return R.fail("拍卖师登录用户失败:" + cause.getMessage());
            }
            @Override
            public R<AppMiniLoginVO> miniRegister(AppMiniRegisterDTO appUserRegisterDto) {
                return R.fail("注册用户失败:" + cause.getMessage());
            }
        };
        }
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
@@ -36,11 +36,20 @@
            {
                return R.fail("注册用户失败:" + throwable.getMessage());
            }
            @Override
            public R<SysUser> registerUser(SysUser sysUser) {
                return R.fail("注册用户失败:" + throwable.getMessage());
            }
            @Override
            public R<?> changePassword(String username, String password, String source) {
                return R.fail("修改密码失败:" + throwable.getMessage());
            }
            @Override
            public R<SysUser> getSysUser(Long userId) {
                return R.fail("获取用户失败" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/MemberClient.java
@@ -3,8 +3,11 @@
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.MemberAddress;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO;
import com.ruoyi.system.api.factory.MemberFallbackFactory;
import java.util.List;
import java.util.Set;
@@ -28,4 +31,14 @@
    @PostMapping("/member/list-by-ids")
    R<List<Member>> getMemberListByIds(@RequestParam("memberIdList") Set<Long> memberIdList,
            @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    @PostMapping("/member/miniLogin")
    public R<AppMiniLoginVO> miniLogin(@RequestBody AppMiniLoginDTO appMiniLoginDto);
    @PostMapping("/forepart/auction-salesroom/actionMiniLogin")
    public R<AppMiniLoginVO> actionMiniLogin(@RequestBody AppMiniLoginDTO appMiniLoginDto);
    @PostMapping("/member/miniRegister")
    public R<AppMiniLoginVO> miniRegister(@RequestBody AppMiniRegisterDTO appUserRegisterDto);
}
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -13,8 +13,11 @@
import com.ruoyi.common.security.auth.AuthUtil;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.Api;
@@ -54,6 +57,41 @@
    private SysUserClient userClient;
    @Autowired
    private RedisService redisService;
    @ApiOperation("小程序登录")
    @PostMapping("miniLogin")
    public R<?> miniLogin(@RequestBody AppMiniLoginDTO appMiniLoginDto)
    {
        // 小程序用户登录
        AppMiniLoginVO appMiniLoginVo = sysLoginService.miniLogin(appMiniLoginDto);
        // 获取登录token
        return R.ok(tokenService.createMiniToken(appMiniLoginVo));
    }
    @ApiOperation("小程序注册")
    @PostMapping("miniRegister")
    public R<?> miniRegister(@RequestBody AppMiniRegisterDTO appUserRegisterDto)
    {
        // 小程序用户登录
        AppMiniLoginVO appMiniLoginVo = sysLoginService.miniRegister(appUserRegisterDto);
        // 获取登录token
        return R.ok(tokenService.createMiniToken(appMiniLoginVo));
    }
    @ApiOperation("拍卖师小程序登录")
    @PostMapping("actionMiniLogin")
    public R<?> actionMiniLogin(@RequestBody AppMiniLoginDTO appMiniLoginDto)
    {
        // 小程序用户登录
        AppMiniLoginVO appMiniLoginVo = sysLoginService.actionMiniLogin(appMiniLoginDto);
        // 获取登录token
        return R.ok(tokenService.createMiniToken(appMiniLoginVo));
    }
    @PostMapping("login")
    @ApiOperation(value = "管理后台-用户登录")
    public R<?> login(@RequestBody LoginBody form)
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -13,10 +13,16 @@
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO;
import com.ruoyi.system.api.feignClient.MemberClient;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
 * 登录校验方法
@@ -37,6 +43,9 @@
    @Autowired
    private RedisService redisService;
    @Resource
    private MemberClient MemberClient;
    /**
     * 登录
@@ -101,6 +110,110 @@
        return userInfo;
    }
    public AppMiniLoginVO miniLogin(AppMiniLoginDTO appMiniLoginDto)
    {
        // 查询用户信息
        R<AppMiniLoginVO> userResult = MemberClient.miniLogin(appMiniLoginDto);
        if (R.FAIL == userResult.getCode())
        {
            throw new ServiceException(userResult.getMsg());
        }
        AppMiniLoginVO userInfo = userResult.getData();
        SysUser user = userInfo.getSysUser();
        if(user!=null){
            String username = user.getUserName();
            // IP黑名单校验
            String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST));
            if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
            {
                recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单");
                throw new ServiceException("很遗憾,访问IP已被列入系统黑名单");
            }
            if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
            {
                recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
                throw new ServiceException(username,501);
            }
            if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
            {
                recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员");
                throw new ServiceException(username,501);
            }
            recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
        }
        return userInfo;
    }
    public AppMiniLoginVO miniRegister(AppMiniRegisterDTO appUserRegisterDto)
    {
        // 查询用户信息
        R<AppMiniLoginVO> userResult = MemberClient.miniRegister(appUserRegisterDto);
        if (R.FAIL == userResult.getCode())
        {
            throw new ServiceException(userResult.getMsg());
        }
        AppMiniLoginVO appMiniRegisterVo = userResult.getData();
        SysUser user=appMiniRegisterVo.getSysUser();
        if(appMiniRegisterVo.getSysUser()!=null){
            String username = user.getUserName();
            // IP黑名单校验
            String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST));
            if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
            {
                recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单");
                throw new ServiceException("很遗憾,访问IP已被列入系统黑名单");
            }
            if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
            {
                recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
                throw new ServiceException("对不起,您的账号: 已被删除");
            }
            if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
            {
                recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员");
                throw new ServiceException("对不起,您的账号: 已停用");
            }
            recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
        }
        return appMiniRegisterVo;
    }
    public AppMiniLoginVO actionMiniLogin(AppMiniLoginDTO appMiniLoginDto)
    {
        // 查询用户信息
        R<AppMiniLoginVO> userResult = MemberClient.actionMiniLogin(appMiniLoginDto);
        if (R.FAIL == userResult.getCode())
        {
            throw new ServiceException(userResult.getMsg());
        }
        AppMiniLoginVO userInfo = userResult.getData();
        SysUser user = userInfo.getSysUser();
        if(user!=null){
            String username = user.getUserName();
            // IP黑名单校验
            String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST));
            if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
            {
                recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单");
                throw new ServiceException("很遗憾,访问IP已被列入系统黑名单");
            }
            if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
            {
                recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
                throw new ServiceException(username,501);
            }
            if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
            {
                recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员");
                throw new ServiceException(username,501);
            }
            recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
        }
        return userInfo;
    }
    public void logout(String loginName)
    {
        recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "退出成功");
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
@@ -128,9 +128,20 @@
    public static final String DATE_FORMATTER_TIME = "yyyy-MM-dd HH:mm:ss";
    public static final String DATE_FORMATTER_DATE = "yyyy-MM-dd";
    /**
     * 定时任务违规的字符
     */
    public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
            "org.springframework", "org.apache", "com.ruoyi.common.core.utils.file" };
    public static final Integer FROM_SYSTEM = 0;
    public static final Integer FROM_SHOP = 1;
    public static final Integer FROM_STAFF = 2;
    public static final Integer FROM_MINI_APP = 3;
}
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java
@@ -13,6 +13,11 @@
    public static final String DETAILS_USER_ID = "user_id";
    /**
     * 登录端
     */
    public static final String LOGIN_FROM = "login_from";
    /**
     * 用户名字段
     */
    public static final String DETAILS_USERNAME = "username";
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -4,6 +4,9 @@
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ruoyi.common.core.constant.CacheConstants;
@@ -32,7 +35,8 @@
    protected static final long MILLIS_MINUTE = 60 * MILLIS_SECOND;
    private final static long expireTime = CacheConstants.EXPIRATION;
    private final static long EXPIRE_TIME = CacheConstants.EXPIRATION;
    private final static String ACCESS_TOKEN = CacheConstants.LOGIN_TOKEN_KEY;
@@ -61,7 +65,41 @@
        // 接口返回信息
        Map<String, Object> rspMap = new HashMap<String, Object>();
        rspMap.put("access_token", JwtUtils.createToken(claimsMap));
        rspMap.put("expires_in", expireTime);
        rspMap.put("expires_in", EXPIRE_TIME);
        return rspMap;
    }
    public Map<String, Object> createMiniToken(AppMiniLoginVO appMiniLoginVo)
    {
        LoginUser loginUser = new LoginUser();
        // Jwt存储信息
        Map<String, Object> claimsMap = new HashMap<String, Object>();
        // 接口返回信息
        Map<String, Object> rspMap = new HashMap<String, Object>();
        //用户为空只返回openid
        rspMap.put("mobile","");
        rspMap.put("access_token", "");
        if(appMiniLoginVo.getSysUser()!=null){
            loginUser.setSysUser(appMiniLoginVo.getSysUser());
            String token = IdUtils.fastUUID();
            Long userId = loginUser.getSysUser().getUserId();
            String userName = loginUser.getSysUser().getUserName();
            loginUser.setToken(token);
            loginUser.setUserid(userId);
            loginUser.setUsername(userName);
            loginUser.setIpaddr(IpUtils.getIpAddr());
            refreshToken(loginUser);
            claimsMap.put(SecurityConstants.USER_KEY, token);
            claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
            claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
            claimsMap.put(SecurityConstants.LOGIN_FROM, Constants.FROM_MINI_APP);
            rspMap.put("access_token", JwtUtils.createToken(claimsMap));
            rspMap.put("expires_in", EXPIRE_TIME);
        }
        rspMap.put("wx_unionid", appMiniLoginVo.getWxUnionid());
        rspMap.put("mini_openid", appMiniLoginVo.getMiniOpenid());
        rspMap.put("zfb_userid", appMiniLoginVo.getZfbuserid());
        rspMap.put("phone",appMiniLoginVo.getPhone());
        return rspMap;
    }
@@ -156,10 +194,10 @@
    public void refreshToken(LoginUser loginUser)
    {
        loginUser.setLoginTime(System.currentTimeMillis());
        loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
        loginUser.setExpireTime(loginUser.getLoginTime() + EXPIRE_TIME * MILLIS_MINUTE);
        // 根据uuid将loginUser缓存
        String userKey = getTokenKey(loginUser.getToken());
        redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
        redisService.setCacheObject(userKey, loginUser, EXPIRE_TIME, TimeUnit.MINUTES);
    }
    private String getTokenKey(String token)
ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/ArticleCommentsController.java
@@ -7,11 +7,7 @@
import com.ruoyi.common.core.domain.R;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -33,7 +29,7 @@
    @PostMapping("/saveMemberArticleComments")
    @ResponseBody
    @ApiOperation(value = "添加或者修改用户评论/回复")
    public R<T> saveMemberArticleComments(ArticleCommentsDTO articleCommentsDTO) {
    public R<T> saveMemberArticleComments(@RequestBody ArticleCommentsDTO articleCommentsDTO) {
        articleCommentsService.saveMemberArticleComments(articleCommentsDTO);
        return R.ok();
    }
@@ -41,7 +37,7 @@
    @PostMapping("/delMemberArticleComments")
    @ResponseBody
    @ApiOperation(value = "删除用户评论/回复")
    public R<T> delMemberArticleComments(ArticleCommentsDTO articleCommentsDTO) {
    public R<T> delMemberArticleComments(@RequestBody ArticleCommentsDTO articleCommentsDTO) {
        articleCommentsService.delMemberArticleComments(articleCommentsDTO);
        return R.ok();
    }
ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/ArticleController.java
@@ -15,10 +15,8 @@
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -44,21 +42,21 @@
    @PostMapping("/getArticleList")
    @ResponseBody
    @ApiOperation(value = "获取资讯")
    public R<PageDTO<ArticleVO>> getArticleList(ArticleDTO articleDTO) {
    public R<PageDTO<ArticleVO>> getArticleList( @RequestBody ArticleDTO articleDTO) {
        return R.ok(iArticleService.getArticleList(articleDTO));
    }
    @PostMapping("/getMemberArticleList")
    @ResponseBody
    @ApiOperation(value = "获取用户资讯")
    public R<PageDTO<Article>> getMemberArticleList(ArticleDTO articleDTO) {
    public R<PageDTO<Article>> getMemberArticleList(@RequestBody ArticleDTO articleDTO) {
        return R.ok(iArticleService.getMemberArticleList(articleDTO));
    }
    @PostMapping("/saveMemberArticle")
    @ResponseBody
    @ApiOperation(value = "添加或者修改用户资讯")
    public R<T> saveMemberArticle(ArticleDTO articleDTO) {
    public R<T> saveMemberArticle(@RequestBody ArticleDTO articleDTO) {
        iArticleService.saveMemberArticle(articleDTO);
        return R.ok();
    }
@@ -66,7 +64,7 @@
    @PostMapping("/delMemberArticle")
    @ResponseBody
    @ApiOperation(value = "删除用户资讯")
    public R<T> delMemberArticle(ArticleDTO articleDTO) {
    public R<T> delMemberArticle(@RequestBody ArticleDTO articleDTO) {
        iArticleService.delMemberArticle(articleDTO);
        return R.ok();
    }
ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/MemberArticleCollectionController.java
@@ -12,11 +12,7 @@
import com.ruoyi.common.core.utils.page.PageDTO;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -38,7 +34,7 @@
    @PostMapping("/saveMemberArticleCollection")
    @ResponseBody
    @ApiOperation(value = "文章收藏和取消收藏")
    public R<T> saveMemberArticleCollection(MemberArticleCollectionDTO memberArticleCollectionDTO) {
    public R<T> saveMemberArticleCollection( @RequestBody MemberArticleCollectionDTO memberArticleCollectionDTO) {
        memberArticleCollectionService.saveMemberArticleCollection(memberArticleCollectionDTO);
        return R.ok();
    }
@@ -47,7 +43,7 @@
    @PostMapping("/getMemberArticleCollection")
    @ResponseBody
    @ApiOperation(value = "获取用户收藏资讯")
    public R<PageDTO<MemberArticleCollectionVO>> getMemberArticleCollection(ArticleDTO articleDTO) {
    public R<PageDTO<MemberArticleCollectionVO>> getMemberArticleCollection( ArticleDTO articleDTO) {
        return R.ok(memberArticleCollectionService.getMemberArticleCollection(articleDTO));
    }
ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/MemberLikeController.java
@@ -1,17 +1,12 @@
package com.ruoyi.article.controller;
import com.ruoyi.article.dto.ArticleCommentsDTO;
import com.ruoyi.article.dto.MemberLikeDTO;
import com.ruoyi.article.service.IMemberLikeService;
import com.ruoyi.common.core.domain.R;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -32,7 +27,7 @@
    @PostMapping("/saveMemberLike")
    @ResponseBody
    @ApiOperation(value = "文章,评论和回复 点赞和取消点赞")
    public R<T> saveMemberLike(MemberLikeDTO memberLikeDTO) {
    public R<T> saveMemberLike(@RequestBody MemberLikeDTO memberLikeDTO) {
        memberLikeService.saveMemberLike(memberLikeDTO);
        return R.ok();
    }
ruoyi-modules/ruoyi-auction/pom.xml
@@ -52,6 +52,14 @@
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      <groupId>com.github.binarywang</groupId>
      <artifactId>weixin-java-miniapp</artifactId>
      <version>4.5.0</version>
    </dependency>
    <!-- Swagger UI -->
    <dependency>
      <groupId>io.springfox</groupId>
@@ -117,6 +125,12 @@
      <groupId>com.ruoyi</groupId>
      <artifactId>ruoyi-common-seata</artifactId>
    </dependency>
    <dependency>
      <groupId>com.ruoyi</groupId>
      <artifactId>ruoyi-modules-member</artifactId>
      <version>3.6.2</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
  <build>
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionBidRecordController.java
@@ -8,6 +8,8 @@
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@@ -35,7 +37,7 @@
    @RequestMapping("/getAuctionBidRecordList")
    @ResponseBody
    @ApiOperation(value = "拍卖大屏滚动出价")
    public R<List<AuctionBidRecord>> getAuctionBidRecordList(AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO) {
    public R<List<AuctionBidRecord>> getAuctionBidRecordList(@RequestBody AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO) {
        return R.ok(iAuctionBidRecordService.getAuctionBidRecordList(auctionSalesroomGoodsDTO));
    }
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomController.java
@@ -8,6 +8,8 @@
import com.ruoyi.auction.service.IAuctionSalesroomService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestBody;
@@ -38,7 +40,7 @@
    @RequestMapping("getAuctionBidRecordList")
    @ResponseBody
    @ApiOperation(value = "拍卖大屏获取拍卖信息")
    public R<PageDTO<AuctionSalesroom>> getAuctionBidRecordList(AuctionSalesroomGoodsDTO ctionSalesroomGoodsDTO) {
    public R<PageDTO<AuctionSalesroom>> getAuctionBidRecordList(@RequestBody AuctionSalesroomGoodsDTO ctionSalesroomGoodsDTO) {
        return R.ok(iAuctionSalesroomService.getAuctionBidRecordList(ctionSalesroomGoodsDTO));
    }
@@ -50,7 +52,7 @@
    @RequestMapping("/getBaaner")
    @ResponseBody
    @ApiOperation(value = " 暖场视频or封面海报")
    public R<ForepartAuctionSalesroomVO> getBaaner(AuctionSalesroomGoodsDTO ctionSalesroomGoodsDTO) {
    public R<ForepartAuctionSalesroomVO> getBaaner(@RequestBody AuctionSalesroomGoodsDTO ctionSalesroomGoodsDTO) {
        return R.ok(iAuctionSalesroomService.getBaaner(ctionSalesroomGoodsDTO));
    }
@@ -63,5 +65,12 @@
        return R.ok(iAuctionSalesroomService.getAuctionBidRecordOne(arepartAuctionBidRecordDTO));
    }
    @RequestMapping("/actionMiniLogin")
    @ResponseBody
    @ApiOperation(value = "拍卖师第三方登陸")
    public R<AppMiniLoginVO> actionMiniLogin(@RequestBody AppMiniLoginDTO appMiniLoginDto) {
        return R.ok(iAuctionSalesroomService.actionMiniLogin(appMiniLoginDto));
    }
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java
@@ -11,6 +11,7 @@
import java.util.List;
import javax.annotation.Resource;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@@ -38,7 +39,7 @@
    @RequestMapping("/getAuctionSalesroomGoods")
    @ResponseBody
    @ApiOperation(value = "拍卖大屏的商品介绍")
    public R<ForepartAuctionSalesroomGoodsVO> getAuctionSalesroomGoods(AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
    public R<ForepartAuctionSalesroomGoodsVO> getAuctionSalesroomGoods(@RequestBody AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
        return R.ok(iAuctionSalesroomGoodsService.getAuctionSalesroomGoods(ationSalesroomGoodsDTO));
    }
@@ -53,7 +54,7 @@
    @RequestMapping("/getAuctionSalesroominfo")
    @ResponseBody
    @ApiOperation(value = "拍卖师端拍卖场信息")
    public R<AuctionSalesroomVO> getAuctionSalesroominfo(AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
    public R<AuctionSalesroomVO> getAuctionSalesroominfo(@RequestBody AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
        return R.ok(iAuctionSalesroomGoodsService.getAuctionSalesroominfo(ationSalesroomGoodsDTO));
    }
@@ -69,7 +70,7 @@
    @RequestMapping("/auctionSalesroomStart")
    @ResponseBody
    @ApiOperation(value = "拍卖师端拍卖场立即开始")
    public R<T> auctionSalesroomStart(AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
    public R<T> auctionSalesroomStart(@RequestBody AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
    iAuctionSalesroomGoodsService.auctionSalesroomStart(ationSalesroomGoodsDTO);
        return R.ok();
    }
@@ -82,7 +83,7 @@
    @RequestMapping("/auctionSalesroomEnd")
    @ResponseBody
    @ApiOperation(value = "拍卖师端拍卖场立即结束")
    public R<T> auctionSalesroomEnd(AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
    public R<T> auctionSalesroomEnd(@RequestBody AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
        iAuctionSalesroomGoodsService.auctionSalesroomEnd(ationSalesroomGoodsDTO);
        return R.ok();
    }
@@ -95,7 +96,7 @@
    @RequestMapping("/isAuctionSalesroom")
    @ResponseBody
    @ApiOperation(value = "判断拍卖师端是否还有未拍卖商品")
    public R<List<AuctionSalesroomGoods>> isAuctionSalesroom(AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
    public R<List<AuctionSalesroomGoods>> isAuctionSalesroom(@RequestBody AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
        return R.ok(iAuctionSalesroomGoodsService.isAuctionSalesroom(ationSalesroomGoodsDTO));
    }
@@ -108,7 +109,7 @@
    @RequestMapping("/auctionSalesroomGoodsStart")
    @ResponseBody
    @ApiOperation(value = "拍卖师端拍卖场下一个立即开始")
    public R<T> auctionSalesroomGoodsStart(AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO) {
    public R<T> auctionSalesroomGoodsStart(@RequestBody AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO) {
        iAuctionSalesroomGoodsService.auctionSalesroomGoodsStart(auctionSalesroomGoodsDTO);
        return R.ok();
    }
@@ -122,8 +123,10 @@
    @RequestMapping("/auctionSalesroomGoodsEnd")
    @ResponseBody
    @ApiOperation(value = "拍卖师端拍卖商品立即结束")
    public R<T> auctionSalesroomGoodsEnd(AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO) {
    public R<T> auctionSalesroomGoodsEnd(@RequestBody AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO) {
        iAuctionSalesroomGoodsService.auctionSalesroomGoodsStart(auctionSalesroomGoodsDTO);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
@@ -6,6 +6,9 @@
import com.ruoyi.auction.controller.forepart.vo.ForepartAuctionSalesroomVO;
import com.ruoyi.auction.domain.AuctionSalesroom;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import org.springframework.web.bind.annotation.RequestBody;
/**
 * <p>
@@ -30,4 +33,6 @@
     AuctionSalesroom getAuctionBidRecordOne(ForepartAuctionBidRecordDTO arepartAuctionBidRecordDTO);
    AppMiniLoginVO actionMiniLogin(@RequestBody AppMiniLoginDTO appMiniLoginDto);
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -1,5 +1,15 @@
package com.ruoyi.auction.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.request.AlipayUserInfoShareRequest;
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.alipay.api.response.AlipayUserInfoShareResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -14,11 +24,27 @@
import com.ruoyi.auction.service.IAuctionVideoService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.auction.util.HttpUtils;
import com.ruoyi.system.api.constants.SecurityConstant;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.feignClient.SysUserClient;
import javax.annotation.Resource;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import static com.ruoyi.member.service.impl.MemberServiceImpl.getAccessTokenByWX;
/**
 * <p>
@@ -39,6 +65,45 @@
    @Resource
    private SysUserClient sysUserClient;
    @Resource
    private WxMaService wxMaService;
    //微信
    private static final String ACCESS_TOKEN_HOST = "https://api.weixin.qq.com/cgi-bin/token";
    private static final String WX_APPID = "wxb7f0ea286fc4e535";
    private static final String WX_SECRET = "852a2512a6ab559cafc68bae5d4160ac";
    //支付寶
    /**
     * Alipay客户端
     */
    private AlipayClient alipayClient;
    /**支付宝网关*/
    /**
     * 沙箱的
     */
    private static final String ALIPAY_BORDER_DEV = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
    /**
     * 个人用户的
     */
    private static final String ALIPAY_BORDER_PROD = "https://openapi.alipay.com/gateway.do";
    /**
     * appID
     **/
    private static final String APP_ID_PROD = "2021003196653501";
    /**
     * 私钥
     */
    private static final String APP_PRIVATE_KEY = "";
    /**
     * 支付宝公钥
     */
    private static final String ALIPAY_PUBLIC_KEY = "";
    @Override
    public PageDTO<AuctionSalesroom> getAuctionBidRecordList(AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) {
@@ -90,4 +155,124 @@
        AuctionSalesroom auctionBidRecord=iAuctionSalesroomService.getOne(wrapper);
        return auctionBidRecord;
    }
    @Override
    public AppMiniLoginVO actionMiniLogin(AppMiniLoginDTO appMiniLoginDto) {
        try {
        AppMiniLoginVO appMiniLoginVo = new AppMiniLoginVO();
        if (appMiniLoginDto.getType()==1){
            if (appMiniLoginDto.getAuth_code()== null || appMiniLoginDto.getAuth_code().length() == 0) {
            } else {
                AppMiniLoginVO user=new AppMiniLoginVO();
                //String serverUrl, String appId, String privateKey, String format,String charset, String alipayPublicKey, String signType
                //实例化客户端 参数:正式环境URL,Appid,商户私钥 PKCS8格式,字符编码格式,字符格式,支付宝公钥,签名方式
                AlipayClient alipayClient = new DefaultAlipayClient(ALIPAY_BORDER_PROD,APP_ID_PROD, APP_PRIVATE_KEY, "json", "GBK", ALIPAY_PUBLIC_KEY, "RSA2");
                AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
                // 值为authorization_code时,代表用code换取
                request.setGrantType("authorization_code");
                //授权码,用户对应用授权后得到的
                request.setCode(appMiniLoginDto.getAuth_code());
                //这里使用execute方法
                AlipaySystemOauthTokenResponse response = null;
                try {
                    response = alipayClient.execute(request);
                } catch (AlipayApiException e) {
                    throw new RuntimeException(e);
                }
                //刷新令牌,上次换取访问令牌时得到。见出参的refresh_token字段
                request.setRefreshToken(response.getAccessToken());
                //返回成功时 就将唯一标识返回
                if (response.isSuccess()) {
                    System.out.println("调用成功");
                    //我这里只返回了一个字段给前端用
                    String user1= response.getUserId();
                    appMiniLoginVo.setZfbuserid(response.getUserId());
                    AlipayUserInfoShareResponse  alipayUserInfoShareResponse=getAliUserInfo(response.getAccessToken());
                    appMiniLoginVo.setPhone(alipayUserInfoShareResponse.getPhone());
                    R<SysUser> sysUserR = sysUserClient.queryUserByPhone(alipayUserInfoShareResponse.getPhone());
                    SysUser data = sysUserR.getData();
                    appMiniLoginVo.setSysUser(data);
                }
            }
        }else{
            WxMaJscode2SessionResult session = null;
            String unionid;
            String openid;
            String sessionKey = null;
            //获取session
            session = wxMaService.getUserService().getSessionInfo(appMiniLoginDto.getCode());
            if (session != null && StringUtils.isNotBlank(session.getOpenid())) {
                unionid = session.getUnionid();
                openid = session.getOpenid();
                sessionKey = session.getSessionKey();
                String responseAccessToken = getAccessTokenByWX();
                JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken);
                String accessToken = jsonAccessToken.getString("access_token");
                String errmsg = jsonAccessToken.getString("errmsg");
                Long expiresIn = jsonAccessToken.getLong("expires_in");
                if (StringUtils.isBlank(accessToken)) {
                    throw new ServiceException(errmsg);
                }
                String responseUserPhoneNumber = getMobileByWX(accessToken, appMiniLoginDto.getCode());
                JSONObject jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber);
                String phoneInfo = jsonUserPhoneNumber.getString("phone_info");
                JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo);
                String mobile = jsonUserPhoneInfo.getString("purePhoneNumber");
                //获取用户
                R<SysUser> sysUserR = sysUserClient.queryUserByPhone(mobile);
                SysUser data = sysUserR.getData();
                appMiniLoginVo.setSysUser(data);
                appMiniLoginVo.setMiniOpenid(openid);
                appMiniLoginVo.setWxUnionid(unionid);
                appMiniLoginVo.setPhone(mobile);
                appMiniLoginVo.setSessionKey(sessionKey);
           }
        }
            return appMiniLoginVo;
        } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
    }
    private AlipayUserInfoShareResponse getAliUserInfo (String accessToken) throws Exception {
        AlipayClient alipayClient = new DefaultAlipayClient(ALIPAY_BORDER_PROD,APP_ID_PROD, APP_PRIVATE_KEY, "json", "GBK", ALIPAY_PUBLIC_KEY, "RSA2");
        AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
        AlipayUserInfoShareResponse response = alipayClient.execute(request, accessToken);
        if(response.isSuccess()){
            System.out.println("获取会员信息 - 调用成功");
            return response;
        }
        return null;
    }
    public static String getAccessTokenByWX() throws Exception {
        String host = ACCESS_TOKEN_HOST + "?appid=" + WX_APPID + "&secret=" + WX_SECRET + "&grant_type=client_credential";
        Map<String, String> headers = new HashMap<>(8);
        HttpResponse response = HttpUtils.doGet(host, "", "GET", headers, null);
        return EntityUtils.toString(response.getEntity());
    }
        public static String getMobileByWX(String accessToken, String code) throws Exception {
            Map<String, String> headers = new HashMap<>(16);
            headers.put("Content-Type", "application/json");
            headers.put("Accept", "application/json");
            Map<String, String> querys = new HashMap<>(16);
            Map<String, String> bodys = new HashMap<>(16);
            querys.put("access_token", accessToken);
            bodys.put("code", code);
            String body = JSONObject.toJSONString(bodys);
            String host = "https://api.weixin.qq.com/wxa/business/getuserphonenumber";
            HttpResponse response = HttpUtils.doPost(host, "", "POST", headers, querys, body);
            return EntityUtils.toString(response.getEntity());
        }
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/HttpUtils.java
New file
@@ -0,0 +1,337 @@
package com.ruoyi.auction.util;
import com.ruoyi.common.core.utils.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @ClassName HttpUtils
 * @Description TODO
 * @Author zhanglin
 * @Date 2020/2/11 10:30
 * @Version 1.0
 **/
public class HttpUtils {
    public static void main(String[] args) {
    }
    /**
     * get
     *
     * @param host
     * @return
     * @throws Exception
     */
    public static HttpResponse doGet(String host)throws Exception {
        return doGet(host, "", "GET", null, null);
    }
    /**
     * get
     *
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @return
     * @throws Exception
     */
    public static HttpResponse doGet(String host, String path, String method, Map<String, String> headers, Map<String, String> querys)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpGet request = new HttpGet(buildUrl(host, path, querys));
        if(null != headers) {
            for (Map.Entry<String, String> e : headers.entrySet()) {
                request.addHeader(e.getKey(), e.getValue());
            }
        }
        return httpClient.execute(request);
    }
    /**
     * post form
     *
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @param bodys
     * @return
     * @throws Exception
     */
    public static HttpResponse doPost(String host, String path, String method,
                                      Map<String, String> headers,
                                      Map<String, String> querys,
                                      Map<String, String> bodys)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpPost request = new HttpPost(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (bodys != null) {
            List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
            for (String key : bodys.keySet()) {
                nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
            }
            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
            formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
            request.setEntity(formEntity);
        }
        return httpClient.execute(request);
    }
    /**
     * Post String
     *
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @param body
     * @return
     * @throws Exception
     */
    public static HttpResponse doPost(String host, String path, String method,
                                      Map<String, String> headers,
                                      Map<String, String> querys,
                                      String body)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpPost request = new HttpPost(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (StringUtils.isNotBlank(body)) {
            request.setEntity(new StringEntity(body, "utf-8"));
        }
        return httpClient.execute(request);
    }
    /**
     * Post stream
     *
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @param body
     * @return
     * @throws Exception
     */
    public static HttpResponse doPost(String host, String path, String method,
                                      Map<String, String> headers,
                                      Map<String, String> querys,
                                      byte[] body)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpPost request = new HttpPost(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (body != null) {
            request.setEntity(new ByteArrayEntity(body));
        }
        return httpClient.execute(request);
    }
    /**
     * Put String
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @param body
     * @return
     * @throws Exception
     */
    public static HttpResponse doPut(String host, String path, String method,
                                     Map<String, String> headers,
                                     Map<String, String> querys,
                                     String body)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpPut request = new HttpPut(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (StringUtils.isNotBlank(body)) {
            request.setEntity(new StringEntity(body, "utf-8"));
        }
        return httpClient.execute(request);
    }
    /**
     * Put stream
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @param body
     * @return
     * @throws Exception
     */
    public static HttpResponse doPut(String host, String path, String method,
                                     Map<String, String> headers,
                                     Map<String, String> querys,
                                     byte[] body)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpPut request = new HttpPut(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (body != null) {
            request.setEntity(new ByteArrayEntity(body));
        }
        return httpClient.execute(request);
    }
    /**
     * Delete
     *
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @return
     * @throws Exception
     */
    public static HttpResponse doDelete(String host, String path, String method,
                                        Map<String, String> headers,
                                        Map<String, String> querys)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        return httpClient.execute(request);
    }
    private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
        StringBuilder sbUrl = new StringBuilder();
        sbUrl.append(host);
        if (!StringUtils.isBlank(path)) {
            sbUrl.append(path);
        }
        if (null != querys) {
            StringBuilder sbQuery = new StringBuilder();
            for (Map.Entry<String, String> query : querys.entrySet()) {
                if (0 < sbQuery.length()) {
                    sbQuery.append("&");
                }
                if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
                    sbQuery.append(query.getValue());
                }
                if (!StringUtils.isBlank(query.getKey())) {
                    sbQuery.append(query.getKey());
                    if (!StringUtils.isBlank(query.getValue())) {
                        sbQuery.append("=");
                        sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
                    }
                }
            }
            if (0 < sbQuery.length()) {
                sbUrl.append("?").append(sbQuery);
            }
        }
        return sbUrl.toString();
    }
    private static HttpClient wrapClient(String host) {
        HttpClient httpClient = new DefaultHttpClient();
        if (host.startsWith("https://")) {
            sslClient(httpClient);
        }
        return httpClient;
    }
    private static void sslClient(HttpClient httpClient) {
        try {
            SSLContext ctx = SSLContext.getInstance("TLS");
            X509TrustManager tm = new X509TrustManager() {
                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                @Override
                public void checkClientTrusted(X509Certificate[] xcs, String str) {
                }
                @Override
                public void checkServerTrusted(X509Certificate[] xcs, String str) {
                }
            };
            ctx.init(null, new TrustManager[] { tm }, null);
            SSLSocketFactory ssf = new SSLSocketFactory(ctx);
            ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            ClientConnectionManager ccm = httpClient.getConnectionManager();
            SchemeRegistry registry = ccm.getSchemeRegistry();
            registry.register(new Scheme("https", 443, ssf));
        } catch (KeyManagementException ex) {
            throw new RuntimeException(ex);
        } catch (NoSuchAlgorithmException ex) {
            throw new RuntimeException(ex);
        }
    }
}
ruoyi-modules/ruoyi-member/pom.xml
@@ -114,6 +114,12 @@
    </dependency>
    <dependency>
      <groupId>com.github.binarywang</groupId>
      <artifactId>weixin-java-miniapp</artifactId>
      <version>4.5.0</version>
    </dependency>
    <dependency>
      <groupId>com.alipay.sdk</groupId>
      <artifactId>alipay-sdk-java</artifactId>
      <version>3.4.27.ALL</version>
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/AlipayAppController.java
@@ -6,7 +6,8 @@
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.member.VO.AlipayUser;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -45,11 +46,12 @@
    @RequestMapping("/getalipayInfo")
    @ApiOperation(value = "获取支付宝授权码")
    public R<AlipayUser> getInfo(String auth_code) throws AlipayApiException {
    public R<AppMiniLoginVO> getInfo(AppMiniLoginDTO appMiniLoginDto)  {
        //使用支付宝小程序的固定方法获取auth_code
        if (auth_code == null || auth_code.length() == 0) {
        if (appMiniLoginDto.getAuth_code()== null || appMiniLoginDto.getAuth_code().length() == 0) {
            return R.fail("请求参数auth_code不能为空");
        } else {
            AppMiniLoginVO user=new AppMiniLoginVO();
            //String serverUrl, String appId, String privateKey, String format,String charset, String alipayPublicKey, String signType
            //实例化客户端 参数:正式环境URL,Appid,商户私钥 PKCS8格式,字符编码格式,字符格式,支付宝公钥,签名方式
            AlipayClient alipayClient = new DefaultAlipayClient(ALIPAY_BORDER_PROD,APP_ID_PROD, APP_PRIVATE_KEY, "json", "GBK", ALIPAY_PUBLIC_KEY, "RSA2");
@@ -57,17 +59,22 @@
            // 值为authorization_code时,代表用code换取
            request.setGrantType("authorization_code");
            //授权码,用户对应用授权后得到的
            request.setCode(auth_code);
            request.setCode(appMiniLoginDto.getAuth_code());
            //这里使用execute方法
            AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
            AlipaySystemOauthTokenResponse response = null;
            try {
                response = alipayClient.execute(request);
            } catch (AlipayApiException e) {
                throw new RuntimeException(e);
            }
            //刷新令牌,上次换取访问令牌时得到。见出参的refresh_token字段
            request.setRefreshToken(response.getAccessToken());
            //返回成功时 就将唯一标识返回
            if (response.isSuccess()) {
                System.out.println("调用成功");
                //我这里只返回了一个字段给前端用
                AlipayUser user=new AlipayUser();
                user.setUserid(response.getUserId());
               String user1= response.getUserId();
                user.setZfbuserid(user1);
                return R.ok(user);
            } else {
                return R.fail("调用失败");
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberAddressController.java
@@ -71,14 +71,14 @@
    @PostMapping("/getMemberAddressList")
    @ResponseBody
    @ApiOperation(value = "获取用户地址")
    public R<PageDTO<MemberAddress>> getMemberAddressList(MemberAddressDTO memberAddressDTO) {
    public R<PageDTO<MemberAddress>> getMemberAddressList(@RequestBody MemberAddressDTO memberAddressDTO) {
        return R.ok(iMemberAddressService.getMemberAddressList(memberAddressDTO));
    }
    @PostMapping("/addMemberAddress")
    @ResponseBody
    @ApiOperation(value = "用户添加或者修改地址")
    public R<T> addMemberAddress(MemberAddressDTO memberAddressDTO) {
    public R<T> addMemberAddress(@RequestBody MemberAddressDTO memberAddressDTO) {
        iMemberAddressService.addMemberAddress(memberAddressDTO);
        return R.ok();
    }
@@ -86,7 +86,7 @@
    @PostMapping("/delMemberAddress")
    @ResponseBody
    @ApiOperation(value = "用户删除地址")
    public R<T> delMemberAddress(MemberAddressDTO memberAddressDTO) {
    public R<T> delMemberAddress(@RequestBody MemberAddressDTO memberAddressDTO) {
        iMemberAddressService.delMemberAddress(memberAddressDTO);
        return R.ok();
    }
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberController.java
@@ -5,15 +5,15 @@
import com.ruoyi.common.security.annotation.InnerAuth;
import com.ruoyi.member.dto.MemberDTO;
import com.ruoyi.member.service.IMemberService;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import util.HuaWeiOBSUtil;
@@ -41,17 +41,27 @@
    }
    @RequestMapping("/loginThird")
    @RequestMapping("/miniLogin")
    @ResponseBody
    @ApiOperation(value = "第三方登陸和註冊")
    public R<Member> loginThird(MemberDTO memberDTO) {
        return R.ok(iMemberService.loginThird(memberDTO));
    @ApiOperation(value = "第三方登陸")
    public R<AppMiniLoginVO> loginThird(@RequestBody AppMiniLoginDTO appMiniLoginDto) {
        return R.ok(iMemberService.loginThird(appMiniLoginDto));
    }
    @PostMapping(value = "/miniRegister")
    @ApiOperation(value = "小程序注册")
    public R<AppMiniLoginVO> miniRegister(@RequestBody AppMiniRegisterDTO appMiniRegisterDTO) {
        AppMiniLoginVO appUserRegisterVo = iMemberService.miniRegister(appMiniRegisterDTO);
        if(appUserRegisterVo ==null){
            return R.fail("注册失败!");
        }
        return R.ok(appUserRegisterVo);
    }
    @RequestMapping("/getMembeid")
    @ResponseBody
    @ApiOperation(value = "获取用户信息")
    public R<Member> getMembeid(MemberDTO memberDTO) {
    public R<Member> getMembeid(@RequestBody MemberDTO memberDTO) {
        return R.ok(iMemberService.getMembeid(memberDTO));
    }
@@ -75,7 +85,7 @@
    @RequestMapping("/updateMembeid")
    @ResponseBody
    @ApiOperation(value = "修改用户信息")
    public R<T> updateMembeid(MemberDTO memberDTO) {
    public R<T> updateMembeid(@RequestBody MemberDTO memberDTO) {
        iMemberService.updateMembeid(memberDTO);
        return R.ok();
    }
@@ -83,7 +93,7 @@
    @RequestMapping("/authentificationMembe")
    @ResponseBody
    @ApiOperation(value = "用户认证")
    public  R<T> authentificationMembe(MemberDTO memberDTO) {
    public  R<T> authentificationMembe(@RequestBody MemberDTO memberDTO) {
        iMemberService.authentificationMembe(memberDTO);
        return R.ok();
    }
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberPointsController.java
@@ -8,6 +8,8 @@
import com.ruoyi.member.service.IMemberPointsService;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@@ -28,7 +30,7 @@
    @RequestMapping("/getMemberPoints")
    @ResponseBody
    @ApiOperation(value = "获取用户积分")
    public R<PageDTO<MemberPoints>> getMemberPoints(MemberDTO memberDTO) {
    public R<PageDTO<MemberPoints>> getMemberPoints(@RequestBody MemberDTO memberDTO) {
        return R.ok(iMemberPointsService.getMemberPoints(memberDTO));
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/WeiXinAppController.java
@@ -1,3 +1,4 @@
/*
package com.ruoyi.member.controller;
import java.io.BufferedReader;
@@ -14,39 +15,50 @@
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.sign.Base64;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.member.util.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONObject;
import net.sf.json.JSON;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
*/
/**
 * 微信授权方面
 *
 * @author tuzx
 * @date 2018年8月9日
 * @version 1.0
 */
 *//*
@Controller
@RequestMapping("/weixin")
public class WeiXinAppController {
    private static String appid = "wx0e4769839d84fde0";
    private static String appSecret = "ede69db0303ddde49b5db95f186918ec";
    @Resource
    private WxMaService wxMaService;
    @RequestMapping("/getAddress")
    @ResponseBody
@@ -67,18 +79,36 @@
    }
    @ResponseBody
    @RequestMapping("/getOpenId")
    @ApiOperation(value = "获取微信的OpenId")
    public R<Map<String, String>> getOpenId(String code) {
    @PostMapping("/miniLogin")
    @ApiOperation("小程序登录")
    public R<AppMiniLoginVO> getMemberByCode(@RequestBody AppMiniLoginDTO appMiniLoginDto)
    {
        AppMiniLoginVO appMiniLoginVo = new AppMiniLoginVO();
        WxMaJscode2SessionResult session = null;
        String unionid;
        String openid;
        String sessionKey = null;
        //获取session
        try {
            String openID = JsapiTicketUtil.getOpenId(code);
            Map<String,String> data=new HashMap<>();
            data.put("openID",openID);
            return R.ok(data);
            session = wxMaService.getUserService().getSessionInfo(appMiniLoginDto.getCode());
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return R.fail("获取异常");
        if (session != null && StringUtils.isNotBlank(session.getOpenid())) {
            unionid = session.getUnionid();
            openid = session.getOpenid();
            sessionKey = session.getSessionKey();
            appMiniLoginVo.setMiniOpenid(openid);
            appMiniLoginVo.setWxUnionid(unionid);
            appMiniLoginVo.setSessionKey(sessionKey);
        }
        if(appMiniLoginVo ==null){
            return R.fail("登录失败!");
        }
        return R.ok(appMiniLoginVo);
    }
    @ResponseBody
@@ -150,13 +180,15 @@
        return R.fail("获取异常");
    }
    /**
    */
/**
     * 获取微信用户信息
     * 
     * @param token
     * @param openid
     * @return
     */
     *//*
    @ResponseBody
    @RequestMapping("/getWXinfo")
    @ApiOperation(value = "获取微信用户信息")
@@ -184,11 +216,14 @@
    }
    
    
    /**
    */
/**
     * 小程序使用jscode获取openid
     * @param jscode
     * @return
     *//*
*/
/*
    public String code2Session(String jscode){
        String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appid + "&secret=" + appSecret
                + "&js_code=" + jscode + "&grant_type=authorization_code";
@@ -208,16 +243,19 @@
            return jsonObject.getString("errmsg");
        }
        return null;
    }*/
    }*//*
    /***
    */
/***
     * 模拟get请求
     * 
     * @param url
     * @param charset
     * @param timeout
     * @return
     */
     *//*
    public static String sendGet(String url, String charset, int timeout) {
        String result = "";
        try {
@@ -309,3 +347,4 @@
        return null;
    }
}
*/
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java
@@ -1,8 +1,14 @@
package com.ruoyi.member.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.member.dto.MemberDTO;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Set;
@@ -16,7 +22,7 @@
 */
public interface IMemberService extends IService<Member> {
    Member loginThird(MemberDTO memberDTO);
    AppMiniLoginVO loginThird(AppMiniLoginDTO appMiniLoginDto);
    Member getMembeid(MemberDTO memberDTO);
@@ -25,4 +31,6 @@
    void authentificationMembe(MemberDTO memberDTO);
    List<Member> getMemberListByIds(Set<Long> memberIdList);
    AppMiniLoginVO miniRegister(@RequestBody AppMiniRegisterDTO appMiniRegisterDTO);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
@@ -1,27 +1,45 @@
package com.ruoyi.member.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.enums.GenderEnum;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.member.dto.MemberDTO;
import com.ruoyi.member.mapper.MemberMapper;
import com.ruoyi.member.service.IMemberService;
import com.ruoyi.member.util.HttpUtils;
import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.constants.SecurityConstant;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.Member;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.concurrent.TimeUnit;
import javax.annotation.Resource;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
@@ -49,52 +67,137 @@
    public static String query_url = "http://op.juhe.cn/idcard/query?key=" + APPKEY;
    //微信
    private static final String ACCESS_TOKEN_HOST = "https://api.weixin.qq.com/cgi-bin/token";
    private static final String WX_APPID = "wxb7f0ea286fc4e535";
    private static final String WX_SECRET = "852a2512a6ab559cafc68bae5d4160ac";
    //支付寶
    /**
     * Alipay客户端
     */
    private AlipayClient alipayClient;
    /**支付宝网关*/
    /**
     * 沙箱的
     */
    private static final String ALIPAY_BORDER_DEV = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
    /**
     * 个人用户的
     */
    private static final String ALIPAY_BORDER_PROD = "https://openapi.alipay.com/gateway.do";
    /**
     * appID
     **/
    private static final String APP_ID_PROD = "2021003196653501";
    /**
     * 私钥
     */
    private static final String APP_PRIVATE_KEY = "";
    /**
     * 支付宝公钥
     */
    private static final String ALIPAY_PUBLIC_KEY = "";
    @Resource
    private  IMemberService iMemberService;
    @Resource
    private WxMaService wxMaService;
    @Resource
    private RemoteUserService sysUserService;
    @Resource
    private RedisService redisService;
    @Override
    public Member loginThird(MemberDTO memberDTO) {
        try {
            if (memberDTO.getType() == 1) {
                LambdaQueryWrapper<Member> wrapper= Wrappers.lambdaQuery();
                wrapper.eq(Member::getZfbOpenid,memberDTO.getOpenid());
                Member member=iMemberService.getOne(wrapper);
                if (member==null){
                    Member m=new Member();
                    m.setZfbOpenid(memberDTO.getOpenid());
                    m.setNickname("未知");
                    m.setLevel(0);
                    m.setAvatar("");
                    iMemberService.save(m);
                    return m;
                }else {
    public AppMiniLoginVO loginThird(AppMiniLoginDTO appMiniLoginDto) {
        AppMiniLoginVO appMiniLoginVo = new AppMiniLoginVO();
                    return member;
        if(appMiniLoginDto.getType()==1){
            if (appMiniLoginDto.getAuth_code()== null || appMiniLoginDto.getAuth_code().length() == 0) {
            } else {
                AppMiniLoginVO user=new AppMiniLoginVO();
                //String serverUrl, String appId, String privateKey, String format,String charset, String alipayPublicKey, String signType
                //实例化客户端 参数:正式环境URL,Appid,商户私钥 PKCS8格式,字符编码格式,字符格式,支付宝公钥,签名方式
                AlipayClient alipayClient = new DefaultAlipayClient(ALIPAY_BORDER_PROD,APP_ID_PROD, APP_PRIVATE_KEY, "json", "GBK", ALIPAY_PUBLIC_KEY, "RSA2");
                AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
                // 值为authorization_code时,代表用code换取
                request.setGrantType("authorization_code");
                //授权码,用户对应用授权后得到的
                request.setCode(appMiniLoginDto.getAuth_code());
                //这里使用execute方法
                AlipaySystemOauthTokenResponse response = null;
                try {
                    response = alipayClient.execute(request);
                } catch (AlipayApiException e) {
                    throw new RuntimeException(e);
                }
                //刷新令牌,上次换取访问令牌时得到。见出参的refresh_token字段
                request.setRefreshToken(response.getAccessToken());
                //返回成功时 就将唯一标识返回
                if (response.isSuccess()) {
                    System.out.println("调用成功");
                    //我这里只返回了一个字段给前端用
                    String user1= response.getUserId();
            }
            if (memberDTO.getType() == 2) {
                LambdaQueryWrapper<Member> wrapper= Wrappers.lambdaQuery();
                wrapper.eq(Member::getWxOpenid,memberDTO.getOpenid());
                Member member=iMemberService.getOne(wrapper);
                if (member==null){
                    Member m=new Member();
                    m.setZfbOpenid(memberDTO.getOpenid());
                    m.setNickname("未知");
                    m.setLevel(0);
                    m.setAvatar("");
                    iMemberService.save(m);
                    return m;
                }else {
                    return member;
                    LambdaQueryWrapper<Member> wrapper= Wrappers.lambdaQuery();
                    wrapper.eq(Member::getZfbOpenid,response.getUserId());
                    Member member=iMemberService.getOne(wrapper);
                    SysUser sysUser = null;
                    if (member != null) {
                        sysUser = sysUserService.getSysUser(member.getUserId()).getData();
                    }
                    appMiniLoginVo.setZfbuserid(response.getUserId());
                    appMiniLoginVo.setSysUser(sysUser);
                    appMiniLoginVo.setMemberid(member.getId());
                    redisService.setCacheObject(SecurityConstant.SESSION_KEY + response.getUserId(), null, 1L, TimeUnit.DAYS);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }else{
            WxMaJscode2SessionResult session = null;
            String unionid;
            String openid;
            String sessionKey = null;
            //获取session
            try {
                session = wxMaService.getUserService().getSessionInfo(appMiniLoginDto.getCode());
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
            if (session != null && StringUtils.isNotBlank(session.getOpenid())) {
                unionid = session.getUnionid();
                openid = session.getOpenid();
                sessionKey = session.getSessionKey();
                //获取用户
                LambdaQueryWrapper<Member> wrapper= Wrappers.lambdaQuery();
                wrapper.eq(Member::getZfbOpenid,session.getOpenid());
                Member member=iMemberService.getOne(wrapper);
                SysUser sysUser = null;
                if (member != null) {
                    sysUser = sysUserService.getSysUser(member.getUserId()).getData();
                }
                appMiniLoginVo.setMiniOpenid(openid);
                appMiniLoginVo.setWxUnionid(unionid);
                appMiniLoginVo.setMemberid(member.getId());
                appMiniLoginVo.setSysUser(sysUser);
                appMiniLoginVo.setSessionKey(sessionKey);
                redisService.setCacheObject(SecurityConstant.SESSION_KEY + openid, sessionKey, 1L, TimeUnit.DAYS);
            }
        }
        return null;
        return appMiniLoginVo;
    }
    @Override
    public Member getMembeid(MemberDTO memberDTO) {
@@ -194,6 +297,119 @@
    public List<Member> getMemberListByIds(Set<Long> memberIdList) {
        return this.listByIds(memberIdList);
    }
    @Override
    public AppMiniLoginVO miniRegister(AppMiniRegisterDTO appMiniRegisterDTO) {
            AppMiniLoginVO appMiniLoginVO =new AppMiniLoginVO();
           SysUser sysUser;
            if (appMiniRegisterDTO.getType() == 1) {
                LambdaQueryWrapper<Member> wrapper = Wrappers.lambdaQuery();
                wrapper.eq(Member::getZfbOpenid, appMiniRegisterDTO.getZfbuserid());
                Member member = iMemberService.getOne(wrapper);
                //获取用户为空则新建
                if (member == null) {
                    //创建新用户
                    String memberId = IdUtils.simpleUUID();
                    sysUser = new SysUser();
                    sysUser.setUserName(memberId);
                    sysUser.setUserType("03");
                    sysUser.setNickName("白金用户");
                    sysUser.setPhonenumber(appMiniRegisterDTO.getMiniOpenid());
                    sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
                    String password = "123456";
                    sysUser.setPassword(SecurityUtils.encryptPassword(password));
                    sysUser = sysUserService.registerUser(sysUser).getData();
                    member = new Member();
                    member.setUserId(sysUser.getUserId());
                    member.setDelFlag(0);
                    member.setRealName("白酒用户");
                    member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
                    member.setWxUnionid(appMiniRegisterDTO.getWxUnionid());
                    member.setMiniOpenid(appMiniRegisterDTO.getMiniOpenid());
                    iMemberService.save(member);
                    appMiniLoginVO.setMiniOpenid(member.getMiniOpenid());
                    appMiniLoginVO.setWxUnionid(member.getWxUnionid());
                    appMiniLoginVO.setSysUser(sysUser);
                    appMiniLoginVO.setMemberid(member.getId());
                } else {
                    sysUser = sysUserService.getSysUser(member.getUserId()).getData();
                    appMiniLoginVO.setZfbuserid( appMiniRegisterDTO.getZfbuserid());
                    appMiniLoginVO.setSysUser(sysUser);
                    appMiniLoginVO.setMemberid(member.getId());
                }
            }
            if (appMiniRegisterDTO.getType() == 2) {
                    LambdaQueryWrapper<Member> wrapper = Wrappers.lambdaQuery();
                    wrapper.eq(Member::getMiniOpenid, appMiniRegisterDTO.getMiniOpenid());
                    Member member = iMemberService.getOne(wrapper);
                    //获取用户为空则新建
                    if (member == null) {
                        //创建新用户
                        String memberId = IdUtils.simpleUUID();
                        sysUser = new SysUser();
                        sysUser.setUserName(memberId);
                        sysUser.setUserType("03");
                        sysUser.setNickName("白金用户");
                        sysUser.setPhonenumber(appMiniRegisterDTO.getMiniOpenid());
                        sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
                        String password = "123456";
                        sysUser.setPassword(SecurityUtils.encryptPassword(password));
                        sysUser = sysUserService.registerUser(sysUser).getData();
                        member = new Member();
                        member.setUserId(sysUser.getUserId());
                        member.setDelFlag(0);
                        member.setRealName("白酒用户");
                        member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
                        member.setWxUnionid(appMiniRegisterDTO.getWxUnionid());
                        member.setMiniOpenid(appMiniRegisterDTO.getMiniOpenid());
                        iMemberService.save(member);
                        appMiniLoginVO.setMiniOpenid(member.getMiniOpenid());
                        appMiniLoginVO.setWxUnionid(member.getWxUnionid());
                        appMiniLoginVO.setSysUser(sysUser);
                        appMiniLoginVO.setMemberid(member.getId());
                    } else {
                        sysUser = sysUserService.getSysUser(member.getUserId()).getData();
                        appMiniLoginVO.setMiniOpenid(member.getMiniOpenid());
                        appMiniLoginVO.setWxUnionid(member.getWxUnionid());
                        appMiniLoginVO.setSysUser(sysUser);
                        appMiniLoginVO.setMemberid(member.getId());
                    }
            }
             return appMiniLoginVO;
    }
    public static String getAccessTokenByWX() throws Exception {
        String host = ACCESS_TOKEN_HOST + "?appid=" + WX_APPID + "&secret=" + WX_SECRET + "&grant_type=client_credential";
        Map<String, String> headers = new HashMap<>(8);
        HttpResponse response = HttpUtils.doGet(host, "", "GET", headers, null);
        return EntityUtils.toString(response.getEntity());
    }
    public static String getMobileByWX(String accessToken, String code) throws Exception {
        Map<String, String> headers = new HashMap<>(16);
        headers.put("Content-Type", "application/json");
        headers.put("Accept", "application/json");
        Map<String, String> querys = new HashMap<>(16);
        Map<String, String> bodys = new HashMap<>(16);
        querys.put("access_token", accessToken);
        bodys.put("code", code);
        String body = JSONObject.toJSONString(bodys);
        String host = "https://api.weixin.qq.com/wxa/business/getuserphonenumber";
        HttpResponse response = HttpUtils.doPost(host, "", "POST", headers, querys, body);
        return EntityUtils.toString(response.getEntity());
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/util/HttpUtils.java
New file
@@ -0,0 +1,337 @@
package com.ruoyi.member.util;
import com.ruoyi.common.core.utils.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @ClassName HttpUtils
 * @Description TODO
 * @Author zhanglin
 * @Date 2020/2/11 10:30
 * @Version 1.0
 **/
public class HttpUtils {
    public static void main(String[] args) {
    }
    /**
     * get
     *
     * @param host
     * @return
     * @throws Exception
     */
    public static HttpResponse doGet(String host)throws Exception {
        return doGet(host, "", "GET", null, null);
    }
    /**
     * get
     *
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @return
     * @throws Exception
     */
    public static HttpResponse doGet(String host, String path, String method, Map<String, String> headers, Map<String, String> querys)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpGet request = new HttpGet(buildUrl(host, path, querys));
        if(null != headers) {
            for (Map.Entry<String, String> e : headers.entrySet()) {
                request.addHeader(e.getKey(), e.getValue());
            }
        }
        return httpClient.execute(request);
    }
    /**
     * post form
     *
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @param bodys
     * @return
     * @throws Exception
     */
    public static HttpResponse doPost(String host, String path, String method,
                                      Map<String, String> headers,
                                      Map<String, String> querys,
                                      Map<String, String> bodys)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpPost request = new HttpPost(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (bodys != null) {
            List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
            for (String key : bodys.keySet()) {
                nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
            }
            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
            formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
            request.setEntity(formEntity);
        }
        return httpClient.execute(request);
    }
    /**
     * Post String
     *
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @param body
     * @return
     * @throws Exception
     */
    public static HttpResponse doPost(String host, String path, String method,
                                      Map<String, String> headers,
                                      Map<String, String> querys,
                                      String body)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpPost request = new HttpPost(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (StringUtils.isNotBlank(body)) {
            request.setEntity(new StringEntity(body, "utf-8"));
        }
        return httpClient.execute(request);
    }
    /**
     * Post stream
     *
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @param body
     * @return
     * @throws Exception
     */
    public static HttpResponse doPost(String host, String path, String method,
                                      Map<String, String> headers,
                                      Map<String, String> querys,
                                      byte[] body)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpPost request = new HttpPost(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (body != null) {
            request.setEntity(new ByteArrayEntity(body));
        }
        return httpClient.execute(request);
    }
    /**
     * Put String
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @param body
     * @return
     * @throws Exception
     */
    public static HttpResponse doPut(String host, String path, String method,
                                     Map<String, String> headers,
                                     Map<String, String> querys,
                                     String body)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpPut request = new HttpPut(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (StringUtils.isNotBlank(body)) {
            request.setEntity(new StringEntity(body, "utf-8"));
        }
        return httpClient.execute(request);
    }
    /**
     * Put stream
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @param body
     * @return
     * @throws Exception
     */
    public static HttpResponse doPut(String host, String path, String method,
                                     Map<String, String> headers,
                                     Map<String, String> querys,
                                     byte[] body)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpPut request = new HttpPut(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (body != null) {
            request.setEntity(new ByteArrayEntity(body));
        }
        return httpClient.execute(request);
    }
    /**
     * Delete
     *
     * @param host
     * @param path
     * @param method
     * @param headers
     * @param querys
     * @return
     * @throws Exception
     */
    public static HttpResponse doDelete(String host, String path, String method,
                                        Map<String, String> headers,
                                        Map<String, String> querys)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        return httpClient.execute(request);
    }
    private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
        StringBuilder sbUrl = new StringBuilder();
        sbUrl.append(host);
        if (!StringUtils.isBlank(path)) {
            sbUrl.append(path);
        }
        if (null != querys) {
            StringBuilder sbQuery = new StringBuilder();
            for (Map.Entry<String, String> query : querys.entrySet()) {
                if (0 < sbQuery.length()) {
                    sbQuery.append("&");
                }
                if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
                    sbQuery.append(query.getValue());
                }
                if (!StringUtils.isBlank(query.getKey())) {
                    sbQuery.append(query.getKey());
                    if (!StringUtils.isBlank(query.getValue())) {
                        sbQuery.append("=");
                        sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
                    }
                }
            }
            if (0 < sbQuery.length()) {
                sbUrl.append("?").append(sbQuery);
            }
        }
        return sbUrl.toString();
    }
    private static HttpClient wrapClient(String host) {
        HttpClient httpClient = new DefaultHttpClient();
        if (host.startsWith("https://")) {
            sslClient(httpClient);
        }
        return httpClient;
    }
    private static void sslClient(HttpClient httpClient) {
        try {
            SSLContext ctx = SSLContext.getInstance("TLS");
            X509TrustManager tm = new X509TrustManager() {
                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                @Override
                public void checkClientTrusted(X509Certificate[] xcs, String str) {
                }
                @Override
                public void checkServerTrusted(X509Certificate[] xcs, String str) {
                }
            };
            ctx.init(null, new TrustManager[] { tm }, null);
            SSLSocketFactory ssf = new SSLSocketFactory(ctx);
            ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            ClientConnectionManager ccm = httpClient.getConnectionManager();
            SchemeRegistry registry = ccm.getSchemeRegistry();
            registry.register(new Scheme("https", 443, ssf));
        } catch (KeyManagementException ex) {
            throw new RuntimeException(ex);
        } catch (NoSuchAlgorithmException ex) {
            throw new RuntimeException(ex);
        }
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceController.java
@@ -8,11 +8,7 @@
import com.ruoyi.order.service.IMemberInvoiceService;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@@ -34,7 +30,7 @@
    @PostMapping("/saveMemberInvoice")
    @ResponseBody
    @ApiOperation(value = "用户添加发票")
    public R<T> saveMemberInvoice(MemberInvoiceDTO memberInvoiceDTO) {
    public R<T> saveMemberInvoice(@RequestBody MemberInvoiceDTO memberInvoiceDTO) {
        iMemberInvoiceService.saveMemberInvoice(memberInvoiceDTO);
        return R.ok();
    }
@@ -42,7 +38,7 @@
    @PostMapping("/getMemberInvoiceList")
    @ResponseBody
    @ApiOperation(value = "获取用户开票历史")
    public R<PageDTO<MemberInvoice>> getMemberInvoiceList(MemberInvoiceDTO memberInvoiceDTO) {
    public R<PageDTO<MemberInvoice>> getMemberInvoiceList(@RequestBody MemberInvoiceDTO memberInvoiceDTO) {
        return R.ok(iMemberInvoiceService.getMemberInvoiceList(memberInvoiceDTO));
    }
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceOrderController.java
@@ -10,11 +10,7 @@
import com.ruoyi.order.dto.MemberInvoiceRiseDTO;
import com.ruoyi.order.service.IMemberInvoiceOrderService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@@ -36,7 +32,7 @@
    @PostMapping("/getMemberInvoiceInfo")
    @ResponseBody
    @ApiOperation(value = "获取用户开票历史详情")
    public R<PageDTO<MemberInvoiceOrder>> getMemberInvoiceInfo(MemberInvoiceDTO memberInvoiceDTO) {
    public R<PageDTO<MemberInvoiceOrder>> getMemberInvoiceInfo(@RequestBody MemberInvoiceDTO memberInvoiceDTO) {
        return R.ok(iMemberInvoiceOrderService.getMemberInvoiceInfo(memberInvoiceDTO));
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceRiseController.java
@@ -11,10 +11,7 @@
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
 * <p>
@@ -37,14 +34,14 @@
    @PostMapping("/getMemberInvoiceRiseList")
    @ResponseBody
    @ApiOperation(value = "获取用户发票抬头")
    public R<PageDTO<MemberInvoiceRise>> getMemberInvoiceRiseList(MemberInvoiceRiseDTO memberInvoiceRiseDTO) {
    public R<PageDTO<MemberInvoiceRise>> getMemberInvoiceRiseList(@RequestBody MemberInvoiceRiseDTO memberInvoiceRiseDTO) {
        return R.ok(iMemberInvoiceRiseService.getMemberInvoiceRiseList(memberInvoiceRiseDTO));
    }
    @PostMapping("/saveMemberInvoiceRise")
    @ResponseBody
    @ApiOperation(value = "添加编辑用户发票抬头")
    public R<T> saveMemberInvoiceRise(MemberInvoiceRiseDTO memberInvoiceRiseDTO) {
    public R<T> saveMemberInvoiceRise(@RequestBody MemberInvoiceRiseDTO memberInvoiceRiseDTO) {
        iMemberInvoiceRiseService.saveMemberInvoiceRise(memberInvoiceRiseDTO);
        return R.ok();
    }
@@ -52,7 +49,7 @@
    @PostMapping("/saveIsDefault")
    @ResponseBody
    @ApiOperation(value = "设置默认")
    public R<T> saveIsDefault(MemberInvoiceRiseDTO memberInvoiceRiseDTO) {
    public R<T> saveIsDefault(@RequestBody MemberInvoiceRiseDTO memberInvoiceRiseDTO) {
        iMemberInvoiceRiseService.saveIsDefault(memberInvoiceRiseDTO);
        return R.ok();
    }
@@ -60,7 +57,7 @@
    @PostMapping("/delMemberInvoiceRise")
    @ResponseBody
    @ApiOperation(value = "删除用户发票抬头")
    public R<T> delMemberInvoiceRise(MemberInvoiceRiseDTO memberInvoiceRiseDTO) {
    public R<T> delMemberInvoiceRise(@RequestBody MemberInvoiceRiseDTO memberInvoiceRiseDTO) {
        iMemberInvoiceRiseService.delMemberInvoiceRise(memberInvoiceRiseDTO);
        return R.ok();
    }
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/CouponMemberController.java
@@ -7,11 +7,7 @@
import com.ruoyi.promotion.domain.pojo.CouponMember;
import com.ruoyi.promotion.service.ICouponMemberService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@@ -34,7 +30,7 @@
    @PostMapping("/getCouponMemberList")
    @ResponseBody
    @ApiOperation(value = "获取用户优惠卷")
    public R<PageDTO<CouponMember>> getCouponMemberList(CouponMemberDTO couponMemberDTO) {
    public R<PageDTO<CouponMember>> getCouponMemberList(@RequestBody CouponMemberDTO couponMemberDTO) {
        return R.ok(iCouponMemberService.getCouponMemberList(couponMemberDTO));
    }
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/PromotionWishListController.java
@@ -9,11 +9,7 @@
import com.ruoyi.promotion.service.IPromotionWishListService;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@@ -34,14 +30,14 @@
    @RequestMapping("/getPromotionWishList")
    @ResponseBody
    @ApiOperation(value = "获取心愿单列表")
    public R<PageDTO<PromotionWishList>> getPromotionWishList(PromotionWishListDTO promotionWishListDTO) {
    public R<PageDTO<PromotionWishList>> getPromotionWishList(@RequestBody PromotionWishListDTO promotionWishListDTO) {
        return R.ok(iPromotionWishListService.getPromotionWishList(promotionWishListDTO));
    }
    @RequestMapping("/savePromotionWishList")
    @ResponseBody
    @ApiOperation(value = "添加心愿单列表")
    public R<T> savePromotionWishList(PromotionWishListDTO promotionWishListDTO) {
    public R<T> savePromotionWishList(@RequestBody PromotionWishListDTO promotionWishListDTO) {
        iPromotionWishListService.savePromotionWishList(promotionWishListDTO);
        return R.ok();
    }
@@ -49,14 +45,14 @@
    @RequestMapping("/getPromotionWishOne")
    @ResponseBody
    @ApiOperation(value = "获取心愿单个")
    public R<PromotionWishList> getPromotionWishOne(PromotionWishListDTO promotionWishListDTO) {
    public R<PromotionWishList> getPromotionWishOne(@RequestBody PromotionWishListDTO promotionWishListDTO) {
        return R.ok(iPromotionWishListService.getPromotionWishOne(promotionWishListDTO));
    }
    @RequestMapping("/delPromotionWishOne")
    @ResponseBody
    @ApiOperation(value = "删除心愿单个")
    public R<T> delPromotionWishOne(PromotionWishListDTO promotionWishListDTO) {
    public R<T> delPromotionWishOne(@RequestBody PromotionWishListDTO promotionWishListDTO) {
        iPromotionWishListService.delPromotionWishOne(promotionWishListDTO);
        return R.ok();
    }