zhouyy 3 weeks ago
parent
commit
cad8ea056f

+ 22 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/BillController.java

@@ -0,0 +1,22 @@
+package com.management.platform.controller;
+
+import com.management.platform.service.BillService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+@RestController
+@RequestMapping("/bill")
+public class BillController {
+
+    @Resource
+    private BillService billService;
+
+    @RequestMapping("/getPrepayId")
+    public HttpRespMsg getPrepayId(Integer id,HttpServletRequest request) {
+        return billService.getPrepayId(id,request);
+    }
+}

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/BillMapper.java

@@ -0,0 +1,7 @@
+package com.management.platform.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.management.platform.entity.Bill;
+
+public interface BillMapper extends BaseMapper<Bill> {
+}

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/BillService.java

@@ -0,0 +1,11 @@
+package com.management.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.Bill;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+
+public interface BillService extends IService<Bill> {
+    HttpRespMsg getPrepayId(Integer id, HttpServletRequest request);
+}

+ 85 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/BillServiceImpl.java

@@ -0,0 +1,85 @@
+package com.management.platform.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.entity.Bill;
+import com.management.platform.entity.User;
+import com.management.platform.mapper.BillMapper;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.BillService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.http.*;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class BillServiceImpl extends ServiceImpl<BillMapper, Bill> implements BillService {
+
+    private static final String APP_ID = "wxaaf19cfbbe1ff950";
+
+    private static final String MAIN_COM = "https://api.mch.weixin.qq.com";
+
+    private static final String PRE_PAY_URL = "/v3/pay/transactions/jsapi";
+
+    @Resource
+    private BillMapper billMapper;
+
+    @Resource
+    private UserMapper userMapper;
+
+
+    @Override
+    public HttpRespMsg getPrepayId(Integer id, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("TOKEN"));
+        RestTemplate restTemplate = new RestTemplate();
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+//        headers.add("Authorization", authCode);//TODO 设置签名认证auth
+
+        Bill bill = billMapper.selectById(id);
+        Date now = new Date();
+        String seq = new SimpleDateFormat("yyyyMMddHHmmss").format(now);
+        bill.setSeq(seq + (1000 + bill.getId()%1000));
+
+        Map<String, Object> requestBody = new HashMap<>();
+        requestBody.put("appid", APP_ID);
+//        requestBody.put("mchid", mchid);//TODO 商户号
+//        requestBody.put("description","")//TODO 商品真实信息
+        requestBody.put("out_trade_no",bill.getSeq());
+//        requestBody.put("notify_url",notify_url)//TODO 异步回调地址
+        Map<String,Object> amount = new HashMap<>();
+        amount.put("total",bill.getMoney());// TODO 此处默认库中money为分,如改动
+        amount.put("currency","CNY");
+        requestBody.put("amount",amount);
+
+        Map<String,Object> payer = new HashMap<>();
+//        payer.put("openid",openid);//TODO 用户在商户appid下的唯一标识 user.getXXX
+
+        HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+        ResponseEntity<String> prepayResponse = restTemplate.exchange(
+                MAIN_COM+PRE_PAY_URL,
+                HttpMethod.POST,
+                requestEntity,
+                String.class
+        );
+        if (prepayResponse.getStatusCode() == HttpStatus.OK) {
+            String prepayJson = prepayResponse.getBody();
+            JSONObject jsonObject = JSON.parseObject(prepayJson);
+            String prepay_id = jsonObject.get("prepay_id").toString();
+            //TODO 更新prepay_id
+        }
+
+        return httpRespMsg;
+    }
+}

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/BillMapper.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.management.platform.mapper.BillMapper">
+
+</mapper>