1
luodangjia
2024-05-12 533558ecfbb188f43cbb151e5245abff1b1aa818
1
4个文件已修改
3个文件已添加
236 ■■■■■ 已修改文件
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderConsultOneRequest.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/IosDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/HttpUtilIOS.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/IosPalUtils.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CounsellingInfoController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/RongCloudImServer.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderConsultOneRequest.java
@@ -5,12 +5,15 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
@ApiModel(value = "1v1咨询性格分析师下单-请求参数")
public class CreateOrderConsultOneRequest {
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    @NotBlank(message = "登录后再试")
    private Long userId;
    @ApiModelProperty(value = "心理测试结果ID")
rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java
@@ -13,7 +13,9 @@
import cn.stylefeng.guns.modular.business.service.IOrderMentalTestService;
import cn.stylefeng.guns.utils.GeneralUtil;
import cn.stylefeng.rest.ijpay.entity.AliPayBean;
import cn.stylefeng.rest.ijpay.entity.IosDto;
import cn.stylefeng.rest.ijpay.entity.request.AliAppPayRequest;
import cn.stylefeng.rest.ijpay.iosUtil.IosPalUtils;
import cn.stylefeng.rest.modular.order.service.MentalTestOrderBizService;
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
import cn.stylefeng.roses.kernel.rule.enums.OrderStatusFlagEnum;
@@ -162,6 +164,47 @@
    @ApiOperation(value = "ios支付")
    @PostMapping(value = "/ios")
    @ResponseBody
    public ResponseData ios(@RequestBody IosDto iosDto) {
//        Boolean success = IosPalUtils.isSuccess(iosDto.getTransactionReceipt());
//        if (!success){
//            return new ErrorResponseData("支付失败");
//        }
        String tradeNo = iosDto.getOrderNo();
        String totalAmount = iosDto.getMoney();
        // 获取订单号
        // 订单编号判断订单类型
        if (iosDto.getOrderNo().startsWith(OrderTypeEnum.MENTAL_TEST.getCode())) {
            // 心理测试订单
            orderMentalTestService.paySuccess(iosDto.getOrderNo(), tradeNo, totalAmount, PayTypeEnum.ALIPAY.getCode());
        } else if (iosDto.getOrderNo().startsWith(OrderTypeEnum.CONSULT_ONE.getCode())) {
            // 心理咨询1V1订单
            mentalTestOrderBizService.paySuccessOrderConsultOne(iosDto.getOrderNo(), tradeNo, totalAmount, PayTypeEnum.ALIPAY.getCode());
        } else if (iosDto.getOrderNo().startsWith(OrderTypeEnum.COURSE_ORDER.getCode())) {
            //课程订单
            OrderPayRequest orderPayRequest = new OrderPayRequest();
            orderPayRequest.setOrderNo(iosDto.getOrderNo());
            orderPayRequest.setTransactionNo(tradeNo);
            orderPayRequest.setPayType("2");
            orderPayRequest.setOrderType(1);
            courseOrderService.payCourseOrder(orderPayRequest);
        } else if (iosDto.getOrderNo().startsWith(OrderTypeEnum.COUNSELLING_ORDER.getCode())) {
            //咨询订单
            OrderPayRequest orderPayRequest = new OrderPayRequest();
            orderPayRequest.setOrderNo(iosDto.getOrderNo());
            orderPayRequest.setTransactionNo(tradeNo);
            orderPayRequest.setPayType("2");
            orderPayRequest.setOrderType(2);
            counsellingOrderService.payCounsellingOrder(orderPayRequest);
        }
        return new SuccessResponseData("支付成功");
    }
    @PostMapping(value = RuleConstants.NOT_LOGIN + "/freePay")
    @ResponseBody
    public String freePay(HttpServletRequest request) {
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/IosDto.java
New file
@@ -0,0 +1,9 @@
package cn.stylefeng.rest.ijpay.entity;
import lombok.Data;
@Data
public class IosDto {
    String orderNo;
    String money;
}
rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/HttpUtilIOS.java
New file
@@ -0,0 +1,76 @@
package cn.stylefeng.rest.ijpay.iosUtil;
import net.sf.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
public class HttpUtilIOS {
    /**
     * 向指定 URL 发送POST方法的请求
     *
     * @param url
     *            发送请求的 URL
     * @param param
     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return 所代表远程资源的响应结果
     */
    public static  synchronized String sendPosturl(String url, JSONObject param) {
        StringBuilder sb = new StringBuilder();
        PrintWriter out = null;
        BufferedReader in = null;
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            sb = new StringBuilder();
            while ((line = in.readLine()) != null)
            {
                sb.append(line);
            }
        } catch (Exception e) {
           // System.out.println("发送 POST 请求出现异常!"+e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        System.out.print(sb.toString());
        return sb.toString();
    }
}
rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/IosPalUtils.java
New file
@@ -0,0 +1,101 @@
package cn.stylefeng.rest.ijpay.iosUtil;
import net.sf.json.JSONObject;
/**
 * 苹果支付
 */
public  class IosPalUtils {
    /*public static String buyAppVerify(String receipt, String environment) {
        String url = null;
        if(environment.equals("0")) {
            url = "https://buy.itunes.apple.com/verifyReceipt";  // 生产环境
        }
        if (environment.equals("1")) {
            url = "https://sandbox.itunes.apple.com/verifyReceipt";  // 沙盒测试
        }
        try {
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },new java.security.SecureRandom());
            URL console = new URL(url);
            HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
            conn.setSSLSocketFactory(sc.getSocketFactory());
            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-type", "application/json");
            conn.setDoInput(true);
            conn.setDoOutput(true);
            BufferedOutputStream hurlBufOus = new BufferedOutputStream(
                    conn.getOutputStream());
            String newReceipt = receipt.replace(" ", "+");
            String str = String.format("{\"receipt-data\":\"" + newReceipt + "\"}");
            hurlBufOus.write(str.getBytes());
            hurlBufOus.flush();
            InputStream is = conn.getInputStream();
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(is));
            String line = null;
            StringBuffer sb = new StringBuffer();
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
            return sb.toString();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }*/
    /**
     * @param key  支付Id第三方返回的orderId
     */
    public  static Boolean isSuccess(String key) {
        try {
            System.out.println("!!!!!!!!!!!"+key+"!!!!!!!!!!!");
            Boolean ok=false;
            if (key!=null) {
                key = key.replace(" ", "+");
                System.out.println("!!!!!!!!!!!"+key+"!!!!!!!!!!!");
                JSONObject data = JSONObject.fromObject("{\"receipt-data\":\"" + key + "\"}");
                String score = HttpUtilIOS.sendPosturl("https://buy.itunes.apple.com/verifyReceipt", data);
                // 将String 转化为json
                JSONObject json = JSONObject.fromObject(score);
                System.out.print("!!!!!!!!!!!"+json+"!!!!!!!!!!!");
                if (!json.getString("status").equals("0")) {
                    JSONObject data1 = JSONObject.fromObject("{\"receipt-data\":\"" + key + "\"}");
                    String score1 = HttpUtilIOS.sendPosturl("https://sandbox.itunes.apple.com/verifyReceipt", data1);
                    // 将String 转化为json
                    JSONObject json1 = JSONObject.fromObject(score1);
                    if (json1.getString("status").equals("0")) {
                        String receipt = json1.getString("receipt");
                        JSONObject jsons = JSONObject.fromObject(receipt);
                        String m3 = jsons.getString("in_app");
                        String m4 = m3.replace("[", "");
                        String m5 = m4.replace("]", "");
                        if(m5!=null){
                            ok=true;
                        }
                    }
                }else {
                    if (json.getString("status").equals("0")) {
                        String receipt = json.getString("receipt");
                        JSONObject jsons = JSONObject.fromObject(receipt);
                        String m3 = jsons.getString("in_app");
                        String m4 = m3.replace("[", "");
                        String m5 = m4.replace("]", "");
                        if(m5!=null){
                            ok=true;
                        }
                    }
                }
            }
            return ok;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return  null;
    }
}
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CounsellingInfoController.java
@@ -814,7 +814,7 @@
    public ResponseData<CounsellingOrderResponseDTO> getCounsellingOrderInfoById(Long counsellingOrderId){
        CounsellingOrder counsellingOrder = this.counsellingOrderService.getById(counsellingOrderId);
        CounsellingOrderResponseDTO counsellingOrderResponseDTO = BeanUtil.copyProperties(counsellingOrder,CounsellingOrderResponseDTO.class);
        CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrderResponseDTO.getCounsellingInfoId());
        CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrder.getCounsellingInfoId());
        Customer customer = this.customerService.getById(counsellingInfo.getUserId());
        counsellingOrderResponseDTO.setCounsellingName(customer.getNickName());
        return new SuccessResponseData<>(counsellingOrderResponseDTO);
roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/RongCloudImServer.java
@@ -61,6 +61,7 @@
                .setPortrait(portrait);
        TokenResult result = getRongCloud().user.register(userModel);
        // {"token":"UNFruJFNKX77FTKA0fO92Xm4tDCdiuJG@fnk7.cn.rongnav.com;fnk7.cn.rongcfg.com","userId":"1","reqBody":"userId=1&name=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA&portraitUri=http%3A%2F%2Fwww.rongcloud.cn%2Fimages%2Flogo.png","code":200,"requestId":"e3e851ac0cdb47a4ad456f9c8dd1e88a"}
        log.info("融云IM getToken:  " + result.toString());
        return result;
@@ -96,6 +97,7 @@
        UserModel userModel = new UserModel().setId(id);
        CheckOnlineResult result = getRongCloud().user.onlineStatus.check(userModel);
        log.info("融云IM checkOnline:  " + result.toString());
        assertEquals("200", result.getCode().toString());