fate-modules-firm/fate-firm-server/src/main/java/com/fate/firm/controller/FirmController.java

249 lines
8.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.fate.firm.controller;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.fate.common.datasource.annotation.Master;
import com.fate.common.core.domain.Result;
import com.fate.common.core.web.controller.BaseController;
import com.fate.firm.config.AlipayConfig;
import com.fate.firm.domain.Firm;
import com.fate.firm.domain.request.FirmRequest;
import com.fate.firm.service.FirmService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* <p>
* 企业公司 前端控制器
* </p>
*
* @author sikadi
* @since 2023-11-18 06:27:02
*/
@RestController
@RequestMapping("/firm")
@Log4j2
@Master // = fate-fate
// fate-fate -> t_firm
public class FirmController extends BaseController {
@Autowired
private FirmService firmService;
@Autowired
private HttpServletRequest request;
/**
* 添加企业入驻
*
* @author: ZhuoXin
* @date: 2023/11/20 10:45
* @param: [firm]
* @return: com.fate.common.core.domain.Result
**/
@PostMapping("/addFirm")
public Result addFirm(@RequestBody FirmRequest firmRequest) {
Result result = firmService.addFirm(Firm.addReqBuild(firmRequest));
return Result.success("成功");
}
/**
* 修改信息
*
* @author: ZhuoXin
* @date: 2023/11/20 13:19
* @param: [firm]
* @return: com.fate.common.core.domain.Result
**/
@PostMapping("/updateFirm")
public Result updateLL(@RequestBody @Validated FirmRequest firmRequest) {
Result result = firmService.updateFirm(Firm.addReqBuild(firmRequest));
return result;
}
/**
* 修改信息
*
* @author: ZhuoXin
* @date: 2023/11/20 13:19
* @param: [firm]
* @return: com.fate.common.core.domain.Result
**/
@PostMapping("/updateStatus")
public Result updateStatus(@RequestBody @Validated FirmRequest firm) {
Result result = firmService.updateStatus(Firm.addReqBuild(firm));
return result;
}
/**
* 查询企业的信息
* @author: ZhuoXin
* @date: 2023/11/21 13:35
* @param: [firmRequest]
* @return: com.fate.common.core.domain.Result<java.util.List<com.fate.firm.domain.Firm>>
**/
@PostMapping("/list")
public Result<List<Firm>> list(@RequestBody FirmRequest firmRequest) {
List<Firm> list = firmService.listSel(Firm.addReqBuild(firmRequest));
return Result.success(list);
}
/**
* 判断是否为管理查询列表
* @author: ZhuoXin
* @date: 2023/11/20 10:24
* @param: []
* @return: com.fate.common.core.domain.Result<java.util.List < com.fate.firm.domain.Firm>>
**/
@GetMapping("/listAll")
public Result<List<Firm>> listAll() {
List<Firm> list = firmService.list();
return Result.success(list);
}
/**
* 删除数据
* @author: ZhuoXin
* @date: 2023/11/20 22:22
* @param: [firmRequest]
* @return: com.fate.common.core.domain.Result
**/
@PostMapping("/deleteFirm")
public Result deleteFirm(@RequestBody @Validated Firm firm){
Result result = firmService.deleteFirm(firm);
return result;
}
/**
* 管理审核是否通过
* @author: ZhuoXin
* @date: 2023/11/24 9:27
* @param: [firm]
* @return: com.fate.common.core.domain.Result
**/
@PostMapping("/manage")
public Result manage(@RequestBody FirmRequest firmRequest){
Result result = firmService.manage(Firm.addReqBuild(firmRequest));
return result;
}
@RequestMapping("/index")
public String firmIndex(){
return "index";
}
@RequestMapping("/showFirm")
public void showFirm(HttpServletRequest request , HttpServletResponse httpServletResponse) throws Exception {
// 获取初始化的AlipayClient
DefaultAlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.GATEWAY_URL, AlipayConfig.APP_ID, AlipayConfig.MERCHANT_PRIVATE_KEY, "json", AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE);
// 设置请求参数
AlipayTradePagePayRequest alipayTradePagePayRequest = new AlipayTradePagePayRequest();
alipayTradePagePayRequest.setReturnUrl(AlipayConfig.RETURN_URL);
alipayTradePagePayRequest.setNotifyUrl(AlipayConfig.NOTIFY_URL);
//商家订单号64个字符以内、可包含字母、数字、下划线需保证在商户端不重复
String wiDoutTradeNo = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"), "UTF-8");
// 付款金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
String totalAmount = new String(request.getParameter("WIDtotal_amount").getBytes("ISO-8859-1"), "UTF-8");
// 订单名称粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"), "UTF-8");
// 商品描述,可以为空
String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"), "UTF-8");
alipayTradePagePayRequest.setBizContent("{\"out_trade_no\":\"" + wiDoutTradeNo + "\"," +
"\"total_amount\":\"" + totalAmount + "\"," +
"\"subject\":\"" + subject + "\"," +
"\"body\":\"" + body + "\"," +
"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
// 请求支付宝进行支付
// 构建支付宝官服支付页面
String top = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n" +
"<html>\n" +
"<head>\n" +
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n" +
"<title>付款</title>\n" +
"</head>";
String result = alipayClient.pageExecute(alipayTradePagePayRequest).getBody();
String bottom = "<body>\n" +
"</body>\n" +
"</html>";
httpServletResponse.getWriter().println(top + result + bottom);
}
@RequestMapping("/notify")
public void notify(HttpServletRequest request, HttpServletResponse response) throws Exception {
log.info("支付宝异步通知");
PrintWriter out = response.getWriter();
// 获取支付宝POST过来反馈信息
HashMap<String, String> params = new HashMap<>();
Map<String, String[]> parameterMap = request.getParameterMap();
for (Iterator<String> iter = parameterMap.keySet().iterator(); iter.hasNext();){
String name = (String) iter.next();
String[] values = (String[]) parameterMap.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1)? valueStr + values[i]
: valueStr + values[i] + ",";
}
// 乱码解决,这段代码在出现乱码时使用
valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
params.put(name, valueStr);
}
boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGN_TYPE); AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGN_TYPE);
if (signVerified) {
log.info("支付宝签名验证通过");
//商品订单号
String outTradeNo = new String(params.get("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");
//支付宝交易号
String tradeNo = new String(params.get("trade_no").getBytes("ISO-8859-1"), "UTF-8");
// 交易状态
String tradeStatus = new String(params.get("trade_status").getBytes("ISO-8859-1"), "UTF-8");
if(tradeStatus.equals("TRADE_FINISHED")){
log.info("订单已完成");
}else if(tradeStatus.equals("TRADE_SUCCESS")){
log.info("支付宝交易成功");
}
out.println("success");
}else {
out.println("fail");
}
}
}