拉卡拉分账调试修正
This commit is contained in:
parent
0dd8de1de9
commit
82564922af
@ -20,7 +20,7 @@ import java.util.Date;
|
|||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@TableName("shop_message_template")
|
@TableName("lkl_ledger_member")
|
||||||
@ApiModel(value = "拉卡拉分账商户", description = "拉卡拉分账商户表")
|
@ApiModel(value = "拉卡拉分账商户", description = "拉卡拉分账商户表")
|
||||||
public class LklLedgerMember implements Serializable {
|
public class LklLedgerMember implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import java.util.Date;
|
|||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@TableName("shop_message_template")
|
@TableName("lkl_ledger_mer_receiver_bind")
|
||||||
@ApiModel(value = "拉卡拉分账商户与接收方绑定关系", description = "拉卡拉分账商户与接收方绑定表")
|
@ApiModel(value = "拉卡拉分账商户与接收方绑定关系", description = "拉卡拉分账商户与接收方绑定表")
|
||||||
public class LklLedgerMerReceiverBind implements Serializable {
|
public class LklLedgerMerReceiverBind implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import java.util.Date;
|
|||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@TableName("shop_message_template")
|
@TableName("lkl_ledger_receiver")
|
||||||
@ApiModel(value = "拉卡拉分账接收方", description = "拉卡拉分账接收方表")
|
@ApiModel(value = "拉卡拉分账接收方", description = "拉卡拉分账接收方表")
|
||||||
public class LklLedgerReceiver implements Serializable {
|
public class LklLedgerReceiver implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@ -30,6 +30,7 @@ public class LklLedgerReceiver implements Serializable {
|
|||||||
private String org_code;
|
private String org_code;
|
||||||
private String rec_org_code;
|
private String rec_org_code;
|
||||||
private String rec_org_name;
|
private String rec_org_name;
|
||||||
|
private String receiver_no;
|
||||||
private String receiver_name;
|
private String receiver_name;
|
||||||
private String contact_mobile;
|
private String contact_mobile;
|
||||||
private String license_no;
|
private String license_no;
|
||||||
@ -46,9 +47,6 @@ public class LklLedgerReceiver implements Serializable {
|
|||||||
private String acct_open_bank_name;
|
private String acct_open_bank_name;
|
||||||
private String acct_clear_bank_code;
|
private String acct_clear_bank_code;
|
||||||
private String attach_list;
|
private String attach_list;
|
||||||
private String attach_type;
|
|
||||||
private String attach_name;
|
|
||||||
private String attach_store_path;
|
|
||||||
private String settle_type;
|
private String settle_type;
|
||||||
private String version;
|
private String version;
|
||||||
private Date created_at;
|
private Date created_at;
|
||||||
|
|||||||
@ -1,11 +1,15 @@
|
|||||||
package com.suisung.mall.common.utils;
|
package com.suisung.mall.common.utils;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.google.gson.*;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.xml.sax.InputSource;
|
import org.xml.sax.InputSource;
|
||||||
|
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
@ -354,40 +358,89 @@ public final class StringUtils extends org.apache.commons.lang3.StringUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 驼峰命名转下划线命名
|
* 将 JSON 字符串中驼峰命名的键转换为下划线命名
|
||||||
*
|
* @param jsonString 输入的 JSON 字符串
|
||||||
|
* @return 转换后的 JSON 字符串
|
||||||
|
*/
|
||||||
|
public static String convertCamelToSnake(String jsonString) {
|
||||||
|
Gson gson = new Gson();
|
||||||
|
JsonElement jsonElement = JsonParser.parseString(jsonString);
|
||||||
|
JsonElement convertedElement = convertKeys(jsonElement,true);
|
||||||
|
return gson.toJson(convertedElement);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将 JSON 字符串中蛇形命名的键转换为驼峰命名
|
||||||
|
* @param jsonString 输入的 JSON 字符串
|
||||||
|
* @return 转换后的 JSON 字符串
|
||||||
|
*/
|
||||||
|
public static String convertSnakeToCamel(String jsonString) {
|
||||||
|
Gson gson = new Gson();
|
||||||
|
// 解析 JSON 字符串为 JsonElement 对象
|
||||||
|
JsonElement jsonElement = JsonParser.parseString(jsonString);
|
||||||
|
// 递归转换键名
|
||||||
|
JsonElement convertedElement = convertKeys(jsonElement,true);
|
||||||
|
// 将转换后的 JsonElement 转换回 JSON 字符串
|
||||||
|
return gson.toJson(convertedElement);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归转换 JSON 元素中的键名
|
||||||
|
* @param element 要转换的 JSON 元素
|
||||||
|
* @return 转换后的 JSON 元素
|
||||||
|
*/
|
||||||
|
private static JsonElement convertKeys(JsonElement element, boolean isCamelToSnake) {
|
||||||
|
if (element.isJsonObject()) {
|
||||||
|
JsonObject jsonObject = element.getAsJsonObject();
|
||||||
|
JsonObject newJsonObject = new JsonObject();
|
||||||
|
for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) {
|
||||||
|
|
||||||
|
String newKey ;
|
||||||
|
if(isCamelToSnake) {
|
||||||
|
newKey = camelToSnake(entry.getKey());
|
||||||
|
}else{
|
||||||
|
newKey = snakeToCamel(entry.getKey());
|
||||||
|
}
|
||||||
|
JsonElement value = entry.getValue();
|
||||||
|
newJsonObject.add(newKey, convertKeys(value, isCamelToSnake));
|
||||||
|
}
|
||||||
|
return newJsonObject;
|
||||||
|
} else if (element.isJsonArray()) {
|
||||||
|
JsonArray jsonArray = element.getAsJsonArray();
|
||||||
|
JsonArray newJsonArray = new JsonArray();
|
||||||
|
for (JsonElement item : jsonArray) {
|
||||||
|
newJsonArray.add(convertKeys(item, isCamelToSnake));
|
||||||
|
}
|
||||||
|
return newJsonArray;
|
||||||
|
}
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将单个驼峰命名的字符串转换为下划线命名
|
||||||
* @param camelCase 驼峰命名的字符串
|
* @param camelCase 驼峰命名的字符串
|
||||||
* @return 下划线命名的字符串
|
* @return 下划线命名的字符串
|
||||||
*/
|
*/
|
||||||
public static String camelToSnake(String camelCase) {
|
private static String camelToSnake(String camelCase) {
|
||||||
// 处理输入为 null 或空字符串的情况
|
|
||||||
if (camelCase == null || camelCase.isEmpty()) {
|
|
||||||
return camelCase;
|
|
||||||
}
|
|
||||||
StringBuilder result = new StringBuilder();
|
StringBuilder result = new StringBuilder();
|
||||||
for (int i = 0; i < camelCase.length(); i++) {
|
for (int i = 0; i < camelCase.length(); i++) {
|
||||||
char c = camelCase.charAt(i);
|
char c = camelCase.charAt(i);
|
||||||
// 如果是大写字母且不是字符串的第一个字符,则在前面添加下划线
|
|
||||||
if (Character.isUpperCase(c) && i > 0) {
|
if (Character.isUpperCase(c) && i > 0) {
|
||||||
result.append("_");
|
result.append("_");
|
||||||
}
|
}
|
||||||
// 将字符转换为小写并添加到结果中
|
|
||||||
result.append(Character.toLowerCase(c));
|
result.append(Character.toLowerCase(c));
|
||||||
}
|
}
|
||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下划线命名转驼峰命名
|
* 将单个蛇形命名的字符串转换为驼峰命名
|
||||||
*
|
* @param snakeCase 蛇形命名的字符串
|
||||||
* @param snakeCase 下划线命名的字符串
|
|
||||||
* @return 驼峰命名的字符串
|
* @return 驼峰命名的字符串
|
||||||
*/
|
*/
|
||||||
public static String snakeToCamel(String snakeCase) {
|
private static String snakeToCamel(String snakeCase) {
|
||||||
// 处理输入为 null 或空字符串的情况
|
|
||||||
if (snakeCase == null || snakeCase.isEmpty()) {
|
|
||||||
return snakeCase;
|
|
||||||
}
|
|
||||||
StringBuilder result = new StringBuilder();
|
StringBuilder result = new StringBuilder();
|
||||||
boolean capitalizeNext = false;
|
boolean capitalizeNext = false;
|
||||||
for (char c : snakeCase.toCharArray()) {
|
for (char c : snakeCase.toCharArray()) {
|
||||||
@ -396,7 +449,7 @@ public final class StringUtils extends org.apache.commons.lang3.StringUtils {
|
|||||||
capitalizeNext = true;
|
capitalizeNext = true;
|
||||||
} else {
|
} else {
|
||||||
if (capitalizeNext) {
|
if (capitalizeNext) {
|
||||||
// 将字符转换为大写并添加到结果中
|
// 将字符转换为大写
|
||||||
result.append(Character.toUpperCase(c));
|
result.append(Character.toUpperCase(c));
|
||||||
capitalizeNext = false;
|
capitalizeNext = false;
|
||||||
} else {
|
} else {
|
||||||
@ -407,6 +460,23 @@ public final class StringUtils extends org.apache.commons.lang3.StringUtils {
|
|||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据文件名获取文件后缀
|
||||||
|
* @param fileName 文件名
|
||||||
|
* @return 文件后缀,如果没有后缀则返回空字符串
|
||||||
|
*/
|
||||||
|
public static String getFileExt(String fileName) {
|
||||||
|
if (fileName == null || fileName.isEmpty()) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
int lastIndex = fileName.lastIndexOf('.');
|
||||||
|
if (lastIndex == -1 || lastIndex == fileName.length() - 1) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return fileName.substring(lastIndex + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成的随机数类型
|
* 生成的随机数类型
|
||||||
|
|||||||
@ -14,49 +14,55 @@ import com.suisung.mall.common.service.impl.BaseControllerImpl;
|
|||||||
import com.suisung.mall.pay.service.LakalaPayService;
|
import com.suisung.mall.pay.service.LakalaPayService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.util.Base64Utils;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import javax.annotation.Resource;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
@Api(tags = "拉卡拉相关接口 - 前端控制器")
|
@Api(tags = "拉卡拉相关接口 - 前端控制器")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/mobile/pay/lakala")
|
@RequestMapping("/mobile/pay/lakala")
|
||||||
public class LakalaController extends BaseControllerImpl {
|
public class LakalaController extends BaseControllerImpl {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private LakalaPayService lakalaPayService;
|
private LakalaPayService lakalaPayService;
|
||||||
|
|
||||||
|
@ApiOperation(value = "本地文件转base64", notes = "本地文件转base64")
|
||||||
|
@RequestMapping(value = "/file2base64", method = RequestMethod.POST)
|
||||||
|
public String file2Base64(@RequestParam("file") MultipartFile file) throws IOException {
|
||||||
|
String str=Base64Utils.encodeToString(file.getBytes());
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "商户分账业务开通申请", notes = "商户分账业务开通申请")
|
@ApiOperation(value = "商户分账业务开通申请", notes = "商户分账业务开通申请")
|
||||||
@RequestMapping(value = "/ledger/applyLedgerMer", method = RequestMethod.POST)
|
@RequestMapping(value = "/ledger/applyLedgerMer", method = RequestMethod.POST)
|
||||||
public CommonResult ledgerApplyLedgerMer(@RequestBody JSONObject paramsJSON) {
|
public CommonResult ledgerApplyLedgerMer(@RequestBody JSONObject paramsJSON) {
|
||||||
return lakalaPayService.ledgerApplyLedgerMer(paramsJSON);
|
return lakalaPayService.applyLedgerMer(paramsJSON);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "商户分账业务开通申请异步回调回调", notes = "商户分账业务开通申请异步回调回调")
|
@ApiOperation(value = "商户分账业务开通申请异步回调回调", notes = "商户分账业务开通申请异步回调回调")
|
||||||
@RequestMapping(value = "/ledger/applyLedgerMerNotify", method = RequestMethod.POST)
|
@RequestMapping(value = "/ledger/applyLedgerMerNotify", method = RequestMethod.POST)
|
||||||
public CommonResult ledgerApplyLedgerMerNotify(@RequestBody JSONObject paramsJSON) {
|
public CommonResult ledgerApplyLedgerMerNotify(@RequestBody JSONObject paramsJSON) {
|
||||||
return lakalaPayService.ledgerApplyLedgerMer(paramsJSON);
|
return lakalaPayService.applyLedgerMer(paramsJSON);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "分账接收方创建申请", notes = "分账接收方创建申请")
|
@ApiOperation(value = "分账接收方创建申请", notes = "分账接收方创建申请")
|
||||||
@RequestMapping(value = "/ledger/applyLedgerReceiver", method = RequestMethod.POST)
|
@RequestMapping(value = "/ledger/applyLedgerReceiver", method = RequestMethod.POST)
|
||||||
public CommonResult applyLedgerReceiver(@RequestBody JSONObject paramsJSON) {
|
public CommonResult applyLedgerReceiver(@RequestBody JSONObject paramsJSON) {
|
||||||
return lakalaPayService.ledgerApplyLedgerMer(paramsJSON);
|
return lakalaPayService.applyLedgerMer(paramsJSON);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "分账关系绑定申请", notes = "分账关系绑定申请")
|
@ApiOperation(value = "分账关系绑定申请", notes = "分账关系绑定申请")
|
||||||
@RequestMapping(value = "/ledger/applyBind", method = RequestMethod.POST)
|
@RequestMapping(value = "/ledger/applyBind", method = RequestMethod.POST)
|
||||||
public CommonResult applyBind(@RequestBody JSONObject paramsJSON) {
|
public CommonResult applyBind(@RequestBody JSONObject paramsJSON) {
|
||||||
return lakalaPayService.ledgerApplyLedgerMer(paramsJSON);
|
return lakalaPayService.applyLedgerMer(paramsJSON);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "分账关系绑定申请异步回调通知", notes = "分账关系绑定申请异步回调通知")
|
@ApiOperation(value = "分账关系绑定申请异步回调通知", notes = "分账关系绑定申请异步回调通知")
|
||||||
@RequestMapping(value = "/ledger/applyBindNotify", method = RequestMethod.POST)
|
@RequestMapping(value = "/ledger/applyBindNotify", method = RequestMethod.POST)
|
||||||
public CommonResult applyBindNotify(@RequestBody JSONObject paramsJSON) {
|
public JSONObject applyBindNotify(@RequestBody JSONObject paramsJSON) {
|
||||||
return lakalaPayService.ledgerApplyLedgerMer(paramsJSON);
|
return lakalaPayService.applyLedgerMerNotify(paramsJSON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,6 @@ package com.suisung.mall.pay.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.suisung.mall.common.modules.lakala.LklLedgerMember;
|
import com.suisung.mall.common.modules.lakala.LklLedgerMember;
|
||||||
import com.suisung.mall.common.modules.pay.PayBaseRechargeLevel;
|
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||||
|
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
|
||||||
|
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
|
||||||
|
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
|
||||||
|
* Vestibulum commodo. Ut rhoncus gravida arcu.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.suisung.mall.pay.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.suisung.mall.common.modules.lakala.LklLedgerMerReceiverBind;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface LklLedgerMerReceiverBindMapper extends BaseMapper<LklLedgerMerReceiverBind> {
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||||
|
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
|
||||||
|
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
|
||||||
|
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
|
||||||
|
* Vestibulum commodo. Ut rhoncus gravida arcu.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.suisung.mall.pay.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.suisung.mall.common.modules.lakala.LklLedgerReceiver;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface LklLedgerReceiverMapper extends BaseMapper<LklLedgerReceiver> {
|
||||||
|
}
|
||||||
@ -92,5 +92,41 @@ public interface LakalaPayService {
|
|||||||
* @param paramsJSON
|
* @param paramsJSON
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
CommonResult ledgerApplyLedgerMer(JSONObject paramsJSON);
|
CommonResult applyLedgerMer(JSONObject paramsJSON);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户分账业务开通申请回调
|
||||||
|
* 参考:https://o.lakala.com/#/home/document/detail?id=379
|
||||||
|
* @param paramsJSON
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
JSONObject applyLedgerMerNotify(JSONObject paramsJSON);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账接收方创建申请
|
||||||
|
* 参考:https://o.lakala.com/#/home/document/detail?id=380
|
||||||
|
* @param paramsJSON
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
CommonResult applyLedgerReceiver(JSONObject paramsJSON);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账关系绑定申请
|
||||||
|
* 参考:https://o.lakala.com/#/home/document/detail?id=386
|
||||||
|
* @param paramsJSON
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
CommonResult applyLedgerMerReceiverBind(JSONObject paramsJSON);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账关系绑定申请回调
|
||||||
|
* 参考:https://o.lakala.com/#/home/document/detail?id=379
|
||||||
|
* @param paramsJSON
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
JSONObject applyLedgerMerReceiverBindNotify(JSONObject paramsJSON);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,4 +12,11 @@ import com.suisung.mall.common.modules.lakala.LklLedgerMember;
|
|||||||
import com.suisung.mall.core.web.service.IBaseService;
|
import com.suisung.mall.core.web.service.IBaseService;
|
||||||
|
|
||||||
public interface LklLedgerMemberService extends IBaseService<LklLedgerMember> {
|
public interface LklLedgerMemberService extends IBaseService<LklLedgerMember> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据银联商户号新增或修改记录
|
||||||
|
* @param record
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Boolean saveOrUpdateByMerCupNo(LklLedgerMember record);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||||
|
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
|
||||||
|
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
|
||||||
|
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
|
||||||
|
* Vestibulum commodo. Ut rhoncus gravida arcu.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.suisung.mall.pay.service;
|
||||||
|
|
||||||
|
import com.suisung.mall.common.modules.lakala.LklLedgerMerReceiverBind;
|
||||||
|
import com.suisung.mall.core.web.service.IBaseService;
|
||||||
|
|
||||||
|
public interface LklLedgerMerReceiverBindService extends IBaseService<LklLedgerMerReceiverBind> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据接收方编号新增或更新记录
|
||||||
|
* @param record
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Boolean saveOrUpdateByReceiverNo(LklLedgerMerReceiverBind record);
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||||
|
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
|
||||||
|
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
|
||||||
|
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
|
||||||
|
* Vestibulum commodo. Ut rhoncus gravida arcu.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.suisung.mall.pay.service;
|
||||||
|
|
||||||
|
import com.suisung.mall.common.modules.lakala.LklLedgerMember;
|
||||||
|
import com.suisung.mall.common.modules.lakala.LklLedgerReceiver;
|
||||||
|
import com.suisung.mall.core.web.service.IBaseService;
|
||||||
|
|
||||||
|
public interface LklLedgerReceiverService extends IBaseService<LklLedgerReceiver> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据接收方编号新增或更新记录
|
||||||
|
* @param record
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Boolean saveOrUpdateByReceiverNo(LklLedgerReceiver record);
|
||||||
|
}
|
||||||
@ -11,9 +11,9 @@ import com.suisung.mall.common.constant.RedisConstant;
|
|||||||
import com.suisung.mall.common.feignService.AccountService;
|
import com.suisung.mall.common.feignService.AccountService;
|
||||||
import com.suisung.mall.common.modules.account.AccountBaseConfig;
|
import com.suisung.mall.common.modules.account.AccountBaseConfig;
|
||||||
import com.suisung.mall.common.modules.account.AccountUserInfo;
|
import com.suisung.mall.common.modules.account.AccountUserInfo;
|
||||||
|
import com.suisung.mall.common.utils.CheckUtil;
|
||||||
import com.suisung.mall.core.web.service.RedisService;
|
import com.suisung.mall.core.web.service.RedisService;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.common.utils.CheckUtil;
|
|
||||||
import com.suisung.mall.pay.mapper.AccountBaseConfigMapper;
|
import com.suisung.mall.pay.mapper.AccountBaseConfigMapper;
|
||||||
import com.suisung.mall.pay.service.AccountBaseConfigService;
|
import com.suisung.mall.pay.service.AccountBaseConfigService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -42,16 +42,13 @@ import java.util.stream.Collectors;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class AccountBaseConfigServiceImpl extends BaseServiceImpl<AccountBaseConfigMapper, AccountBaseConfig> implements AccountBaseConfigService, CommandLineRunner {
|
public class AccountBaseConfigServiceImpl extends BaseServiceImpl<AccountBaseConfigMapper, AccountBaseConfig> implements AccountBaseConfigService, CommandLineRunner {
|
||||||
|
|
||||||
|
public static Map<String, AccountBaseConfig> configMap;
|
||||||
|
public static Long version = 0L;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AccountService accountService;
|
private AccountService accountService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisService redisService;
|
private RedisService redisService;
|
||||||
|
|
||||||
public static Map<String, AccountBaseConfig> configMap;
|
|
||||||
|
|
||||||
public static Long version = 0L;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据config_key 获取 config_value
|
* 根据config_key 获取 config_value
|
||||||
*
|
*
|
||||||
@ -239,6 +236,7 @@ public class AccountBaseConfigServiceImpl extends BaseServiceImpl<AccountBaseCon
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 同步配置表缓存
|
* 同步配置表缓存
|
||||||
|
*
|
||||||
* @param loop
|
* @param loop
|
||||||
*/
|
*/
|
||||||
@Async
|
@Async
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -55,11 +56,10 @@ public class AnalytiscTradeServiceImpl implements AnalytiscTradeService {
|
|||||||
throw new ApiException(ResultCode.UNAUTHORIZED);
|
throw new ApiException(ResultCode.UNAUTHORIZED);
|
||||||
}
|
}
|
||||||
|
|
||||||
Integer siteId = user.getSiteid() ;
|
Integer siteId = user.getSiteid();
|
||||||
Integer storeId =user.getStoreId() ;
|
Integer storeId = user.getStoreId();
|
||||||
Integer chainId =user.getChainId() ;
|
Integer chainId = user.getChainId();
|
||||||
Integer userId =user.getUserId() ;
|
Integer userId = user.getUserId();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 获取当日交易额
|
// 获取当日交易额
|
||||||
@ -82,7 +82,7 @@ public class AnalytiscTradeServiceImpl implements AnalytiscTradeService {
|
|||||||
// 计算日环比 日环比 = (当日数据 - 前一日数据) / 前一日数据 * 100%
|
// 计算日环比 日环比 = (当日数据 - 前一日数据) / 前一日数据 * 100%
|
||||||
BigDecimal daym2m = BigDecimal.ZERO;
|
BigDecimal daym2m = BigDecimal.ZERO;
|
||||||
if (yestodayTradeAmount.getAmount().compareTo(BigDecimal.ZERO) != 0) {
|
if (yestodayTradeAmount.getAmount().compareTo(BigDecimal.ZERO) != 0) {
|
||||||
daym2m = (todayTradeAmount.getAmount().subtract(yestodayTradeAmount.getAmount())).divide(yestodayTradeAmount.getAmount(), 2, BigDecimal.ROUND_HALF_UP);
|
daym2m = (todayTradeAmount.getAmount().subtract(yestodayTradeAmount.getAmount())).divide(yestodayTradeAmount.getAmount(), 2, RoundingMode.HALF_UP);
|
||||||
//.multiply(new BigDecimal("100"));
|
//.multiply(new BigDecimal("100"));
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -108,10 +108,10 @@ public class AnalytiscTradeServiceImpl implements AnalytiscTradeService {
|
|||||||
throw new ApiException(ResultCode.UNAUTHORIZED);
|
throw new ApiException(ResultCode.UNAUTHORIZED);
|
||||||
}
|
}
|
||||||
|
|
||||||
Integer siteId = user.getSiteid() ;
|
Integer siteId = user.getSiteid();
|
||||||
Integer storeId =user.getStoreId() ;
|
Integer storeId = user.getStoreId();
|
||||||
Integer chainId =user.getChainId() ;
|
Integer chainId = user.getChainId();
|
||||||
Integer userId =user.getUserId() ;
|
Integer userId = user.getUserId();
|
||||||
|
|
||||||
return analytiscTradeDao.getPayTimeLine(input.getStime() == null ? null : new Date(input.getStime()), input.getEtime() == null ? null : new Date(input.getEtime()), siteId, storeId, userId);
|
return analytiscTradeDao.getPayTimeLine(input.getStime() == null ? null : new Date(input.getStime()), input.getEtime() == null ? null : new Date(input.getEtime()), siteId, storeId, userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,11 +23,15 @@ import com.suisung.mall.common.api.CommonResult;
|
|||||||
import com.suisung.mall.common.exception.ApiException;
|
import com.suisung.mall.common.exception.ApiException;
|
||||||
import com.suisung.mall.common.feignService.ShopService;
|
import com.suisung.mall.common.feignService.ShopService;
|
||||||
import com.suisung.mall.common.modules.lakala.LklLedgerMember;
|
import com.suisung.mall.common.modules.lakala.LklLedgerMember;
|
||||||
|
import com.suisung.mall.common.modules.lakala.LklLedgerMerReceiverBind;
|
||||||
|
import com.suisung.mall.common.modules.lakala.LklLedgerReceiver;
|
||||||
import com.suisung.mall.common.modules.store.ShopStoreBase;
|
import com.suisung.mall.common.modules.store.ShopStoreBase;
|
||||||
import com.suisung.mall.common.utils.I18nUtil;
|
import com.suisung.mall.common.utils.I18nUtil;
|
||||||
import com.suisung.mall.common.utils.StringUtils;
|
import com.suisung.mall.common.utils.StringUtils;
|
||||||
import com.suisung.mall.pay.service.LakalaPayService;
|
import com.suisung.mall.pay.service.LakalaPayService;
|
||||||
import com.suisung.mall.pay.service.LklLedgerMemberService;
|
import com.suisung.mall.pay.service.LklLedgerMemberService;
|
||||||
|
import com.suisung.mall.pay.service.LklLedgerMerReceiverBindService;
|
||||||
|
import com.suisung.mall.pay.service.LklLedgerReceiverService;
|
||||||
import com.suisung.mall.pay.utils.LakalaUtil;
|
import com.suisung.mall.pay.utils.LakalaUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -38,6 +42,8 @@ import org.springframework.stereotype.Service;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -74,6 +80,12 @@ public class LakalaPayServiceImpl implements LakalaPayService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private LklLedgerMemberService lklLedgerMemberService;
|
private LklLedgerMemberService lklLedgerMemberService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LklLedgerReceiverService lklLedgerReceiverService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LklLedgerMerReceiverBindService lklLedgerMerReceiverBindService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化 拉卡拉SDK
|
* 初始化 拉卡拉SDK
|
||||||
*
|
*
|
||||||
@ -363,8 +375,8 @@ public class LakalaPayServiceImpl implements LakalaPayService {
|
|||||||
//2. 装配数据
|
//2. 装配数据
|
||||||
V2MmsOpenApiUploadFileRequest req = new V2MmsOpenApiUploadFileRequest();
|
V2MmsOpenApiUploadFileRequest req = new V2MmsOpenApiUploadFileRequest();
|
||||||
req.setVersion("1.0");
|
req.setVersion("1.0");
|
||||||
req.setOrderNo(orderNo);
|
|
||||||
req.setOrgCode(orgCode);
|
req.setOrgCode(orgCode);
|
||||||
|
req.setOrderNo(orderNo);
|
||||||
req.setAttType(attType);
|
req.setAttType(attType);
|
||||||
req.setAttExtName(attExtName);
|
req.setAttExtName(attExtName);
|
||||||
req.setAttContext(attContext);
|
req.setAttContext(attContext);
|
||||||
@ -374,7 +386,7 @@ public class LakalaPayServiceImpl implements LakalaPayService {
|
|||||||
String responseStr = LKLSDK.httpPost(req);
|
String responseStr = LKLSDK.httpPost(req);
|
||||||
|
|
||||||
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
|
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
|
||||||
if (lakalaRespJSON == null || !lakalaRespJSON.getStr("retCode").equals("000000") || !lakalaRespJSON.getStr("cmdRetCode").equals("GLOBAL_SUCCESS")) {
|
if (lakalaRespJSON == null || !lakalaRespJSON.getStr("retCode").equals("000000")) {
|
||||||
throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
|
throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,30 +398,32 @@ public class LakalaPayServiceImpl implements LakalaPayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommonResult ledgerApplyLedgerMer(JSONObject paramsJSON) {
|
public CommonResult applyLedgerMer(JSONObject paramsJSON) {
|
||||||
// 1. 配置初始化
|
// 1. 配置初始化
|
||||||
initLKLSDK();
|
initLKLSDK();
|
||||||
|
|
||||||
//2. 装配数据
|
//2. 装配数据
|
||||||
V2MmsOpenApiLedgerApplyLedgerMerRequest req = new V2MmsOpenApiLedgerApplyLedgerMerRequest();
|
V2MmsOpenApiLedgerApplyLedgerMerRequest req = new V2MmsOpenApiLedgerApplyLedgerMerRequest();
|
||||||
req.setVersion("2.0");
|
req.setVersion("2.0");
|
||||||
String orderNo = StringUtils.genLklOrderNo(8);
|
String orderNo = StringUtils.genLklOrderNo(8); // 8位随机数
|
||||||
req.setOrderNo(orderNo);
|
req.setOrderNo(orderNo);
|
||||||
req.setOrgCode(orgCode);
|
req.setOrgCode(orgCode);
|
||||||
req.setMerInnerNo(paramsJSON.getStr("merInnerNo"));
|
req.setMerInnerNo(paramsJSON.getStr("merInnerNo"));
|
||||||
req.setMerCupNo(paramsJSON.getStr("merCupNo"));
|
req.setMerCupNo(paramsJSON.getStr("merCupNo"));
|
||||||
req.setContactMobile(paramsJSON.getStr("contactMobile"));
|
req.setContactMobile(paramsJSON.getStr("contactMobile"));
|
||||||
req.setSplitLowestRatio(new BigDecimal(paramsJSON.getStr("splitLowestRatio")));
|
req.setSplitLowestRatio(new BigDecimal(paramsJSON.getStr("splitLowestRatio")));
|
||||||
req.setSplitEntrustFileName(paramsJSON.getStr("splitEntrustFileName"));
|
String fileName = paramsJSON.getStr("splitEntrustFileName");
|
||||||
|
req.setSplitEntrustFileName(fileName);
|
||||||
|
|
||||||
|
|
||||||
// 文件上传到拉卡拉服务器
|
// 文件上传到拉卡拉服务器
|
||||||
JSONObject fileUploadResp = uploadFile(orderNo, "SPLIT_ENTRUST_FILE", "png", paramsJSON.getStr("splitEntrustFile"));
|
JSONObject fileUploadResp = uploadFile(orderNo, "SPLIT_ENTRUST_FILE", StringUtils.getFileExt(fileName), paramsJSON.getStr("splitEntrustFile"));
|
||||||
if (fileUploadResp != null || StrUtil.isNotBlank(fileUploadResp.getStr("attFileId"))) {
|
if (fileUploadResp == null || StrUtil.isBlank(fileUploadResp.getStr("attFileId"))) {
|
||||||
req.setSplitEntrustFilePath(fileUploadResp.getStr("attFileId"));
|
throw new ApiException(I18nUtil._("分账结算委托书上传失败!"));
|
||||||
}
|
}
|
||||||
// req.setSplitEntrustFilePath("G1/M00/06/64/CrFdEmBQc-aAGc_XAAAiIbS3WIE960.png");
|
|
||||||
|
String splitEntrustFilePath = fileUploadResp.getStr("attFileId");
|
||||||
|
req.setSplitEntrustFilePath(splitEntrustFilePath);
|
||||||
|
// req.setSplitEntrustFilePath("G1/M00/06/64/CrFdEmBQc-aAGc_XAAAiIbS3WIE960.pdf");
|
||||||
|
|
||||||
String retUrl = projectDomain + "/mobile/pay/lakala/ledger/applyLedgerMerNotify";
|
String retUrl = projectDomain + "/mobile/pay/lakala/ledger/applyLedgerMerNotify";
|
||||||
req.setRetUrl(retUrl);
|
req.setRetUrl(retUrl);
|
||||||
@ -418,23 +432,27 @@ public class LakalaPayServiceImpl implements LakalaPayService {
|
|||||||
paramsJSON.set("version", "2.0");
|
paramsJSON.set("version", "2.0");
|
||||||
paramsJSON.set("ret_url", retUrl);
|
paramsJSON.set("ret_url", retUrl);
|
||||||
paramsJSON.set("org_code", orgCode);
|
paramsJSON.set("org_code", orgCode);
|
||||||
|
paramsJSON.set("split_entrust_file_path", splitEntrustFilePath);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
//3. 发送请求
|
//3. 发送请求
|
||||||
String responseStr = LKLSDK.httpPost(req);
|
String responseStr = LKLSDK.httpPost(req);
|
||||||
|
|
||||||
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
|
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
|
||||||
if (lakalaRespJSON == null || !lakalaRespJSON.getStr("retCode").equals("000000")) {
|
if (lakalaRespJSON == null || !lakalaRespJSON.getStr("retCode").equals("000000")) {
|
||||||
throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
|
throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
|
||||||
|
// responseStr="{'retCode':'000000','retMsg':'申请已受理,请等待审核结果','respData':{'version':'1.0','orderNo':'KFPT20230223181025407788734','orgCode':'1','applyId':681201215598657536}}";
|
||||||
|
// lakalaRespJSON = JSONUtil.parseObj(responseStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
paramsJSON.set("apply_id", lakalaRespJSON.get("applyId"));
|
paramsJSON.set("apply_id", lakalaRespJSON.getByPath("respData.applyId"));
|
||||||
|
paramsJSON.set("remark", lakalaRespJSON.getStr("retMsg"));
|
||||||
|
paramsJSON.set("audit_status_text", paramsJSON.get("remark"));
|
||||||
|
|
||||||
// 新增数据
|
// 新增数据
|
||||||
// 将 JSON 对象的键名转换为下划线命名
|
// 将 JSON 对象的键名转换为下划线命名
|
||||||
LklLedgerMember lklLedgerMember = JSONUtil.toBean(StringUtils.camelToSnake(paramsJSON.toString()), LklLedgerMember.class);
|
LklLedgerMember lklLedgerMember = JSONUtil.toBean(StringUtils.convertCamelToSnake(paramsJSON.toString()), LklLedgerMember.class);
|
||||||
lklLedgerMemberService.edit(lklLedgerMember);
|
lklLedgerMemberService.saveOrUpdateByMerCupNo(lklLedgerMember);
|
||||||
|
|
||||||
return CommonResult.success(null, "提交成功,待审核中!");
|
return CommonResult.success(null, "提交成功,待审核中!");
|
||||||
} catch (SDKException e) {
|
} catch (SDKException e) {
|
||||||
@ -443,5 +461,182 @@ public class LakalaPayServiceImpl implements LakalaPayService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户分账业务开通申请回调
|
||||||
|
* 参考:https://o.lakala.com/#/home/document/detail?id=379
|
||||||
|
*
|
||||||
|
* @param paramsJSON
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public JSONObject applyLedgerMerNotify(JSONObject paramsJSON) {
|
||||||
|
JSONObject respData = new JSONObject();
|
||||||
|
respData.put("retCode", "000000");
|
||||||
|
respData.put("retMsg", "操作成功!");
|
||||||
|
respData.put("respData", null);
|
||||||
|
return respData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账接收方创建申请
|
||||||
|
* 参考:https://o.lakala.com/#/home/document/detail?id=380
|
||||||
|
*
|
||||||
|
* @param paramsJSON
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public CommonResult applyLedgerReceiver(JSONObject paramsJSON) {
|
||||||
|
// 1. 配置初始化
|
||||||
|
initLKLSDK();
|
||||||
|
|
||||||
|
//2. 装配数据
|
||||||
|
V2MmsOpenApiLedgerApplyLedgerReceiverRequest req = new V2MmsOpenApiLedgerApplyLedgerReceiverRequest();
|
||||||
|
req.setVersion("2.0");
|
||||||
|
String orderNo = StringUtils.genLklOrderNo(8); // 8位随机数
|
||||||
|
req.setOrderNo(orderNo);
|
||||||
|
req.setOrgCode(orgCode);
|
||||||
|
req.setContactMobile(paramsJSON.getStr("contactMobile"));
|
||||||
|
req.setReceiverName(paramsJSON.getStr("receiverName"));
|
||||||
|
req.setAcctCertificateNo(paramsJSON.getStr("acctCertificateNo"));
|
||||||
|
req.setAcctOpenBankCode(paramsJSON.getStr("acctOpenBankCode"));
|
||||||
|
req.setAcctOpenBankName(paramsJSON.getStr("acctOpenBankName"));
|
||||||
|
req.setAcctName(paramsJSON.getStr("acctName"));
|
||||||
|
req.setAcctNo(paramsJSON.getStr("acctNo"));
|
||||||
|
req.setAcctTypeCode(paramsJSON.getStr("acctTypeCode"));
|
||||||
|
req.setAcctCertificateType(paramsJSON.getStr("acctCertificateTyp"));
|
||||||
|
|
||||||
|
List<V2MmsOpenApiLedgerApplyLedgerReceiverRequest.AttachInfo> attachList = new ArrayList<>();
|
||||||
|
V2MmsOpenApiLedgerApplyLedgerReceiverRequest.AttachInfo attachInfo = new V2MmsOpenApiLedgerApplyLedgerReceiverRequest.AttachInfo();
|
||||||
|
|
||||||
|
for (Object attachJSON : paramsJSON.getJSONArray("attachList")) {
|
||||||
|
JSONObject attachJSONObj = (JSONObject) attachJSON;
|
||||||
|
String fileName = paramsJSON.getStr("attachName");
|
||||||
|
attachInfo.setAttachName(fileName);
|
||||||
|
attachInfo.setAttachType(attachJSONObj.getStr("attachType"));
|
||||||
|
|
||||||
|
JSONObject fileUploadResp = uploadFile(StringUtils.genLklOrderNo(8), attachJSONObj.getStr("attachType"), StringUtils.getFileExt(fileName), paramsJSON.getStr("attachFile"));
|
||||||
|
if (fileUploadResp == null || StrUtil.isBlank(fileUploadResp.getStr("attFileId"))) {
|
||||||
|
throw new ApiException(I18nUtil._("附件上传失败!"));
|
||||||
|
}
|
||||||
|
|
||||||
|
attachInfo.setAttachStorePath(fileUploadResp.getStr("attFileId"));
|
||||||
|
|
||||||
|
attachList.add(attachInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
req.setAttachList(attachList);
|
||||||
|
|
||||||
|
|
||||||
|
paramsJSON.set("orderNo", orderNo);
|
||||||
|
paramsJSON.set("version", "2.0");
|
||||||
|
paramsJSON.set("org_code", orgCode);
|
||||||
|
paramsJSON.set("attach_list", JSONUtil.toJsonStr(attachList));
|
||||||
|
|
||||||
|
try {
|
||||||
|
//3. 发送请求
|
||||||
|
String responseStr = LKLSDK.httpPost(req);
|
||||||
|
|
||||||
|
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
|
||||||
|
if (lakalaRespJSON == null || !lakalaRespJSON.getStr("retCode").equals("000000")) {
|
||||||
|
throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
|
||||||
|
}
|
||||||
|
|
||||||
|
paramsJSON.set("receiver_no", lakalaRespJSON.getByPath("respData.receiverNo"));
|
||||||
|
paramsJSON.set("rec_org_code", lakalaRespJSON.getByPath("respData.orgId"));
|
||||||
|
paramsJSON.set("rec_org_name", lakalaRespJSON.getByPath("respData.orgName"));
|
||||||
|
|
||||||
|
// 新增数据
|
||||||
|
// 将 JSON 对象的键名转换为下划线命名
|
||||||
|
LklLedgerReceiver lklLedgerReceiver = JSONUtil.toBean(StringUtils.convertCamelToSnake(paramsJSON.toString()), LklLedgerReceiver.class);
|
||||||
|
lklLedgerReceiverService.saveOrUpdateByReceiverNo(lklLedgerReceiver);
|
||||||
|
|
||||||
|
return CommonResult.success(null, "提交成功,待审核中!");
|
||||||
|
} catch (SDKException e) {
|
||||||
|
log.error("分账申请失败:", e);
|
||||||
|
throw new ApiException(I18nUtil._("申请失败!"), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账关系绑定申请
|
||||||
|
* 参考:https://o.lakala.com/#/home/document/detail?id=386
|
||||||
|
*
|
||||||
|
* @param paramsJSON
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public CommonResult applyLedgerMerReceiverBind(JSONObject paramsJSON) {
|
||||||
|
// 1. 配置初始化
|
||||||
|
initLKLSDK();
|
||||||
|
|
||||||
|
//2. 装配数据
|
||||||
|
V2MmsOpenApiLedgerApplyBindRequest req = new V2MmsOpenApiLedgerApplyBindRequest();
|
||||||
|
req.setVersion("2.0");
|
||||||
|
String orderNo = StringUtils.genLklOrderNo(8); // 8位随机数
|
||||||
|
req.setOrderNo(orderNo);
|
||||||
|
req.setOrgCode(orgCode);
|
||||||
|
req.setMerInnerNo(paramsJSON.getStr("merInnerNo"));
|
||||||
|
req.setMerCupNo(paramsJSON.getStr("merCupNo"));
|
||||||
|
req.setReceiverNo(paramsJSON.getStr("receiverNo"));
|
||||||
|
|
||||||
|
String fileName = paramsJSON.getStr("entrustFileName");
|
||||||
|
req.setEntrustFileName(fileName);
|
||||||
|
// 文件上传到拉卡拉服务器
|
||||||
|
JSONObject fileUploadResp = uploadFile(orderNo, "SPLIT_ENTRUST_FILE", StringUtils.getFileExt(fileName), paramsJSON.getStr("splitEntrustFile"));
|
||||||
|
if (fileUploadResp == null || StrUtil.isBlank(fileUploadResp.getStr("attFileId"))) {
|
||||||
|
throw new ApiException(I18nUtil._("合作协议上传失败!"));
|
||||||
|
}
|
||||||
|
|
||||||
|
String entrustFilePath = fileUploadResp.getStr("attFileId");
|
||||||
|
req.setEntrustFilePath(entrustFilePath);
|
||||||
|
|
||||||
|
String retUrl = projectDomain + "/mobile/pay/lakala/ledger/applyLedgerMerReceiverBindNotify";
|
||||||
|
req.setRetUrl(retUrl);
|
||||||
|
|
||||||
|
paramsJSON.set("orderNo", orderNo);
|
||||||
|
paramsJSON.set("version", "2.0");
|
||||||
|
paramsJSON.set("ret_url", retUrl);
|
||||||
|
paramsJSON.set("org_code", orgCode);
|
||||||
|
paramsJSON.set("entrust_file_name", entrustFilePath);
|
||||||
|
|
||||||
|
try {
|
||||||
|
//3. 发送请求
|
||||||
|
String responseStr = LKLSDK.httpPost(req);
|
||||||
|
|
||||||
|
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
|
||||||
|
if (lakalaRespJSON == null || !lakalaRespJSON.getStr("retCode").equals("000000")) {
|
||||||
|
throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
|
||||||
|
// responseStr="{'retCode':'000000','retMsg':'申请已受理,请等待审核结果','respData':{'version':'1.0','orderNo':'KFPT20230223181025407788734','orgCode':'1','applyId':681201215598657536}}";
|
||||||
|
// lakalaRespJSON = JSONUtil.parseObj(responseStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
paramsJSON.set("apply_id", lakalaRespJSON.getByPath("respData.applyId"));
|
||||||
|
paramsJSON.set("remark", lakalaRespJSON.getStr("retMsg"));
|
||||||
|
paramsJSON.set("audit_status_text", paramsJSON.get("remark"));
|
||||||
|
|
||||||
|
// 新增数据
|
||||||
|
// 将 JSON 对象的键名转换为下划线命名
|
||||||
|
LklLedgerMerReceiverBind lklLedgerMerReceiverBind = JSONUtil.toBean(StringUtils.convertCamelToSnake(paramsJSON.toString()), LklLedgerMerReceiverBind.class);
|
||||||
|
lklLedgerMerReceiverBindService.saveOrUpdateByReceiverNo(lklLedgerMerReceiverBind);
|
||||||
|
|
||||||
|
return CommonResult.success(null, "提交成功,待审核中!");
|
||||||
|
} catch (SDKException e) {
|
||||||
|
log.error("分账绑定关系申请失败:", e);
|
||||||
|
throw new ApiException(I18nUtil._("分账绑定关系申请失败!"), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账关系绑定申请回调
|
||||||
|
* 参考:https://o.lakala.com/#/home/document/detail?id=379
|
||||||
|
*
|
||||||
|
* @param paramsJSON
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public JSONObject applyLedgerMerReceiverBindNotify(JSONObject paramsJSON) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,14 +8,39 @@
|
|||||||
|
|
||||||
package com.suisung.mall.pay.service.impl;
|
package com.suisung.mall.pay.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.suisung.mall.common.modules.lakala.LklLedgerMember;
|
import com.suisung.mall.common.modules.lakala.LklLedgerMember;
|
||||||
import com.suisung.mall.common.modules.pay.PayConsumeTrade;
|
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.LklLedgerMemberMapper;
|
import com.suisung.mall.pay.mapper.LklLedgerMemberMapper;
|
||||||
import com.suisung.mall.pay.mapper.PayConsumeTradeMapper;
|
|
||||||
import com.suisung.mall.pay.service.LklLedgerMemberService;
|
import com.suisung.mall.pay.service.LklLedgerMemberService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class LklLedgerMemberServiceImpl extends BaseServiceImpl<LklLedgerMemberMapper, LklLedgerMember> implements LklLedgerMemberService {
|
public class LklLedgerMemberServiceImpl extends BaseServiceImpl<LklLedgerMemberMapper, LklLedgerMember> implements LklLedgerMemberService {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据银联商户号新增或修改记录
|
||||||
|
*
|
||||||
|
* @param record
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean saveOrUpdateByMerCupNo(LklLedgerMember record) {
|
||||||
|
if (record == null || StrUtil.isBlank(record.getMer_cup_no())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryWrapper<LklLedgerMember> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("mer_cup_no", record.getMer_cup_no());
|
||||||
|
LklLedgerMember existsRecord = getOne(queryWrapper);
|
||||||
|
if (existsRecord != null) {
|
||||||
|
// update
|
||||||
|
record.setId(existsRecord.getId());
|
||||||
|
return updateById(record);
|
||||||
|
}
|
||||||
|
|
||||||
|
return save(record);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||||
|
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
|
||||||
|
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
|
||||||
|
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
|
||||||
|
* Vestibulum commodo. Ut rhoncus gravida arcu.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.suisung.mall.pay.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.suisung.mall.common.modules.lakala.LklLedgerMerReceiverBind;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
|
import com.suisung.mall.pay.mapper.LklLedgerMerReceiverBindMapper;
|
||||||
|
import com.suisung.mall.pay.service.LklLedgerMerReceiverBindService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class LklLedgerMerReceiverBindServiceImpl extends BaseServiceImpl<LklLedgerMerReceiverBindMapper, LklLedgerMerReceiverBind> implements LklLedgerMerReceiverBindService {
|
||||||
|
/**
|
||||||
|
* 根据接收方编号新增或更新记录
|
||||||
|
*
|
||||||
|
* @param record
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean saveOrUpdateByReceiverNo(LklLedgerMerReceiverBind record) {
|
||||||
|
if (record == null || StrUtil.isBlank(record.getReceiver_no())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryWrapper<LklLedgerMerReceiverBind> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("mer_cup_no", record.getMer_cup_no());
|
||||||
|
queryWrapper.eq("receiver_no", record.getReceiver_no());
|
||||||
|
LklLedgerMerReceiverBind existsRecord = getOne(queryWrapper);
|
||||||
|
if (existsRecord != null) {
|
||||||
|
// update
|
||||||
|
record.setId(existsRecord.getId());
|
||||||
|
return updateById(record);
|
||||||
|
}
|
||||||
|
|
||||||
|
return save(record);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||||
|
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
|
||||||
|
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
|
||||||
|
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
|
||||||
|
* Vestibulum commodo. Ut rhoncus gravida arcu.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.suisung.mall.pay.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.suisung.mall.common.modules.lakala.LklLedgerReceiver;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
|
import com.suisung.mall.pay.mapper.LklLedgerReceiverMapper;
|
||||||
|
import com.suisung.mall.pay.service.LklLedgerReceiverService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class LklLedgerReceiverServiceImpl extends BaseServiceImpl<LklLedgerReceiverMapper, LklLedgerReceiver> implements LklLedgerReceiverService {
|
||||||
|
/**
|
||||||
|
* 根据接收方编号新增或更新记录
|
||||||
|
*
|
||||||
|
* @param record
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean saveOrUpdateByReceiverNo(LklLedgerReceiver record) {
|
||||||
|
if (record == null || StrUtil.isBlank(record.getReceiver_no())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryWrapper<LklLedgerReceiver> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("receiver_no", record.getReceiver_no());
|
||||||
|
LklLedgerReceiver existsRecord = getOne(queryWrapper);
|
||||||
|
if (existsRecord != null) {
|
||||||
|
// update
|
||||||
|
record.setId(existsRecord.getId());
|
||||||
|
return updateById(record);
|
||||||
|
}
|
||||||
|
|
||||||
|
return save(record);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -14,9 +14,9 @@ import com.suisung.mall.common.exception.ApiUserException;
|
|||||||
import com.suisung.mall.common.feignService.ShopService;
|
import com.suisung.mall.common.feignService.ShopService;
|
||||||
import com.suisung.mall.common.modules.pay.PayBaseRechargeLevel;
|
import com.suisung.mall.common.modules.pay.PayBaseRechargeLevel;
|
||||||
import com.suisung.mall.common.modules.pay.PayConsumeTrade;
|
import com.suisung.mall.common.modules.pay.PayConsumeTrade;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.CheckUtil;
|
import com.suisung.mall.common.utils.CheckUtil;
|
||||||
import com.suisung.mall.common.utils.I18nUtil;
|
import com.suisung.mall.common.utils.I18nUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.PayBaseRechargeLevelMapper;
|
import com.suisung.mall.pay.mapper.PayBaseRechargeLevelMapper;
|
||||||
import com.suisung.mall.pay.service.PayBaseRechargeLevelService;
|
import com.suisung.mall.pay.service.PayBaseRechargeLevelService;
|
||||||
import com.suisung.mall.pay.service.PayConsumeTradeService;
|
import com.suisung.mall.pay.service.PayConsumeTradeService;
|
||||||
@ -64,8 +64,7 @@ public class PayBaseRechargeLevelServiceImpl extends BaseServiceImpl<PayBaseRech
|
|||||||
|
|
||||||
String order_id = null; //将生成去支付的订单编号
|
String order_id = null; //将生成去支付的订单编号
|
||||||
|
|
||||||
if (CheckUtil.isNotEmpty(recharge_level_id))
|
if (CheckUtil.isNotEmpty(recharge_level_id)) {
|
||||||
{
|
|
||||||
PayBaseRechargeLevel recharge_level_row = get(recharge_level_id);
|
PayBaseRechargeLevel recharge_level_row = get(recharge_level_id);
|
||||||
|
|
||||||
if (recharge_level_row == null || (recharge_level_row != null && recharge_level_row.getRecharge_level_value() <= 0)) {
|
if (recharge_level_row == null || (recharge_level_row != null && recharge_level_row.getRecharge_level_value() <= 0)) {
|
||||||
|
|||||||
@ -13,10 +13,10 @@ import com.suisung.mall.common.exception.ApiUserException;
|
|||||||
import com.suisung.mall.common.modules.pay.PayCardHistory;
|
import com.suisung.mall.common.modules.pay.PayCardHistory;
|
||||||
import com.suisung.mall.common.modules.pay.PayCardType;
|
import com.suisung.mall.common.modules.pay.PayCardType;
|
||||||
import com.suisung.mall.common.service.MessageService;
|
import com.suisung.mall.common.service.MessageService;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.CheckUtil;
|
import com.suisung.mall.common.utils.CheckUtil;
|
||||||
import com.suisung.mall.common.utils.I18nUtil;
|
import com.suisung.mall.common.utils.I18nUtil;
|
||||||
import com.suisung.mall.common.utils.excel.EasyExcelUtil;
|
import com.suisung.mall.common.utils.excel.EasyExcelUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.excel.topic.PayCardHistoryTemp;
|
import com.suisung.mall.pay.excel.topic.PayCardHistoryTemp;
|
||||||
import com.suisung.mall.pay.excel.topic.PayCardHistoryTempListener;
|
import com.suisung.mall.pay.excel.topic.PayCardHistoryTempListener;
|
||||||
import com.suisung.mall.pay.mapper.PayCardHistoryMapper;
|
import com.suisung.mall.pay.mapper.PayCardHistoryMapper;
|
||||||
|
|||||||
@ -14,9 +14,9 @@ import com.suisung.mall.common.modules.pay.PayCardInfo;
|
|||||||
import com.suisung.mall.common.modules.pay.PayCardMedia;
|
import com.suisung.mall.common.modules.pay.PayCardMedia;
|
||||||
import com.suisung.mall.common.modules.pay.PayCardType;
|
import com.suisung.mall.common.modules.pay.PayCardType;
|
||||||
import com.suisung.mall.common.modules.product.ShopProductIndex;
|
import com.suisung.mall.common.modules.product.ShopProductIndex;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.I18nUtil;
|
import com.suisung.mall.common.utils.I18nUtil;
|
||||||
import com.suisung.mall.common.utils.constbank.RSAUtil;
|
import com.suisung.mall.common.utils.constbank.RSAUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.PayCardInfoMapper;
|
import com.suisung.mall.pay.mapper.PayCardInfoMapper;
|
||||||
import com.suisung.mall.pay.service.PayCardHistoryService;
|
import com.suisung.mall.pay.service.PayCardHistoryService;
|
||||||
import com.suisung.mall.pay.service.PayCardInfoService;
|
import com.suisung.mall.pay.service.PayCardInfoService;
|
||||||
|
|||||||
@ -14,8 +14,8 @@ import com.suisung.mall.common.domain.UserDto;
|
|||||||
import com.suisung.mall.common.feignService.ShopService;
|
import com.suisung.mall.common.feignService.ShopService;
|
||||||
import com.suisung.mall.common.modules.pay.PayCardType;
|
import com.suisung.mall.common.modules.pay.PayCardType;
|
||||||
import com.suisung.mall.common.modules.store.ShopStoreBase;
|
import com.suisung.mall.common.modules.store.ShopStoreBase;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.CheckUtil;
|
import com.suisung.mall.common.utils.CheckUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.PayCardTypeMapper;
|
import com.suisung.mall.pay.mapper.PayCardTypeMapper;
|
||||||
import com.suisung.mall.pay.service.PayCardHistoryService;
|
import com.suisung.mall.pay.service.PayCardHistoryService;
|
||||||
import com.suisung.mall.pay.service.PayCardTypeService;
|
import com.suisung.mall.pay.service.PayCardTypeService;
|
||||||
|
|||||||
@ -23,10 +23,10 @@ import com.suisung.mall.common.modules.pay.PayConsumeRecord;
|
|||||||
import com.suisung.mall.common.modules.pay.PayConsumeTrade;
|
import com.suisung.mall.common.modules.pay.PayConsumeTrade;
|
||||||
import com.suisung.mall.common.modules.pay.PayUserResource;
|
import com.suisung.mall.common.modules.pay.PayUserResource;
|
||||||
import com.suisung.mall.common.service.MessageService;
|
import com.suisung.mall.common.service.MessageService;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.CSVUtils;
|
import com.suisung.mall.common.utils.CSVUtils;
|
||||||
import com.suisung.mall.common.utils.CheckUtil;
|
import com.suisung.mall.common.utils.CheckUtil;
|
||||||
import com.suisung.mall.common.utils.I18nUtil;
|
import com.suisung.mall.common.utils.I18nUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.PayConsumeDepositMapper;
|
import com.suisung.mall.pay.mapper.PayConsumeDepositMapper;
|
||||||
import com.suisung.mall.pay.service.*;
|
import com.suisung.mall.pay.service.*;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -113,11 +113,11 @@ public class PayConsumeDepositServiceImpl extends BaseServiceImpl<PayConsumeDepo
|
|||||||
// 增加付款时间范围筛选
|
// 增加付款时间范围筛选
|
||||||
String order_date_start = getParameter("order_date_start");
|
String order_date_start = getParameter("order_date_start");
|
||||||
if (CheckUtil.isNotEmpty(order_date_start)) {
|
if (CheckUtil.isNotEmpty(order_date_start)) {
|
||||||
wrapper.gt("deposit_gmt_payment",order_date_start);
|
wrapper.gt("deposit_gmt_payment", order_date_start);
|
||||||
}
|
}
|
||||||
String order_date_end = getParameter("order_date_end");
|
String order_date_end = getParameter("order_date_end");
|
||||||
if (CheckUtil.isNotEmpty(order_date_end)) {
|
if (CheckUtil.isNotEmpty(order_date_end)) {
|
||||||
wrapper.lt("deposit_gmt_payment",order_date_end);
|
wrapper.lt("deposit_gmt_payment", order_date_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map data = payConsumeDepositService.getLists(wrapper, pageNum, pageSize);
|
Map data = payConsumeDepositService.getLists(wrapper, pageNum, pageSize);
|
||||||
@ -600,12 +600,12 @@ public class PayConsumeDepositServiceImpl extends BaseServiceImpl<PayConsumeDepo
|
|||||||
I18nUtil._("支付渠道名称"), I18nUtil._("支付方式"), I18nUtil._("交易状态"),
|
I18nUtil._("支付渠道名称"), I18nUtil._("支付方式"), I18nUtil._("交易状态"),
|
||||||
I18nUtil._("付款时间"), I18nUtil._("卖家户号"), I18nUtil._("卖家支付账号"),
|
I18nUtil._("付款时间"), I18nUtil._("卖家户号"), I18nUtil._("卖家支付账号"),
|
||||||
I18nUtil._("买家支付用户号"), I18nUtil._("买家支付宝账号"), I18nUtil._("买家编号"),
|
I18nUtil._("买家支付用户号"), I18nUtil._("买家支付宝账号"), I18nUtil._("买家编号"),
|
||||||
I18nUtil._("买家昵称"), I18nUtil._("交易金额"),I18nUtil._("收款确认"),
|
I18nUtil._("买家昵称"), I18nUtil._("交易金额"), I18nUtil._("收款确认"),
|
||||||
I18nUtil._("支付状态")};
|
I18nUtil._("支付状态")};
|
||||||
|
|
||||||
UserDto currentUser = getCurrentUser();
|
UserDto currentUser = getCurrentUser();
|
||||||
QueryWrapper<PayConsumeDeposit> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<PayConsumeDeposit> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("store_id",currentUser.getStore_id());
|
queryWrapper.eq("store_id", currentUser.getStore_id());
|
||||||
if (CollectionUtils.isNotEmpty(order_ids)) {
|
if (CollectionUtils.isNotEmpty(order_ids)) {
|
||||||
|
|
||||||
queryWrapper.in("order_id", order_ids);
|
queryWrapper.in("order_id", order_ids);
|
||||||
@ -618,7 +618,7 @@ public class PayConsumeDepositServiceImpl extends BaseServiceImpl<PayConsumeDepo
|
|||||||
// 订单编号, 交易号, 支付渠道
|
// 订单编号, 交易号, 支付渠道
|
||||||
String order_id = Convert.toStr(item.get("order_id"), "");
|
String order_id = Convert.toStr(item.get("order_id"), "");
|
||||||
String deposit_trade_no = Convert.toStr(item.get("deposit_trade_no"), "") + "\t";
|
String deposit_trade_no = Convert.toStr(item.get("deposit_trade_no"), "") + "\t";
|
||||||
String payment_channel_id = Convert.toStr(item.get("payment_channel_id"),"");
|
String payment_channel_id = Convert.toStr(item.get("payment_channel_id"), "");
|
||||||
// 支付渠道名称, 支付方式, 交易状态
|
// 支付渠道名称, 支付方式, 交易状态
|
||||||
String payment_channel_name = Convert.toStr(item.get("payment_channel_name"), "");
|
String payment_channel_name = Convert.toStr(item.get("payment_channel_name"), "");
|
||||||
String deposit_payment_type = Convert.toStr(item.get("deposit_payment_type"), "");
|
String deposit_payment_type = Convert.toStr(item.get("deposit_payment_type"), "");
|
||||||
|
|||||||
@ -17,9 +17,9 @@ import com.suisung.mall.common.feignService.ShopService;
|
|||||||
import com.suisung.mall.common.modules.pay.PayConsumeRecord;
|
import com.suisung.mall.common.modules.pay.PayConsumeRecord;
|
||||||
import com.suisung.mall.common.modules.pay.PayConsumeTrade;
|
import com.suisung.mall.common.modules.pay.PayConsumeTrade;
|
||||||
import com.suisung.mall.common.modules.pay.PayPaymentChannel;
|
import com.suisung.mall.common.modules.pay.PayPaymentChannel;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.CheckUtil;
|
import com.suisung.mall.common.utils.CheckUtil;
|
||||||
import com.suisung.mall.common.utils.MybatisPlusQueryUtil;
|
import com.suisung.mall.common.utils.MybatisPlusQueryUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.PayConsumeRecordMapper;
|
import com.suisung.mall.pay.mapper.PayConsumeRecordMapper;
|
||||||
import com.suisung.mall.pay.service.PayConsumeRecordService;
|
import com.suisung.mall.pay.service.PayConsumeRecordService;
|
||||||
import com.suisung.mall.pay.service.PayConsumeTradeService;
|
import com.suisung.mall.pay.service.PayConsumeTradeService;
|
||||||
|
|||||||
@ -2,8 +2,8 @@ package com.suisung.mall.pay.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import com.suisung.mall.common.modules.pay.PayConsumeTradeCombine;
|
import com.suisung.mall.common.modules.pay.PayConsumeTradeCombine;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.StringUtils;
|
import com.suisung.mall.common.utils.StringUtils;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.PayConsumeTradeCombineMapper;
|
import com.suisung.mall.pay.mapper.PayConsumeTradeCombineMapper;
|
||||||
import com.suisung.mall.pay.service.PayConsumeTradeCombineService;
|
import com.suisung.mall.pay.service.PayConsumeTradeCombineService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|||||||
@ -18,12 +18,11 @@ import com.suisung.mall.common.feignService.AccountService;
|
|||||||
import com.suisung.mall.common.feignService.ShopService;
|
import com.suisung.mall.common.feignService.ShopService;
|
||||||
import com.suisung.mall.common.modules.order.*;
|
import com.suisung.mall.common.modules.order.*;
|
||||||
import com.suisung.mall.common.modules.pay.*;
|
import com.suisung.mall.common.modules.pay.*;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.CheckUtil;
|
import com.suisung.mall.common.utils.CheckUtil;
|
||||||
import com.suisung.mall.common.utils.I18nUtil;
|
import com.suisung.mall.common.utils.I18nUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.PayConsumeTradeMapper;
|
import com.suisung.mall.pay.mapper.PayConsumeTradeMapper;
|
||||||
import com.suisung.mall.pay.service.*;
|
import com.suisung.mall.pay.service.*;
|
||||||
import io.swagger.models.auth.In;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -173,7 +172,7 @@ public class PayConsumeTradeServiceImpl extends BaseServiceImpl<PayConsumeTradeM
|
|||||||
* @param points 积分支付,此处为积分转换的支付额度。
|
* @param points 积分支付,此处为积分转换的支付额度。
|
||||||
* @param credit 信用支付
|
* @param credit 信用支付
|
||||||
* @param redpack 红包支付
|
* @param redpack 红包支付
|
||||||
* todo 没有增量更新数据
|
* todo 没有增量更新数据
|
||||||
*/
|
*/
|
||||||
// todo 优化逻辑
|
// todo 优化逻辑
|
||||||
@Override
|
@Override
|
||||||
@ -943,7 +942,7 @@ public class PayConsumeTradeServiceImpl extends BaseServiceImpl<PayConsumeTradeM
|
|||||||
DateTime dateTime = DateUtil.offsetDay(new Date(), -day_flag);
|
DateTime dateTime = DateUtil.offsetDay(new Date(), -day_flag);
|
||||||
Integer trade_day = DateUtil.dayOfMonth(dateTime);
|
Integer trade_day = DateUtil.dayOfMonth(dateTime);
|
||||||
Integer trade_month = DateUtil.month(dateTime) + 1;
|
Integer trade_month = DateUtil.month(dateTime) + 1;
|
||||||
Integer trade_year = DateUtil.year(dateTime);
|
Integer trade_year = DateUtil.year(dateTime);
|
||||||
queryWrapper.eq("trade_year", trade_year)
|
queryWrapper.eq("trade_year", trade_year)
|
||||||
.eq("trade_day", trade_day)
|
.eq("trade_day", trade_day)
|
||||||
.eq("trade_month", trade_month);
|
.eq("trade_month", trade_month);
|
||||||
@ -1004,7 +1003,7 @@ public class PayConsumeTradeServiceImpl extends BaseServiceImpl<PayConsumeTradeM
|
|||||||
/**
|
/**
|
||||||
* 执行退款操作
|
* 执行退款操作
|
||||||
*
|
*
|
||||||
* @param return_rows 订单信息
|
* @param return_rows 订单信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean doRefund(List<ShopOrderReturn> return_rows) {
|
public boolean doRefund(List<ShopOrderReturn> return_rows) {
|
||||||
@ -1361,9 +1360,10 @@ public class PayConsumeTradeServiceImpl extends BaseServiceImpl<PayConsumeTradeM
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 更改交易订单的订单状态和付款状态
|
* 更改交易订单的订单状态和付款状态
|
||||||
|
*
|
||||||
* @param orderId
|
* @param orderId
|
||||||
* @param orderStateId 空值或0将不更新
|
* @param orderStateId 空值或0将不更新
|
||||||
* @param tradeIsPaid 空值或0将不更新
|
* @param tradeIsPaid 空值或0将不更新
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -1375,22 +1375,22 @@ public class PayConsumeTradeServiceImpl extends BaseServiceImpl<PayConsumeTradeM
|
|||||||
UpdateWrapper<PayConsumeTrade> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<PayConsumeTrade> updateWrapper = new UpdateWrapper<>();
|
||||||
updateWrapper.eq("order_id", orderId);
|
updateWrapper.eq("order_id", orderId);
|
||||||
|
|
||||||
int cnt =0;
|
int cnt = 0;
|
||||||
if(orderStateId != null && orderStateId > 0){
|
if (orderStateId != null && orderStateId > 0) {
|
||||||
updateWrapper.set("order_state_id", orderStateId);
|
updateWrapper.set("order_state_id", orderStateId);
|
||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tradeIsPaid != null && tradeIsPaid > 0){
|
if (tradeIsPaid != null && tradeIsPaid > 0) {
|
||||||
updateWrapper.set("trade_is_paid", tradeIsPaid);
|
updateWrapper.set("trade_is_paid", tradeIsPaid);
|
||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cnt <= 0){
|
if (cnt <= 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return update(updateWrapper);
|
return update(updateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,10 +19,10 @@ import com.suisung.mall.common.modules.order.ShopOrderInfo;
|
|||||||
import com.suisung.mall.common.modules.pay.PayConsumeWithdraw;
|
import com.suisung.mall.common.modules.pay.PayConsumeWithdraw;
|
||||||
import com.suisung.mall.common.modules.pay.PayUserResource;
|
import com.suisung.mall.common.modules.pay.PayUserResource;
|
||||||
import com.suisung.mall.common.pojo.vo.PayConsumeWithdrawOrderVo;
|
import com.suisung.mall.common.pojo.vo.PayConsumeWithdrawOrderVo;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.CheckUtil;
|
import com.suisung.mall.common.utils.CheckUtil;
|
||||||
import com.suisung.mall.common.utils.I18nUtil;
|
import com.suisung.mall.common.utils.I18nUtil;
|
||||||
import com.suisung.mall.common.utils.excel.ExcelUtil;
|
import com.suisung.mall.common.utils.excel.ExcelUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.PayConsumeWithdrawMapper;
|
import com.suisung.mall.pay.mapper.PayConsumeWithdrawMapper;
|
||||||
import com.suisung.mall.pay.service.*;
|
import com.suisung.mall.pay.service.*;
|
||||||
import io.seata.spring.annotation.GlobalTransactional;
|
import io.seata.spring.annotation.GlobalTransactional;
|
||||||
|
|||||||
@ -18,8 +18,8 @@ import com.suisung.mall.common.modules.pay.PayBaseBank;
|
|||||||
import com.suisung.mall.common.modules.pay.PayConsumeWithdraw;
|
import com.suisung.mall.common.modules.pay.PayConsumeWithdraw;
|
||||||
import com.suisung.mall.common.modules.pay.PayUserBankCard;
|
import com.suisung.mall.common.modules.pay.PayUserBankCard;
|
||||||
import com.suisung.mall.common.modules.pay.PayUserResource;
|
import com.suisung.mall.common.modules.pay.PayUserResource;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.I18nUtil;
|
import com.suisung.mall.common.utils.I18nUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.PayUserBankCardMapper;
|
import com.suisung.mall.pay.mapper.PayUserBankCardMapper;
|
||||||
import com.suisung.mall.pay.service.*;
|
import com.suisung.mall.pay.service.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|||||||
@ -27,11 +27,11 @@ import com.suisung.mall.common.modules.pay.PayUserPay;
|
|||||||
import com.suisung.mall.common.modules.pay.PayUserResource;
|
import com.suisung.mall.common.modules.pay.PayUserResource;
|
||||||
import com.suisung.mall.common.modules.user.ShopUserPointsHistory;
|
import com.suisung.mall.common.modules.user.ShopUserPointsHistory;
|
||||||
import com.suisung.mall.common.service.MessageService;
|
import com.suisung.mall.common.service.MessageService;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.CheckUtil;
|
import com.suisung.mall.common.utils.CheckUtil;
|
||||||
import com.suisung.mall.common.utils.I18nUtil;
|
import com.suisung.mall.common.utils.I18nUtil;
|
||||||
import com.suisung.mall.common.utils.MybatisPlusQueryUtil;
|
import com.suisung.mall.common.utils.MybatisPlusQueryUtil;
|
||||||
import com.suisung.mall.common.utils.excel.EasyExcelUtil;
|
import com.suisung.mall.common.utils.excel.EasyExcelUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.excel.topic.UserPayTemp;
|
import com.suisung.mall.pay.excel.topic.UserPayTemp;
|
||||||
import com.suisung.mall.pay.excel.topic.UserPayTempListener;
|
import com.suisung.mall.pay.excel.topic.UserPayTempListener;
|
||||||
import com.suisung.mall.pay.mapper.PayUserResourceMapper;
|
import com.suisung.mall.pay.mapper.PayUserResourceMapper;
|
||||||
|
|||||||
@ -3,8 +3,8 @@ package com.suisung.mall.pay.service.impl;
|
|||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.suisung.mall.common.modules.base.ShopBaseStateCode;
|
import com.suisung.mall.common.modules.base.ShopBaseStateCode;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
|
||||||
import com.suisung.mall.common.utils.I18nUtil;
|
import com.suisung.mall.common.utils.I18nUtil;
|
||||||
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.pay.mapper.ShopBaseStateCodeMapper;
|
import com.suisung.mall.pay.mapper.ShopBaseStateCodeMapper;
|
||||||
import com.suisung.mall.pay.service.ShopBaseStateCodeService;
|
import com.suisung.mall.pay.service.ShopBaseStateCodeService;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
@ -69,7 +69,7 @@ public class ShopBaseStateCodeServiceImpl extends BaseServiceImpl<ShopBaseStateC
|
|||||||
/**
|
/**
|
||||||
* @param code
|
* @param code
|
||||||
* @param type 默认值 "state_code_code"
|
* @param type 默认值 "state_code_code"
|
||||||
* todo 加缓存
|
* todo 加缓存
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getCode(Integer code, String type) {
|
public String getCode(Integer code, String type) {
|
||||||
|
|||||||
@ -0,0 +1,5 @@
|
|||||||
|
<?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.suisung.mall.pay.mapper.LklLedgerMemberMapper">
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
<?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.suisung.mall.pay.mapper.LklLedgerMerReceiverBindMapper">
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
<?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.suisung.mall.pay.mapper.LklLedgerReceiverMapper">
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Loading…
Reference in New Issue
Block a user