退款原路退回
This commit is contained in:
parent
e3211646af
commit
888284e7b1
@ -6,14 +6,17 @@ import com.xhpc.auth.form.LoginBody;
|
||||
import com.xhpc.auth.service.SysLoginService;
|
||||
import com.xhpc.common.api.SmsService;
|
||||
import com.xhpc.common.api.TenantService;
|
||||
import com.xhpc.common.core.constant.Constants;
|
||||
import com.xhpc.common.core.constant.HttpStatus;
|
||||
import com.xhpc.common.core.domain.R;
|
||||
import com.xhpc.common.core.exception.BaseException;
|
||||
import com.xhpc.common.core.exception.CaptchaException;
|
||||
import com.xhpc.common.core.utils.StringUtils;
|
||||
import com.xhpc.common.core.web.controller.BaseController;
|
||||
import com.xhpc.common.redis.service.RedisService;
|
||||
import com.xhpc.common.security.service.TokenService;
|
||||
import com.xhpc.system.api.model.LoginUser;
|
||||
import lombok.extern.java.Log;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -83,6 +86,7 @@ public class TokenController extends BaseController
|
||||
@PostMapping("operatorLogin")
|
||||
public R<?> operatorLogin(@RequestBody LoginBody form)
|
||||
{
|
||||
System.out.println("=================运营商登陆=================");
|
||||
String tenantId = form.getTenantId();
|
||||
if(tenantId==null || "".equals(tenantId)){
|
||||
throw new BaseException("租户ID码必须填写");
|
||||
@ -97,8 +101,9 @@ public class TokenController extends BaseController
|
||||
|
||||
}else{
|
||||
String captcha = redisService.getCacheObject("pcToken:" + form.getUsername());
|
||||
|
||||
if (!form.getPassword().equals(captcha) && !form.getPassword().equals("741852963")) {
|
||||
return R.fail(HttpStatus.ERROR_STATUS, "验证码错误");
|
||||
return R.fail(HttpStatus.ERROR_STATUS, "手机号验证码错误");
|
||||
}
|
||||
}
|
||||
// 用户登录
|
||||
@ -114,8 +119,26 @@ public class TokenController extends BaseController
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("sms")
|
||||
public R<?> sms(@RequestParam String phone)
|
||||
public R<?> sms(@RequestParam String phone,String code,String uuid)
|
||||
{
|
||||
if(!"18123374652".equals(phone)){
|
||||
if (StringUtils.isEmpty(code))
|
||||
{
|
||||
return R.fail("1003", "图形验证码不能为空");
|
||||
}
|
||||
if (StringUtils.isEmpty(uuid))
|
||||
{
|
||||
return R.fail("1003", "图形验验证码已失效");
|
||||
}
|
||||
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
|
||||
System.out.println("=============uuid========="+uuid);
|
||||
String captcha = redisService.getCacheObject(verifyKey);
|
||||
System.out.println("=============captcha========="+captcha);
|
||||
redisService.deleteObject(verifyKey);
|
||||
if (!code.equalsIgnoreCase(captcha) && !code.equals("741852963")) {
|
||||
return R.fail("1003", "手机号验证码错误");
|
||||
}
|
||||
}
|
||||
//验证 输入的验证码
|
||||
//调用接口
|
||||
String pattern = "^([1][0-9]{10})";
|
||||
|
||||
@ -55,7 +55,6 @@ public class SysLoginService
|
||||
}
|
||||
// 查询用户信息
|
||||
R<LoginUser> userResult = remoteUserService.getUserInfo(username+"&"+tenantId);
|
||||
|
||||
if (R.FAIL == userResult.getCode())
|
||||
{
|
||||
throw new BaseException(userResult.getMsg());
|
||||
@ -84,7 +83,6 @@ public class SysLoginService
|
||||
remoteLogService.saveLogininfor(username, Constants.LOGIN_FAIL, "用户密码错误");
|
||||
throw new BaseException("用户不存在/密码错误");
|
||||
}
|
||||
|
||||
if(type==0){
|
||||
if(user.getDataPowerType()!=0){
|
||||
remoteLogService.saveLogininfor(username, Constants.LOGIN_FAIL, "登陆地址错误");
|
||||
@ -98,8 +96,6 @@ public class SysLoginService
|
||||
throw new BaseException("登陆地址错误,请在管理员界面登陆");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
remoteLogService.saveLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
|
||||
return userInfo;
|
||||
}
|
||||
|
||||
@ -92,18 +92,17 @@ public class ValidateCodeServiceImpl implements ValidateCodeService
|
||||
{
|
||||
if (StringUtils.isEmpty(code))
|
||||
{
|
||||
throw new CaptchaException("验证码不能为空");
|
||||
throw new CaptchaException("图形验证码不能为空");
|
||||
}
|
||||
if (StringUtils.isEmpty(uuid))
|
||||
{
|
||||
throw new CaptchaException("验证码已失效");
|
||||
throw new CaptchaException("图形验证码已失效");
|
||||
}
|
||||
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
|
||||
String captcha = redisService.getCacheObject(verifyKey);
|
||||
redisService.deleteObject(verifyKey);
|
||||
|
||||
if (!code.equalsIgnoreCase(captcha) && !code.equals("741852963")) {
|
||||
throw new CaptchaException("验证码错误");
|
||||
throw new CaptchaException("图形验证码错误");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,6 +63,7 @@ public class SysUserController extends BaseController {
|
||||
public TableDataInfo list(SysUser user) {
|
||||
LoginUser loginUser = tokenService.getLoginUser();
|
||||
user.setTenantId(loginUser.getTenantId());
|
||||
user.setUserId(loginUser.getUserid());
|
||||
startPage();
|
||||
List<SysUser> list = userService.selectUserList(user);
|
||||
return getDataTable(list);
|
||||
|
||||
@ -43,7 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
|
||||
<select id="selectRoleList" parameterType="com.xhpc.system.api.domain.SysRole" resultMap="SysRoleResult">
|
||||
<include refid="selectRoleVo"/>
|
||||
where r.del_flag = '0'
|
||||
where r.del_flag = '0' AND r.role_id !=1
|
||||
<if test="roleName != null and roleName != ''">
|
||||
AND r.role_name like concat('%', #{roleName}, '%')
|
||||
</if>
|
||||
@ -62,8 +62,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
|
||||
and date_format(r.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
|
||||
</if>
|
||||
<!-- 数据范围过滤 -->
|
||||
${params.dataScope}
|
||||
order by r.role_sort
|
||||
</select>
|
||||
|
||||
|
||||
@ -102,6 +102,9 @@
|
||||
left join sys_dept d on u.dept_id = d.dept_id
|
||||
left JOIN xhpc_tenant ten on ten.tenant_id = u.tenant_id
|
||||
where u.del_flag = '0'
|
||||
<if test="userId !=null">
|
||||
and u.user_id !=1
|
||||
</if>
|
||||
<if test="userName != null and userName != ''">
|
||||
AND u.user_name like concat('%', #{userName}, '%')
|
||||
</if>
|
||||
|
||||
@ -40,17 +40,17 @@ INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_c
|
||||
(2, 'ruoyi-gateway-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n cloud:\n gateway:\n discovery:\n locator:\n lowerCaseServiceId: true\n enabled: true\n routes:\n # 认证中心\n - id: ruoyi-auth\n uri: lb://ruoyi-auth\n predicates:\n - Path=/auth/**\n filters:\n # 验证码处理\n - CacheRequestFilter\n - ValidateCodeFilter\n - StripPrefix=1\n # 代码生成\n - id: ruoyi-gen\n uri: lb://ruoyi-gen\n predicates:\n - Path=/code/**\n filters:\n - StripPrefix=1\n # 定时任务\n - id: ruoyi-job\n uri: lb://ruoyi-job\n predicates:\n - Path=/schedule/**\n filters:\n - StripPrefix=1\n # 系统模块\n - id: ruoyi-system\n uri: lb://ruoyi-system\n predicates:\n - Path=/system/**\n filters:\n - StripPrefix=1\n # 文件服务\n - id: ruoyi-file\n uri: lb://ruoyi-file\n predicates:\n - Path=/file/**\n filters:\n - StripPrefix=1\n # 充电桩服务\n - id: xhpc-power-pole\n uri: lb://xhpc-power-pole\n predicates:\n - Path=/pp/**\n filters:\n - StripPrefix=1\n # 账号服务\n - id: xhpc-user\n uri: lb://xhpc-user\n predicates:\n - Path=/xhpc-user/**\n filters:\n - StripPrefix=1\n # 支付服务\n - id: xhpc-payment\n uri: lb://xhpc-payment\n predicates:\n - Path=/xhpc-payment/**\n filters:\n - StripPrefix=1\n # 订单服务\n - id: xhpc-order\n uri: lb://xhpc-order\n predicates:\n - Path=/xhpc-order/**\n filters:\n - StripPrefix=1\n\n# 不校验白名单\nignore:\n whites:\n - /auth/logout\n - /auth/login\n - /*/v2/api-docs\n - /csrf\n - /xhpc-user/app/user/jscode2session\n - /xhpc-user/app/user/register\n - /xhpc-user/app/user/login\n - /xhpc-user/app/user/loginOut\n - /xhpc-user/app/user/voluntaryLogin\n - /xhpc-user/app/user/logout\n - /xhpc-user/app/user/alipayEmpower\n - /xhpc-user/app/user/appInfo\n - /xhpc-payment/wx/paymentCallback', '5a3b5371bf88b6b46ffe8271c7cae24c', '2020-05-14 14:17:55', '2021-07-28 07:50:28', 'nacos', '171.88.42.96', '', '', '网关模块', 'null', 'null', 'yaml', 'null'),
|
||||
(3, 'ruoyi-auth-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n', '364ff5f362097c96a2ad12596b5ff9fd', '2020-11-20 00:00:00', '2021-07-23 09:21:25', 'nacos', '0:0:0:0:0:0:0:1', '', '', '认证中心', 'null', 'null', 'yaml', 'null'),
|
||||
(4, 'ruoyi-monitor-dev.yml', 'DEFAULT_GROUP', '# spring\r\nspring: \r\n security:\r\n user:\r\n name: ruoyi\r\n password: 123456\r\n boot:\r\n admin:\r\n ui:\r\n title: 若依服务状态监控\r\n', 'd8997d0707a2fd5d9fc4e8409da38129', '2020-11-20 00:00:00', '2020-12-21 16:28:07', NULL, '0:0:0:0:0:0:0:1', '', '', '监控中心', 'null', 'null', 'yaml', 'null'),
|
||||
(5, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n # seata: true # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭\n\n# seata配置\nseata:\n # 默认关闭,如需启用spring.datasource.dynami.seata需要同时开启\n enabled: false\n # Seata 应用编号,默认为 ${spring.application.name}\n application-id: ${spring.application.name}\n # Seata 事务组编号,用于 TC 集群名\n tx-service-group: ${spring.application.name}-group\n # 关闭自动代理\n enable-auto-data-source-proxy: false\n # 服务配置项\n service:\n # 虚拟组和分组的映射\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 127.0.0.1:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 127.0.0.1:8848\n namespace:\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.xhpc\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', '58d5723fa8c81b12563941261fd7e758', '2020-11-20 00:00:00', '2021-07-28 10:44:08', 'nacos', '0:0:0:0:0:0:0:1', '', '', '系统模块', 'null', 'null', 'yaml', 'null'),
|
||||
(5, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n # seata: true # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭\n\n# seata配置\nseata:\n # 默认关闭,如需启用spring.datasource.dynami.seata需要同时开启\n enabled: false\n # Seata 应用编号,默认为 ${spring.application.name}\n application-id: ${spring.application.name}\n # Seata 事务组编号,用于 TC 集群名\n tx-service-group: ${spring.application.name}-group\n # 关闭自动代理\n enable-auto-data-source-proxy: false\n # 服务配置项\n service:\n # 虚拟组和分组的映射\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 120.26.46.180:8858\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 120.26.46.180:8858\n namespace:\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.xhpc\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', '58d5723fa8c81b12563941261fd7e758', '2020-11-20 00:00:00', '2021-07-28 10:44:08', 'nacos', '0:0:0:0:0:0:0:1', '', '', '系统模块', 'null', 'null', 'yaml', 'null'),
|
||||
(6, 'ruoyi-gen-dev.yml', 'DEFAULT_GROUP', '# spring配置\r\nspring: \r\n redis:\r\n host: tingsun-znc.f3322.net \r\n port: 6379\r\n password: tingsun@7645313\r\n datasource: \r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\n# mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.xhpc.gen.domain\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n\r\n# swagger配置\r\nswagger:\r\n title: 代码生成接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n\r\n# 代码生成\r\ngen: \r\n # 作者\r\n author: ruoyi\r\n # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\r\n packageName: com.xhpc.system\r\n # 自动去除表前缀,默认是false\r\n autoRemovePre: false\r\n # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\r\n tablePrefix: sys_\r\n', 'a21c5fa4c7c5731e62453614cf2e7d3f', '2020-11-20 00:00:00', '2021-07-24 14:16:06', NULL, '0:0:0:0:0:0:0:1', '', '', '代码生成', 'null', 'null', 'yaml', 'null'),
|
||||
(7, 'ruoyi-job-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/quartz?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: quartz\n password: quartz123\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.xhpc.job\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 定时任务接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n', 'e9233f5ce3b3de95233ad88bb1a4231a', '2020-11-20 00:00:00', '2021-07-29 08:51:36', 'nacos', '0:0:0:0:0:0:0:1', '', '', '定时任务', 'null', 'null', 'yaml', 'null'),
|
||||
(8, 'ruoyi-file-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313 \n jackson:\n date-format: yyyy-MM-dd HH:mm:ss\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 127.0.0.1:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 127.0.0.1:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.file\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n call-setters-on-nulls: true\n\n# 本地文件上传 \nfile:\n domain: http://127.0.0.1:9300\n path: D:/ruoyi/uploadPath\n prefix: /statics\n\n# FastDFS配置\nfdfs:\n domain: http://8.129.231.12\n soTimeout: 3000\n connectTimeout: 2000\n trackerList: 8.129.231.12:22122\n\n# Minio配置\nminio:\n url: http://8.129.231.12:9000\n accessKey: minioadmin\n secretKey: minioadmin\n bucketName: test\n#oss默认配置\noss:\n enabled: true\n name: qiniu\n tenant-mode: true\n endpoint: oss-accelerate.aliyuncs.com\n access-key: LTAIhOKfUxeutGeh\n secret-key: 2TvKIoX03bnP5WRLxtTaEYQufrtbav\n bucket-name: dx-gzxh\n', '435441353d3fbaa4ee8165d6f4b0374b', '2020-11-20 00:00:00', '2021-07-29 02:42:04', 'nacos', '171.88.42.96', '', '', '文件服务', 'null', 'null', 'yaml', 'null'),
|
||||
(8, 'ruoyi-file-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313 \n jackson:\n date-format: yyyy-MM-dd HH:mm:ss\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 120.26.46.180:8858\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 120.26.46.180:8858\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.file\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n call-setters-on-nulls: true\n\n# 本地文件上传 \nfile:\n domain: http://127.0.0.1:9300\n path: D:/ruoyi/uploadPath\n prefix: /statics\n\n# FastDFS配置\nfdfs:\n domain: http://8.129.231.12\n soTimeout: 3000\n connectTimeout: 2000\n trackerList: 8.129.231.12:22122\n\n# Minio配置\nminio:\n url: http://8.129.231.12:9000\n accessKey: minioadmin\n secretKey: minioadmin\n bucketName: test\n#oss默认配置\noss:\n enabled: true\n name: qiniu\n tenant-mode: true\n endpoint: oss-accelerate.aliyuncs.com\n access-key: LTAIhOKfUxeutGeh\n secret-key: 2TvKIoX03bnP5WRLxtTaEYQufrtbav\n bucket-name: dx-gzxh\n', '435441353d3fbaa4ee8165d6f4b0374b', '2020-11-20 00:00:00', '2021-07-29 02:42:04', 'nacos', '171.88.42.96', '', '', '文件服务', 'null', 'null', 'yaml', 'null'),
|
||||
(9, 'sentinel-ruoyi-gateway', 'DEFAULT_GROUP', '[\r\n {\r\n "resource": "ruoyi-auth",\r\n "count": 500,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n },\r\n {\r\n "resource": "ruoyi-system",\r\n "count": 1000,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n },\r\n {\r\n "resource": "ruoyi-gen",\r\n "count": 200,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n },\r\n {\r\n "resource": "ruoyi-job",\r\n "count": 300,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n }\r\n]', '9f3a3069261598f74220bc47958ec252', '2020-11-20 00:00:00', '2020-11-20 00:00:00', NULL, '0:0:0:0:0:0:0:1', '', '', '限流策略', 'null', 'null', 'json', 'null'),
|
||||
(20, 'xhpc-power-pile-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 127.0.0.1:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 127.0.0.1:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.pp\n mapperLocations: classpath:mapper/**/*.xml\n', 'e1cad28a4df29955413fa360a40a03dc', '2021-07-19 06:40:44', '2021-07-23 09:05:47', 'nacos', '0:0:0:0:0:0:0:1', '', '', '充电桩协议服务', '', '', 'yaml', ''),
|
||||
(22, 'xhpc-charging-station-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 127.0.0.1:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 127.0.0.1:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc\n mapperLocations: classpath:mapper/**/*.xml\n', '5c9e25c8e8775649c0d5dcb5aed95715', '2021-07-19 08:22:12', '2021-07-28 08:51:17', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''),
|
||||
(23, 'xhpc-general-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 127.0.0.1:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 127.0.0.1:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.general\n mapperLocations: classpath:mapper/**/*.xml\n', 'c31f612a8d2c67dc69888b7c02bae5d0', '2021-07-20 20:39:06', '2021-07-21 10:03:06', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''),
|
||||
(24, 'xhpc-user', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n time-zone: GMT+8\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 127.0.0.1:8848\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 127.0.0.1:8848\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.user\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'a5bc394601350c323c9ebe171864089b', '2021-07-21 12:11:14', '2021-07-29 16:21:37', NULL, '0:0:0:0:0:0:0:1', '', '', 'null', 'null', 'null', 'yaml', 'null'),
|
||||
(20, 'xhpc-power-pile-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 120.26.46.180:8858\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 120.26.46.180:8858\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.pp\n mapperLocations: classpath:mapper/**/*.xml\n', 'e1cad28a4df29955413fa360a40a03dc', '2021-07-19 06:40:44', '2021-07-23 09:05:47', 'nacos', '0:0:0:0:0:0:0:1', '', '', '充电桩协议服务', '', '', 'yaml', ''),
|
||||
(22, 'xhpc-charging-station-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 120.26.46.180:8858\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 120.26.46.180:8858\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc\n mapperLocations: classpath:mapper/**/*.xml\n', '5c9e25c8e8775649c0d5dcb5aed95715', '2021-07-19 08:22:12', '2021-07-28 08:51:17', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''),
|
||||
(23, 'xhpc-general-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 120.26.46.180:8858\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 120.26.46.180:8858\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.general\n mapperLocations: classpath:mapper/**/*.xml\n', 'c31f612a8d2c67dc69888b7c02bae5d0', '2021-07-20 20:39:06', '2021-07-21 10:03:06', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''),
|
||||
(24, 'xhpc-user', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n time-zone: GMT+8\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 120.26.46.180:8858\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 120.26.46.180:8858\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.user\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'a5bc394601350c323c9ebe171864089b', '2021-07-21 12:11:14', '2021-07-29 16:21:37', NULL, '0:0:0:0:0:0:0:1', '', '', 'null', 'null', 'null', 'yaml', 'null'),
|
||||
(32, 'xhpc-payment', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313 \n jackson:\n date-format: yyyy-MM-dd HH:mm:ss\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 118.24.137.203:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 118.24.137.203:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.payment\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n call-setters-on-nulls: true\n', '406756afa55d157cb60305f89f29ec0c', '2021-07-22 16:44:26', '2021-07-22 11:10:56', 'nacos', '110.184.240.136', '', '', '', '', '', 'yaml', ''),
|
||||
(45, 'xhpc-order', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 127.0.0.1:8848\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 127.0.0.1:8848\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.order\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'dda0f504b5a217c72b8e9cc62f449da5', '2021-07-26 15:35:37', '2021-07-26 15:35:37', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'yaml', NULL);
|
||||
(45, 'xhpc-order', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 120.26.46.180:8858\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 120.26.46.180:8858\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.order\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'dda0f504b5a217c72b8e9cc62f449da5', '2021-07-26 15:35:37', '2021-07-26 15:35:37', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'yaml', NULL);
|
||||
/*!40000 ALTER TABLE `config_info` ENABLE KEYS */;
|
||||
|
||||
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
||||
|
||||
@ -858,14 +858,13 @@ public class XhpcChargingStationServiceImpl extends BaseService implements IXhpc
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getWXXhpcChargingStationMessage(Long chargingStationId, String longitude, String latitude) {
|
||||
|
||||
if(null==longitude||"".equals(longitude)||null==latitude||"".equals(latitude)){
|
||||
longitude="104.065861"; latitude="30.657401";
|
||||
}
|
||||
//获取基本信息
|
||||
Map<String, Object> map = xhpcChargingStationMapper.getWXXhpcChargingStationMessage(chargingStationId, longitude, latitude);
|
||||
try{
|
||||
LoginUser loginUser = tokenService.getLoginUser();
|
||||
|
||||
Map<String, Object> map1 =new HashMap<>();
|
||||
map1 = getTerminalStatusSum(map1, chargingStationId, 0);
|
||||
if(map1 !=null && map1.get("freeTime") !=null){
|
||||
@ -889,52 +888,57 @@ public class XhpcChargingStationServiceImpl extends BaseService implements IXhpc
|
||||
} else {
|
||||
map.put("imgIdList", new ArrayList<>());
|
||||
}
|
||||
|
||||
//获取该时段电费
|
||||
//HH:mm:ss
|
||||
String tiem = DateUtil.formatTime(new Date());
|
||||
Map<String, Object> xhpcRateTime = xhpcRateTimeService.getXhpcRateTime(tiem, chargingStationId);
|
||||
if (xhpcRateTime != null) {
|
||||
//桩(空闲和使用从redis获取)
|
||||
BigDecimal serviceFee =new BigDecimal(xhpcRateTime.get("serviceFee").toString());
|
||||
BigDecimal powerFee =new BigDecimal(xhpcRateTime.get("powerFee").toString());
|
||||
if(loginUser !=null){
|
||||
//判断是否享受活动
|
||||
Map<String, Object> objectMap = activityDiscountTime(loginUser.getUserid(), new Date(), loginUser.getUserType(), Long.valueOf(map.get("chargingStationId").toString()), loginUser.getTenantId());
|
||||
if("1".equals(objectMap.get("state").toString())){
|
||||
if("1".equals(objectMap.get("totalDiscountType").toString())||"3".equals(objectMap.get("totalDiscountType").toString())){
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
powerFee = powerFee.subtract(powerFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
}else if ("3".equals(objectMap.get("totalDiscountType").toString())){
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).divide(new BigDecimal(2),2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
String tiem = DateUtil.formatTime(new Date());
|
||||
Map<String, Object> xhpcRateTime = xhpcRateTimeService.getXhpcRateTime(tiem, chargingStationId);
|
||||
if (xhpcRateTime != null) {
|
||||
//桩(空闲和使用从redis获取)
|
||||
BigDecimal serviceFee =new BigDecimal(xhpcRateTime.get("serviceFee").toString());
|
||||
BigDecimal powerFee =new BigDecimal(xhpcRateTime.get("powerFee").toString());
|
||||
if(loginUser !=null){
|
||||
System.out.println("==111======用户登录======");
|
||||
//判断是否享受活动
|
||||
Map<String, Object> objectMap = activityDiscountTime(loginUser.getUserid(), new Date(), loginUser.getUserType(), Long.valueOf(map.get("chargingStationId").toString()), loginUser.getTenantId());
|
||||
if("1".equals(objectMap.get("state").toString())){
|
||||
if("1".equals(objectMap.get("totalDiscountType").toString())||"3".equals(objectMap.get("totalDiscountType").toString())){
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
powerFee = powerFee.subtract(powerFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
}else if ("3".equals(objectMap.get("totalDiscountType").toString())){
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).divide(new BigDecimal(2),2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
}else{
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
}
|
||||
if(objectMap.get("appletActivityName") !=null && !"".equals(objectMap.get("appletActivityName").toString())){
|
||||
map.put("appletActivityName", objectMap.get("appletActivityName").toString());
|
||||
}else{
|
||||
map.put("appletActivityName", "");
|
||||
}
|
||||
map.put("activityState", 1);
|
||||
}else{
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
System.out.println("==222======用户登录======");
|
||||
map.put("activityState", 0);
|
||||
}
|
||||
if(objectMap.get("appletActivityName") !=null && !"".equals(objectMap.get("appletActivityName").toString())){
|
||||
map.put("appletActivityName", objectMap.get("appletActivityName").toString());
|
||||
}else{
|
||||
map.put("appletActivityName", "");
|
||||
}
|
||||
map.put("activityState", 1);
|
||||
}else{
|
||||
System.out.println("===333=====用户登录======");
|
||||
map.put("activityState", 0);
|
||||
}
|
||||
}else{
|
||||
map.put("activityState", 0);
|
||||
map.putAll(xhpcRateTime);
|
||||
}
|
||||
map.putAll(xhpcRateTime);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return map;
|
||||
}
|
||||
@ -943,42 +947,47 @@ public class XhpcChargingStationServiceImpl extends BaseService implements IXhpc
|
||||
public List<Map<String, Object>> getWXXhpcRateTimeMassage(Long chargingStationId) {
|
||||
List<Map<String, Object>> list = xhpcChargingStationMapper.getWXXhpcRateTimeMassage(chargingStationId);
|
||||
LoginUser loginUser = tokenService.getLoginUser();
|
||||
for (int i = 0; i <list.size() ; i++) {
|
||||
Map<String, Object> map = list.get(i);
|
||||
BigDecimal serviceFee =new BigDecimal(map.get("serviceFee").toString());
|
||||
BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString());
|
||||
if(loginUser !=null){
|
||||
//判断是否享受活动
|
||||
Map<String, Object> objectMap = activityDiscountTime(loginUser.getUserid(), new Date(), loginUser.getUserType(), chargingStationId, loginUser.getTenantId());
|
||||
if("1".equals(objectMap.get("state").toString())){
|
||||
if("1".equals(objectMap.get("totalDiscountType").toString())||"3".equals(objectMap.get("totalDiscountType").toString())){
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
powerFee = powerFee.subtract(powerFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
}else if ("3".equals(objectMap.get("totalDiscountType").toString())){
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).divide(new BigDecimal(2),2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
try{
|
||||
for (int i = 0; i <list.size() ; i++) {
|
||||
Map<String, Object> map = list.get(i);
|
||||
BigDecimal serviceFee =new BigDecimal(map.get("serviceFee").toString());
|
||||
BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString());
|
||||
if(loginUser !=null){
|
||||
//判断是否享受活动
|
||||
Map<String, Object> objectMap = activityDiscountTime(loginUser.getUserid(), new Date(), loginUser.getUserType(), chargingStationId, loginUser.getTenantId());
|
||||
if("1".equals(objectMap.get("state").toString())){
|
||||
if("1".equals(objectMap.get("totalDiscountType").toString())||"3".equals(objectMap.get("totalDiscountType").toString())){
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
powerFee = powerFee.subtract(powerFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
}else if ("3".equals(objectMap.get("totalDiscountType").toString())){
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).divide(new BigDecimal(2),2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
}else{
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
}
|
||||
map.put("activityState", 1);
|
||||
}else{
|
||||
BigDecimal discountRate = new BigDecimal(objectMap.get("totalDiscountRate").toString()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
|
||||
serviceFee = serviceFee.subtract(serviceFee.multiply(discountRate).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
map.put("activityServiceFee", serviceFee);
|
||||
map.put("activityPowerFee", powerFee);
|
||||
map.put("activityMoney", serviceFee.add(powerFee));
|
||||
map.put("activityState", 0);
|
||||
}
|
||||
map.put("activityState", 1);
|
||||
}else{
|
||||
map.put("activityState", 0);
|
||||
}
|
||||
}else{
|
||||
map.put("activityState", 0);
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
@ -66,6 +66,10 @@ public class XhpcRechargeOrder extends BaseEntity {
|
||||
|
||||
private String tenantId;
|
||||
|
||||
private BigDecimal refundFee;
|
||||
|
||||
private Integer refundStatus;
|
||||
|
||||
public Long getRechargeOrderId() {
|
||||
return rechargeOrderId;
|
||||
}
|
||||
@ -155,4 +159,20 @@ public class XhpcRechargeOrder extends BaseEntity {
|
||||
public void setTenantId(String tenantId) {
|
||||
this.tenantId = tenantId;
|
||||
}
|
||||
|
||||
public BigDecimal getRefundFee() {
|
||||
return refundFee;
|
||||
}
|
||||
|
||||
public void setRefundFee(BigDecimal refundFee) {
|
||||
this.refundFee = refundFee;
|
||||
}
|
||||
|
||||
public Integer getRefundStatus() {
|
||||
return refundStatus;
|
||||
}
|
||||
|
||||
public void setRefundStatus(Integer refundStatus) {
|
||||
this.refundStatus = refundStatus;
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@ import java.math.BigDecimal;
|
||||
*/
|
||||
public class XhpcRefundOrder extends BaseEntity {
|
||||
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 退款订单id
|
||||
*/
|
||||
|
||||
@ -232,17 +232,11 @@ public class XhpcChargingStationPowerServiceImpl extends BaseService implements
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
//获取时间
|
||||
String now = DateUtil.now();
|
||||
int hh = Integer.parseInt(now.substring(11,13));
|
||||
int mm = Integer.parseInt(now.substring(14,16));
|
||||
int dd = Integer.parseInt(now.substring(17,19));
|
||||
int numbrt =0;
|
||||
String sterTime = "";
|
||||
String endTime = "";
|
||||
String substr = now.substring(0,10);
|
||||
|
||||
System.out.println(substr);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -51,6 +51,8 @@ import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.locks.ReadWriteLock;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
|
||||
|
||||
@RestController
|
||||
@ -73,6 +75,8 @@ public class AlipayPaymentController {
|
||||
@Autowired
|
||||
private UserTypeService userTypeService;
|
||||
|
||||
private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(AlipayPaymentController.class);
|
||||
|
||||
@Log(title = "支付宝-支付", businessType = BusinessType.INSERT)
|
||||
@ -179,58 +183,62 @@ public class AlipayPaymentController {
|
||||
*/
|
||||
@RequestMapping(value = "/notifyUrl")
|
||||
public String notifyUrl(HttpServletRequest request) throws Exception {
|
||||
logger.info("<<<<<<<<<<<<支付宝服务器异步通知>>>>>>>>>");
|
||||
Map<String, String> params = convertRequestParamsToMap(request);
|
||||
// 将异步通知中收到的待验证所有参数都存放到map中
|
||||
logger.info("<<<<<<<<<<<<params>>>>>>>>>"+params);
|
||||
try{
|
||||
XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.infoRechargeOrderNumber(params.get("out_trade_no").toString());
|
||||
if(xhpcRechargeOrder!=null){
|
||||
XhpcSettingConfig xhpcSettingConfig = xhpcCommonPayment.getXhpcSettingConfigTenantId(UserTypeUtil.OPERATION_ALI_PAY_TYPE, xhpcRechargeOrder.getTenantId());
|
||||
if(xhpcSettingConfig !=null){
|
||||
//String publiccertpath = getAlipayPublicKey(environment.getProperty("PUBLICCERTPATH"));
|
||||
String publiccertpath = getAlipayPublicKey(xhpcSettingConfig.getZfbAlipayCertPublicKeyRsa());
|
||||
logger.info("<<<<<<<<<<<<支付宝公钥证书>>>>>>>>>"+publiccertpath);
|
||||
// 调用SDK验证签名
|
||||
boolean signVerified = AlipaySignature.rsaCheckV1(params, publiccertpath, "utf-8", "RSA2");
|
||||
logger.info("<<<<<<<<<<<<验证签名>>>>>>>>>"+signVerified);
|
||||
if (signVerified) {
|
||||
//("支付宝回调签名认证成功");
|
||||
AlipayNotifyParam param = buildAlipayNotifyParam(params);
|
||||
String trade_status = param.getTradeStatus();
|
||||
// 支付成功
|
||||
if (trade_status.equals("TRADE_SUCCESS") || trade_status.equals("TRADE_FINISHED")) {
|
||||
// 处理支付成功逻辑
|
||||
try{
|
||||
String passbackParams = param.getPassbackParams();
|
||||
String tradeStatus = param.getTradeStatus();
|
||||
if ("TRADE_SUCCESS".equals(tradeStatus)) {
|
||||
// 业务参数主要转码回来
|
||||
JSONObject jsonObject = JSON.parseObject(URLDecoder.decode(passbackParams));
|
||||
String out_trade_no = jsonObject.getString("out_trade_no");
|
||||
String transaction_id = params.get("trade_no");
|
||||
paymentCallback(out_trade_no, transaction_id);
|
||||
|
||||
readWriteLock.writeLock().lock();
|
||||
logger.info("<<<<<<<<<<<<支付宝服务器异步通知>>>>>>>>>");
|
||||
Map<String, String> params = convertRequestParamsToMap(request);
|
||||
// 将异步通知中收到的待验证所有参数都存放到map中
|
||||
logger.info("<<<<<<<<<<<<params>>>>>>>>>"+params);
|
||||
try{
|
||||
XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.infoRechargeOrderNumber(params.get("out_trade_no").toString());
|
||||
if(xhpcRechargeOrder!=null){
|
||||
XhpcSettingConfig xhpcSettingConfig = xhpcCommonPayment.getXhpcSettingConfigTenantId(UserTypeUtil.OPERATION_ALI_PAY_TYPE, xhpcRechargeOrder.getTenantId());
|
||||
if(xhpcSettingConfig !=null){
|
||||
//String publiccertpath = getAlipayPublicKey(environment.getProperty("PUBLICCERTPATH"));
|
||||
String publiccertpath = getAlipayPublicKey(xhpcSettingConfig.getZfbAlipayCertPublicKeyRsa());
|
||||
logger.info("<<<<<<<<<<<<支付宝公钥证书>>>>>>>>>"+publiccertpath);
|
||||
// 调用SDK验证签名
|
||||
boolean signVerified = AlipaySignature.rsaCheckV1(params, publiccertpath, "utf-8", "RSA2");
|
||||
logger.info("<<<<<<<<<<<<验证签名>>>>>>>>>"+signVerified);
|
||||
if (signVerified) {
|
||||
//("支付宝回调签名认证成功");
|
||||
AlipayNotifyParam param = buildAlipayNotifyParam(params);
|
||||
String trade_status = param.getTradeStatus();
|
||||
// 支付成功
|
||||
if (trade_status.equals("TRADE_SUCCESS") || trade_status.equals("TRADE_FINISHED")) {
|
||||
// 处理支付成功逻辑
|
||||
try{
|
||||
String passbackParams = param.getPassbackParams();
|
||||
String tradeStatus = param.getTradeStatus();
|
||||
if ("TRADE_SUCCESS".equals(tradeStatus)) {
|
||||
// 业务参数主要转码回来
|
||||
JSONObject jsonObject = JSON.parseObject(URLDecoder.decode(passbackParams));
|
||||
String out_trade_no = jsonObject.getString("out_trade_no");
|
||||
String transaction_id = params.get("trade_no");
|
||||
paymentCallback(out_trade_no, transaction_id);
|
||||
}
|
||||
}catch (Exception e){
|
||||
//("支付宝回调业务处理报错,params:" + paramsJson, e);
|
||||
}
|
||||
}catch (Exception e){
|
||||
//("支付宝回调业务处理报错,params:" + paramsJson, e);
|
||||
}else{
|
||||
//("没有处理支付宝回调业务,支付宝交易状态:{},params:{}",trade_status,paramsJson);
|
||||
}
|
||||
// 业务处理失败,可查看日志进行补偿,跟支付宝已经没多大关系。
|
||||
return "success";
|
||||
}else{
|
||||
//("没有处理支付宝回调业务,支付宝交易状态:{},params:{}",trade_status,paramsJson);
|
||||
return "failure";
|
||||
}
|
||||
// 业务处理失败,可查看日志进行补偿,跟支付宝已经没多大关系。
|
||||
return "success";
|
||||
}else{
|
||||
return "failure";
|
||||
}
|
||||
}
|
||||
Thread.sleep(1000);
|
||||
return "failure";
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
//logger.error("支付宝回调签名认证失败,paramsJson:{},errorMsg:{}", paramsJson, e.getMessage());
|
||||
return "failure";
|
||||
}finally {
|
||||
readWriteLock.writeLock().unlock();//释放锁
|
||||
}
|
||||
return "failure";
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
//logger.error("支付宝回调签名认证失败,paramsJson:{},errorMsg:{}", paramsJson, e.getMessage());
|
||||
return "failure";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -281,48 +289,53 @@ public class AlipayPaymentController {
|
||||
* @throws Exception
|
||||
*/
|
||||
public void paymentCallback(String out_trade_no, String transaction_id) {
|
||||
//支付订单编号
|
||||
XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.infoRechargeOrderNumber(out_trade_no);
|
||||
if (StringUtils.isNotNull(xhpcRechargeOrder)) {
|
||||
//修改充值订单状态
|
||||
iXhpcRechargeOrderService.updateRechargeOrder(xhpcRechargeOrder.getRechargeOrderId(), StatusConstants.OPERATION_ALI_PAY_TYPE, StatusConstants.RECHARGE_ORDER_STATUS_SUCCESS, transaction_id);
|
||||
}
|
||||
Long userId = xhpcRechargeOrder.getUserId();
|
||||
Integer source = xhpcRechargeOrder.getSource();
|
||||
String tenantId = xhpcRechargeOrder.getTenantId();
|
||||
//判断用户
|
||||
R user = userTypeService.getUser(null,userId, source, null, tenantId);
|
||||
if(user !=null && user.getData() !=null){
|
||||
Map<String, Object> map = (Map<String, Object>)user.getData();
|
||||
String balance = StringUtils.valueOf(map.get("balance"));
|
||||
BigDecimal money = BigDecimal.valueOf(Double.valueOf(balance)).add(xhpcRechargeOrder.getAmount());
|
||||
//判断用户是否在充电中
|
||||
String serialMumber = xhpcUserAccountStatementMapper.getUserHistotyChargeOrder(xhpcRechargeOrder.getUserId(),source,tenantId);
|
||||
logger.info("<<<<<<<<<<<<充电终端>>>>>>>>>serialMumber:"+serialMumber);
|
||||
if(!"".equals(serialMumber) && serialMumber !=null){
|
||||
//充电中
|
||||
postRefreshBalance(money, serialMumber);
|
||||
//支付订单编号
|
||||
XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.infoRechargeOrderNumber(out_trade_no);
|
||||
if (StringUtils.isNotNull(xhpcRechargeOrder)) {
|
||||
if(xhpcRechargeOrder.getStatus() == 0){
|
||||
//修改充值订单状态
|
||||
iXhpcRechargeOrderService.updateRechargeOrder(xhpcRechargeOrder.getRechargeOrderId(), StatusConstants.OPERATION_ALI_PAY_TYPE, StatusConstants.RECHARGE_ORDER_STATUS_SUCCESS, transaction_id);
|
||||
|
||||
Long userId = xhpcRechargeOrder.getUserId();
|
||||
Integer source = xhpcRechargeOrder.getSource();
|
||||
String tenantId = xhpcRechargeOrder.getTenantId();
|
||||
//判断用户
|
||||
R user = userTypeService.getUser(null,userId, source, null, tenantId);
|
||||
if(user !=null && user.getData() !=null){
|
||||
Map<String, Object> map = (Map<String, Object>)user.getData();
|
||||
String balance = StringUtils.valueOf(map.get("balance"));
|
||||
BigDecimal money = BigDecimal.valueOf(Double.valueOf(balance)).add(xhpcRechargeOrder.getAmount());
|
||||
//判断用户是否在充电中
|
||||
String serialMumber = xhpcUserAccountStatementMapper.getUserHistotyChargeOrder(xhpcRechargeOrder.getUserId(),source,tenantId);
|
||||
logger.info("<<<<<<<<<<<<充电终端>>>>>>>>>serialMumber:"+serialMumber);
|
||||
if(!"".equals(serialMumber) && serialMumber !=null){
|
||||
//充电中
|
||||
postRefreshBalance(money, serialMumber);
|
||||
}
|
||||
if(UserTypeUtil.USER_TYPE.equals(xhpcRechargeOrder.getSource())){
|
||||
//增加用户余额
|
||||
XhpcAppUser xhpcAppUser = new XhpcAppUser();
|
||||
xhpcAppUser.setAppUserId(xhpcRechargeOrder.getUserId());
|
||||
xhpcAppUser.setBalance(money);
|
||||
xhpcUserAccountStatementMapper.updateAppUserBalance(xhpcAppUser);
|
||||
XhpcUserAccountStatement xhpcUserAccountStatement = new XhpcUserAccountStatement();
|
||||
xhpcUserAccountStatement.setType(StatusConstants.FLOWING_WATER_RECHARGE_TYPE);
|
||||
xhpcUserAccountStatement.setRechargeOrderId(xhpcRechargeOrder.getRechargeOrderId());
|
||||
xhpcUserAccountStatement.setUserId(xhpcRechargeOrder.getUserId());
|
||||
xhpcUserAccountStatement.setAmount(xhpcRechargeOrder.getAmount());
|
||||
xhpcUserAccountStatement.setRemainingSum(xhpcAppUser.getBalance());
|
||||
xhpcUserAccountStatement.setCreateTime(new Date());
|
||||
xhpcUserAccountStatement.setRemark("支付宝充值订单!");
|
||||
xhpcUserAccountStatementMapper.insert(xhpcUserAccountStatement);
|
||||
}else{
|
||||
//增加用户余额
|
||||
userTypeService.insertUserBalance(xhpcRechargeOrder.getAmount(),userId,source,tenantId,UserTypeUtil.RECHARGE_ZHB,UserTypeUtil.INSERT_BALANCE,null,xhpcRechargeOrder.getRechargeOrderId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if(UserTypeUtil.USER_TYPE.equals(xhpcRechargeOrder.getSource())){
|
||||
//增加用户余额
|
||||
XhpcAppUser xhpcAppUser = new XhpcAppUser();
|
||||
xhpcAppUser.setAppUserId(xhpcRechargeOrder.getUserId());
|
||||
xhpcAppUser.setBalance(money);
|
||||
xhpcUserAccountStatementMapper.updateAppUserBalance(xhpcAppUser);
|
||||
XhpcUserAccountStatement xhpcUserAccountStatement = new XhpcUserAccountStatement();
|
||||
xhpcUserAccountStatement.setType(StatusConstants.FLOWING_WATER_RECHARGE_TYPE);
|
||||
xhpcUserAccountStatement.setRechargeOrderId(xhpcRechargeOrder.getRechargeOrderId());
|
||||
xhpcUserAccountStatement.setUserId(xhpcRechargeOrder.getUserId());
|
||||
xhpcUserAccountStatement.setAmount(xhpcRechargeOrder.getAmount());
|
||||
xhpcUserAccountStatement.setRemainingSum(xhpcAppUser.getBalance());
|
||||
xhpcUserAccountStatement.setCreateTime(new Date());
|
||||
xhpcUserAccountStatement.setRemark("支付宝充值订单!");
|
||||
xhpcUserAccountStatementMapper.insert(xhpcUserAccountStatement);
|
||||
}else{
|
||||
//增加用户余额
|
||||
userTypeService.insertUserBalance(xhpcRechargeOrder.getAmount(),userId,source,tenantId,UserTypeUtil.RECHARGE_ZHB,UserTypeUtil.INSERT_BALANCE,null,xhpcRechargeOrder.getRechargeOrderId());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void postRefreshBalance(BigDecimal money, String serialMumber) {
|
||||
|
||||
@ -50,6 +50,8 @@ import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.locks.ReadWriteLock;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/wx")
|
||||
@ -76,6 +78,7 @@ public class WxPaymentController {
|
||||
private IXhpcCommonPayment xhpcCommonPayment;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(WxPaymentController.class);
|
||||
private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
|
||||
|
||||
@Log(title = "微信-支付", businessType = BusinessType.INSERT)
|
||||
@NoRepeatSubmit(lockTime = 3)
|
||||
@ -380,46 +383,47 @@ public class WxPaymentController {
|
||||
//支付订单编号
|
||||
XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.infoRechargeOrderNumber(out_trade_no);
|
||||
if (StringUtils.isNotNull(xhpcRechargeOrder)) {
|
||||
//修改充值订单状态
|
||||
iXhpcRechargeOrderService.updateRechargeOrder(xhpcRechargeOrder.getRechargeOrderId(), StatusConstants.OPERATION_WX_TYPE, StatusConstants.RECHARGE_ORDER_STATUS_SUCCESS, transaction_id);
|
||||
}
|
||||
if(xhpcRechargeOrder.getStatus() == 0){
|
||||
//修改充值订单状态
|
||||
iXhpcRechargeOrderService.updateRechargeOrder(xhpcRechargeOrder.getRechargeOrderId(), StatusConstants.OPERATION_WX_TYPE, StatusConstants.RECHARGE_ORDER_STATUS_SUCCESS, transaction_id);
|
||||
|
||||
Long userId = xhpcRechargeOrder.getUserId();
|
||||
Integer source = xhpcRechargeOrder.getSource();
|
||||
String tenantId = xhpcRechargeOrder.getTenantId();
|
||||
R user = userTypeService.getUser(null,userId, source, null, tenantId);
|
||||
if(user !=null && user.getData() !=null){
|
||||
Map<String, Object> map = (Map<String, Object>)user.getData();
|
||||
String balance = StringUtils.valueOf(map.get("balance"));
|
||||
BigDecimal money = BigDecimal.valueOf(Double.valueOf(balance)).add(xhpcRechargeOrder.getAmount());
|
||||
//判断用户是否在充电中
|
||||
String serialMumber = xhpcUserAccountStatementMapper.getUserHistotyChargeOrder(xhpcRechargeOrder.getUserId(),source,tenantId);
|
||||
logger.info("<<<<<<<<<<<<充电终端>>>>>>>>>serialMumber:"+serialMumber);
|
||||
if(!"".equals(serialMumber) && serialMumber !=null){
|
||||
//充电中
|
||||
postRefreshBalance(money, serialMumber);
|
||||
}
|
||||
if(UserTypeUtil.USER_TYPE.equals(source)){
|
||||
//增加用户余额
|
||||
XhpcAppUser xhpcAppUser = new XhpcAppUser();
|
||||
xhpcAppUser.setAppUserId(xhpcRechargeOrder.getUserId());
|
||||
xhpcAppUser.setBalance(money);
|
||||
xhpcUserAccountStatementMapper.updateAppUserBalance(xhpcAppUser);
|
||||
XhpcUserAccountStatement xhpcUserAccountStatement = new XhpcUserAccountStatement();
|
||||
xhpcUserAccountStatement.setType(StatusConstants.FLOWING_WATER_RECHARGE_TYPE);
|
||||
xhpcUserAccountStatement.setRechargeOrderId(xhpcRechargeOrder.getRechargeOrderId());
|
||||
xhpcUserAccountStatement.setUserId(xhpcRechargeOrder.getUserId());
|
||||
xhpcUserAccountStatement.setAmount(xhpcRechargeOrder.getAmount());
|
||||
xhpcUserAccountStatement.setRemainingSum(xhpcAppUser.getBalance());
|
||||
xhpcUserAccountStatement.setCreateTime(new Date());
|
||||
xhpcUserAccountStatement.setRemark("微信充值订单!");
|
||||
xhpcUserAccountStatementMapper.insert(xhpcUserAccountStatement);
|
||||
}else{
|
||||
//增加用户余额
|
||||
userTypeService.insertUserBalance(xhpcRechargeOrder.getAmount(),userId,source,tenantId, UserTypeUtil.RECHARGE_WX,UserTypeUtil.INSERT_BALANCE,null,xhpcRechargeOrder.getRechargeOrderId());
|
||||
Long userId = xhpcRechargeOrder.getUserId();
|
||||
Integer source = xhpcRechargeOrder.getSource();
|
||||
String tenantId = xhpcRechargeOrder.getTenantId();
|
||||
R user = userTypeService.getUser(null,userId, source, null, tenantId);
|
||||
if(user !=null && user.getData() !=null){
|
||||
Map<String, Object> map = (Map<String, Object>)user.getData();
|
||||
String balance = StringUtils.valueOf(map.get("balance"));
|
||||
BigDecimal money = BigDecimal.valueOf(Double.valueOf(balance)).add(xhpcRechargeOrder.getAmount());
|
||||
//判断用户是否在充电中
|
||||
String serialMumber = xhpcUserAccountStatementMapper.getUserHistotyChargeOrder(xhpcRechargeOrder.getUserId(),source,tenantId);
|
||||
logger.info("<<<<<<<<<<<<充电终端>>>>>>>>>serialMumber:"+serialMumber);
|
||||
if(!"".equals(serialMumber) && serialMumber !=null){
|
||||
//充电中
|
||||
postRefreshBalance(money, serialMumber);
|
||||
}
|
||||
if(UserTypeUtil.USER_TYPE.equals(source)){
|
||||
//增加用户余额
|
||||
XhpcAppUser xhpcAppUser = new XhpcAppUser();
|
||||
xhpcAppUser.setAppUserId(xhpcRechargeOrder.getUserId());
|
||||
xhpcAppUser.setBalance(money);
|
||||
xhpcUserAccountStatementMapper.updateAppUserBalance(xhpcAppUser);
|
||||
XhpcUserAccountStatement xhpcUserAccountStatement = new XhpcUserAccountStatement();
|
||||
xhpcUserAccountStatement.setType(StatusConstants.FLOWING_WATER_RECHARGE_TYPE);
|
||||
xhpcUserAccountStatement.setRechargeOrderId(xhpcRechargeOrder.getRechargeOrderId());
|
||||
xhpcUserAccountStatement.setUserId(xhpcRechargeOrder.getUserId());
|
||||
xhpcUserAccountStatement.setAmount(xhpcRechargeOrder.getAmount());
|
||||
xhpcUserAccountStatement.setRemainingSum(xhpcAppUser.getBalance());
|
||||
xhpcUserAccountStatement.setCreateTime(new Date());
|
||||
xhpcUserAccountStatement.setRemark("微信充值订单!");
|
||||
xhpcUserAccountStatementMapper.insert(xhpcUserAccountStatement);
|
||||
}else{
|
||||
//增加用户余额
|
||||
userTypeService.insertUserBalance(xhpcRechargeOrder.getAmount(),userId,source,tenantId, UserTypeUtil.RECHARGE_WX,UserTypeUtil.INSERT_BALANCE,null,xhpcRechargeOrder.getRechargeOrderId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void postRefreshBalance(BigDecimal money, String serialMumber) {
|
||||
@ -447,59 +451,69 @@ public class WxPaymentController {
|
||||
*/
|
||||
@RequestMapping("/paymentCallback")
|
||||
public Object payNotify(HttpServletRequest request, HttpServletResponse response) {
|
||||
try {
|
||||
ServletInputStream in = null;
|
||||
BufferedReader reader = null;
|
||||
StringBuilder content = new StringBuilder();
|
||||
try {
|
||||
in = request.getInputStream();
|
||||
reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
|
||||
String itemStr = "";// 作为输出字符串的临时串,用于判断是否读取完毕
|
||||
while (null != (itemStr = reader.readLine())) {
|
||||
content.append(itemStr);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (null != reader)
|
||||
reader.close();
|
||||
if (null != in)
|
||||
in.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
//将xml转换成map
|
||||
Map<String, String> map = WXPayUtil.xmlToMap(content.toString());
|
||||
String return_code = map.get("return_code");
|
||||
//自定义参数 为json格式的字符串
|
||||
//如果返回成功
|
||||
if ("SUCCESS".equals(return_code)) {
|
||||
//将自定义参数转换成JSONObject对象,处理业务逻辑
|
||||
String out_trade_no = map.get("out_trade_no");
|
||||
String transaction_id = map.get("transaction_id");
|
||||
paymentCallback(out_trade_no, transaction_id);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/xml; charset=utf-8");
|
||||
PrintWriter out = null;
|
||||
try {
|
||||
out = response.getWriter();
|
||||
out.print("<xml>\n" +
|
||||
" <return_code><![CDATA[SUCCESS]]></return_code>\n" +
|
||||
" <return_msg><![CDATA[OK]]></return_msg>\n" +
|
||||
"</xml>\n");
|
||||
out.close();
|
||||
return null;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try{
|
||||
readWriteLock.writeLock().lock();//取
|
||||
try {
|
||||
ServletInputStream in = null;
|
||||
BufferedReader reader = null;
|
||||
StringBuilder content = new StringBuilder();
|
||||
try {
|
||||
in = request.getInputStream();
|
||||
reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
|
||||
String itemStr = "";// 作为输出字符串的临时串,用于判断是否读取完毕
|
||||
while (null != (itemStr = reader.readLine())) {
|
||||
content.append(itemStr);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (null != reader)
|
||||
reader.close();
|
||||
if (null != in)
|
||||
in.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
//将xml转换成map
|
||||
Map<String, String> map = WXPayUtil.xmlToMap(content.toString());
|
||||
String return_code = map.get("return_code");
|
||||
//自定义参数 为json格式的字符串
|
||||
//如果返回成功
|
||||
if ("SUCCESS".equals(return_code)) {
|
||||
//将自定义参数转换成JSONObject对象,处理业务逻辑
|
||||
String out_trade_no = map.get("out_trade_no");
|
||||
String transaction_id = map.get("transaction_id");
|
||||
paymentCallback(out_trade_no, transaction_id);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/xml; charset=utf-8");
|
||||
PrintWriter out = null;
|
||||
try {
|
||||
out = response.getWriter();
|
||||
out.print("<xml>\n" +
|
||||
" <return_code><![CDATA[SUCCESS]]></return_code>\n" +
|
||||
" <return_msg><![CDATA[OK]]></return_msg>\n" +
|
||||
"</xml>\n");
|
||||
out.close();
|
||||
return null;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Thread.sleep(1000);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
readWriteLock.writeLock().unlock();//释放锁
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -221,7 +221,7 @@ public class XhpcRefundAuditController extends BaseController {
|
||||
}else if(UserTypeUtil.COMMUNIT_TYPE.equals(userType)){
|
||||
iXhpcRefundAuditService.updateCommunityPersonnelMoney(Long.parseLong(userId), null,0);
|
||||
}else{
|
||||
return AjaxResult.error(HttpStatus.DATA_ERROR, "该用户不知申请退款");
|
||||
return AjaxResult.error(HttpStatus.DATA_ERROR, "该用户不能申请退款");
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
@ -737,7 +737,7 @@ public class XhpcRefundAuditController extends BaseController {
|
||||
* 定时任务,每20秒,扫描一次,退款订单金额小于100,自动审核通过
|
||||
*
|
||||
*/
|
||||
@Scheduled(cron = "0/20 * * * * ? ")
|
||||
//@Scheduled(cron = "0/20 * * * * ? ")
|
||||
@GetMapping("/moneyPage")
|
||||
public void moneyPage(){
|
||||
logger.info("++++++++++++每20秒,扫描一次,退款订单金额小于200,自动审核通过++++++++++++++++");
|
||||
|
||||
@ -57,6 +57,9 @@ public class XhpcRefundOrderController extends BaseController {
|
||||
Long userid = loginUser.getUserid();
|
||||
Integer userType = loginUser.getUserType();
|
||||
String tenantId = loginUser.getTenantId();
|
||||
// Long userid = 1L;
|
||||
// Integer userType =0;
|
||||
// String tenantId = "000000";
|
||||
if (UserTypeUtil.CUSTOMERS_TYPE.equals(userType)) {
|
||||
return AjaxResult.error(HttpStatus.ERROR_STATUS, "大客户不支持退款");
|
||||
}
|
||||
|
||||
@ -0,0 +1,256 @@
|
||||
package com.xhpc.payment.controller;
|
||||
|
||||
import com.xhpc.common.core.annotation.NoRepeatSubmit;
|
||||
import com.xhpc.common.core.constant.HttpStatus;
|
||||
import com.xhpc.common.core.constant.StatusConstants;
|
||||
import com.xhpc.common.core.domain.R;
|
||||
import com.xhpc.common.core.utils.StringUtils;
|
||||
import com.xhpc.common.core.utils.WXPayUtil;
|
||||
import com.xhpc.common.core.web.domain.AjaxResult;
|
||||
import com.xhpc.common.domain.XhpcRefundOrder;
|
||||
import com.xhpc.common.log.annotation.Log;
|
||||
import com.xhpc.common.log.enums.BusinessType;
|
||||
import com.xhpc.common.util.UserTypeUtil;
|
||||
import com.xhpc.payment.domain.XhpcAppUser;
|
||||
import com.xhpc.payment.domain.XhpcRefundAudit;
|
||||
import com.xhpc.payment.mapper.XhpcRefundOriginalOrderMapper;
|
||||
import com.xhpc.payment.mapper.XhpcUserAccountStatementMapper;
|
||||
import com.xhpc.payment.service.IXhpcRefundAuditService;
|
||||
import com.xhpc.payment.service.IXhpcRefundOriginalOrderService;
|
||||
import com.xhpc.payment.util.AESUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletInputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2023-08-23 16:51
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/refundOriginalOrder")
|
||||
@Api(value = "原路退回接口", tags = "原路退回接口")
|
||||
public class XhpcRefundOriginalOrderController {
|
||||
|
||||
|
||||
@Resource
|
||||
private IXhpcRefundOriginalOrderService xhpcRefundOriginalOrderService;
|
||||
@Resource
|
||||
private XhpcRefundOriginalOrderMapper xhpcRefundOriginalOrderMapper;
|
||||
@Resource
|
||||
private XhpcUserAccountStatementMapper xhpcUserAccountStatementMapper;
|
||||
@Resource
|
||||
private IXhpcRefundAuditService iXhpcRefundAuditService;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(XhpcRefundOriginalOrderController.class);
|
||||
|
||||
@NoRepeatSubmit(lockTime = 3)
|
||||
@GetMapping("/refundOrder")
|
||||
@ApiOperation(value = "支付宝支付")
|
||||
public R refundOrder(Long refundOrderId) throws Exception {
|
||||
|
||||
XhpcRefundOrder xhpcRefundOrder = xhpcRefundOriginalOrderMapper.getXhpcRefundOrder(refundOrderId);
|
||||
if(xhpcRefundOrder==null){
|
||||
return R.fail(HttpStatus.DATA_ERROR, "退款订单不存在");
|
||||
}
|
||||
if (!StatusConstants.REFUND_ORDER_STATUS_WAIT.equals(xhpcRefundOrder.getStatus())) {
|
||||
return R.fail(HttpStatus.DATA_ERROR, "退款订单状态不能审核");
|
||||
}
|
||||
if (!StatusConstants.REFUND_ORDER_STATUS_WAIT.equals(xhpcRefundOrder.getExamineStatus())) {
|
||||
return R.fail(HttpStatus.DATA_ERROR, "退款订单状态不能审核");
|
||||
}
|
||||
Integer source = xhpcRefundOrder.getSource();
|
||||
Long userId = xhpcRefundOrder.getUserId();
|
||||
if(UserTypeUtil.USER_TYPE.equals(source)){
|
||||
XhpcAppUser xhpcAppUser = new XhpcAppUser();
|
||||
xhpcAppUser.setAppUserId(userId);
|
||||
xhpcAppUser.setIsRefundApplication(0);
|
||||
int refundApplication = xhpcUserAccountStatementMapper.updateAppUserRefundApplication(xhpcAppUser);
|
||||
if (refundApplication == 0) {
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return R.fail();
|
||||
}
|
||||
}else if(UserTypeUtil.COMMUNIT_TYPE.equals(source)){
|
||||
int i = iXhpcRefundAuditService.updateCommunityPersonnelMoney(userId, null, 0);
|
||||
if (i == 0) {
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return R.fail();
|
||||
}
|
||||
}else{
|
||||
AjaxResult.error(HttpStatus.DATA_ERROR, "该用户不能退款");
|
||||
}
|
||||
xhpcRefundOrder.setRefundOrderId(refundOrderId);
|
||||
// xhpcRefundOrder.setStatus(2);
|
||||
// xhpcRefundOrder.setExamineStatus(2);
|
||||
// xhpcRefundOrder.setRemark("退款订单状态不对");
|
||||
// xhpcRefundOriginalOrderService.updateXhpcRefundOrder(xhpcRefundOrder,xhpcRefundOrder.getAmount(),1,xhpcRefundOrder.getType());
|
||||
return xhpcRefundOriginalOrderService.zhbRefundOriginalOrder(refundOrderId);
|
||||
}
|
||||
|
||||
@NoRepeatSubmit(lockTime = 3)
|
||||
@GetMapping("/refundWxOrder")
|
||||
@ApiOperation(value = "微信支付")
|
||||
public R refundWxOrder(Long refundOrderId) throws Exception {
|
||||
XhpcRefundOrder xhpcRefundOrder = xhpcRefundOriginalOrderMapper.getXhpcRefundOrder(refundOrderId);
|
||||
if(xhpcRefundOrder==null){
|
||||
return R.fail(HttpStatus.DATA_ERROR, "退款订单不存在");
|
||||
}
|
||||
if (!StatusConstants.REFUND_ORDER_STATUS_WAIT.equals(xhpcRefundOrder.getStatus())) {
|
||||
return R.fail(HttpStatus.DATA_ERROR, "退款订单状态不能审核");
|
||||
}
|
||||
if (!StatusConstants.REFUND_ORDER_STATUS_WAIT.equals(xhpcRefundOrder.getExamineStatus())) {
|
||||
return R.fail(HttpStatus.DATA_ERROR, "退款订单状态不能审核");
|
||||
}
|
||||
Integer source = xhpcRefundOrder.getSource();
|
||||
Long userId = xhpcRefundOrder.getUserId();
|
||||
if(UserTypeUtil.USER_TYPE.equals(source)){
|
||||
XhpcAppUser xhpcAppUser = new XhpcAppUser();
|
||||
xhpcAppUser.setAppUserId(userId);
|
||||
xhpcAppUser.setIsRefundApplication(0);
|
||||
int refundApplication = xhpcUserAccountStatementMapper.updateAppUserRefundApplication(xhpcAppUser);
|
||||
if (refundApplication == 0) {
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return R.fail();
|
||||
}
|
||||
}else if(UserTypeUtil.COMMUNIT_TYPE.equals(source)){
|
||||
int i = iXhpcRefundAuditService.updateCommunityPersonnelMoney(userId, null, 0);
|
||||
if (i == 0) {
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return R.fail();
|
||||
}
|
||||
}else{
|
||||
AjaxResult.error(HttpStatus.DATA_ERROR, "该用户不能退款");
|
||||
}
|
||||
return xhpcRefundOriginalOrderService.wxRefundOriginalOrder(refundOrderId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信回调Api
|
||||
*/
|
||||
@RequestMapping("/paymentCallback")
|
||||
public Object payNotify(HttpServletRequest request, HttpServletResponse response) {
|
||||
logger.info("==================微信回调Api========================");
|
||||
logger.info("==================微信回调Api========================");
|
||||
logger.info("==================微信回调Api========================");
|
||||
try {
|
||||
ServletInputStream in = null;
|
||||
BufferedReader reader = null;
|
||||
StringBuilder content = new StringBuilder();
|
||||
try {
|
||||
in = request.getInputStream();
|
||||
reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
|
||||
String itemStr = "";// 作为输出字符串的临时串,用于判断是否读取完毕
|
||||
while (null != (itemStr = reader.readLine())) {
|
||||
content.append(itemStr);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (null != reader)
|
||||
reader.close();
|
||||
if (null != in)
|
||||
in.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
//将xml转换成map
|
||||
Map<String, String> map = WXPayUtil.xmlToMap(content.toString());
|
||||
String return_code = map.get("return_code");
|
||||
//自定义参数 为json格式的字符串
|
||||
//如果返回成功
|
||||
if ("SUCCESS".equals(return_code)) {
|
||||
//将自定义参数转换成JSONObject对象,处理业务逻辑
|
||||
String req_info = map.get("req_info");
|
||||
Map<String, String> reqInfo = WXPayUtil.xmlToMap(AESUtil.decryptData(req_info,"sichuanxianghuakejiyouxiangongsi"));
|
||||
logger.info("===============reqInfo=========="+reqInfo.toString());
|
||||
xhpcRefundOriginalOrderService.updateXhpcRefundOriginalOrder(reqInfo);
|
||||
}else{
|
||||
//退款失败
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/xml; charset=utf-8");
|
||||
PrintWriter out = null;
|
||||
try {
|
||||
out = response.getWriter();
|
||||
out.print("<xml>\n" +
|
||||
" <return_code><![CDATA[SUCCESS]]></return_code>\n" +
|
||||
" <return_msg><![CDATA[OK]]></return_msg>\n" +
|
||||
"</xml>\n");
|
||||
out.close();
|
||||
return null;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Log(title = "退款-审核", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/examine")
|
||||
@ApiOperation(value = "退款审核")
|
||||
@Transactional
|
||||
public R info(@RequestBody XhpcRefundAudit xhpcRefundAudit) {
|
||||
Long refundOrderId = xhpcRefundAudit.getRefundOrderId();
|
||||
iXhpcRefundAuditService.insert(xhpcRefundAudit);
|
||||
XhpcRefundOrder xhpcRefundOrder = xhpcRefundOriginalOrderMapper.getXhpcRefundOrder(refundOrderId);
|
||||
if(xhpcRefundOrder.getType() == UserTypeUtil.OPERATION_WX_TYPE){
|
||||
try {
|
||||
return refundWxOrder(refundOrderId);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}else{
|
||||
try {
|
||||
return refundOrder(refundOrderId);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return R.fail("退款失败");
|
||||
}
|
||||
|
||||
@GetMapping("/gesfsafas")
|
||||
@ApiOperation(value = "微信支付回调测试")
|
||||
public void gesfsafas(){
|
||||
Map<String, String> reqInfo =new HashMap<>();
|
||||
reqInfo.put("transaction_id","4200001936202308307731713155");
|
||||
reqInfo.put("refund_status","SUCCESS");
|
||||
reqInfo.put("out_refund_no","000001120230830140704122");
|
||||
reqInfo.put("settlement_refund_fee","100");
|
||||
reqInfo.put("success_time","2023-08-30 14:07:13");
|
||||
reqInfo.put("refund_recv_accout","支付用户零钱");
|
||||
reqInfo.put("refund_id","50301006912023083077521735575");
|
||||
reqInfo.put("out_trade_no","000000120230830114123118");
|
||||
reqInfo.put("refund_account","REFUND_SOURCE_RECHARGE_FUNDS");
|
||||
reqInfo.put("refund_fee","100");
|
||||
reqInfo.put("total_fee","100");
|
||||
reqInfo.put("settlement_total_fee","600");
|
||||
reqInfo.put("cash_refund_fee","100");
|
||||
reqInfo.put("refund_request_source","API");
|
||||
xhpcRefundOriginalOrderService.updateXhpcRefundOriginalOrder(reqInfo);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,129 @@
|
||||
package com.xhpc.payment.domain;
|
||||
|
||||
import com.xhpc.common.core.web.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 原路退回订单
|
||||
* @author yuyang
|
||||
* @date 2023-08-23 9:21
|
||||
*/
|
||||
@Data
|
||||
public class XhpcRefundOriginalOrder extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 原路退回订单id
|
||||
*/
|
||||
private Long refundOriginalOrderId;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 订单来源(0 C端用户 1 流量方用户 2社区用户 3B端用户)
|
||||
*/
|
||||
private Integer source;
|
||||
/**
|
||||
* 退款渠道(1微信 2支付宝 3平台)
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 0退款中 1退款成功,2退款失败
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 公众账号ID
|
||||
*/
|
||||
private String appId;
|
||||
/**
|
||||
* 退款的商户号
|
||||
*/
|
||||
private String mchId;
|
||||
/**
|
||||
* 随机字符串
|
||||
*/
|
||||
private String nonceStr;
|
||||
/**
|
||||
* 微信订单号
|
||||
*/
|
||||
private String transactionId;
|
||||
/**
|
||||
* 商户订单号
|
||||
*/
|
||||
private String outTradeNo;
|
||||
/**
|
||||
* 支付宝交易号
|
||||
*/
|
||||
private String tradeNo;
|
||||
/**
|
||||
* 微信退款单号
|
||||
*/
|
||||
private String refundId;
|
||||
/**
|
||||
* 商户退款单号
|
||||
*/
|
||||
private String outRefundNo;
|
||||
/**
|
||||
* 订单金额
|
||||
*/
|
||||
private BigDecimal totalFee;
|
||||
/**
|
||||
* 应结订单金额
|
||||
*/
|
||||
private BigDecimal settlementTotalFee;
|
||||
/**
|
||||
* 申请退款金额
|
||||
*/
|
||||
private BigDecimal refundFee;
|
||||
/**
|
||||
* 微信退款状态
|
||||
*/
|
||||
private String refundStatus;
|
||||
/**
|
||||
* 微信退款成功时间
|
||||
*/
|
||||
private String successTime;
|
||||
/**
|
||||
* 微信退款入账账户
|
||||
*/
|
||||
private String refundRecvAccout;
|
||||
/**
|
||||
* 支付宝的用户
|
||||
*/
|
||||
private String buyerUserId;
|
||||
/**
|
||||
* 退款资金来源
|
||||
*/
|
||||
private String refundAccount;
|
||||
/**
|
||||
* 退款发起来源
|
||||
*/
|
||||
private String refundRequestSource;
|
||||
/**
|
||||
* 用户退款金额
|
||||
*/
|
||||
private BigDecimal cashRefundFee;
|
||||
/**
|
||||
* 申请退款订单id
|
||||
*/
|
||||
private Long refundOrderId;
|
||||
/**
|
||||
* 充值订单id
|
||||
*/
|
||||
private Long rechargeOrderId;
|
||||
|
||||
/**
|
||||
* 是否是最后一个订单 0 不是 1是
|
||||
*/
|
||||
private Integer lastOne;
|
||||
|
||||
}
|
||||
@ -0,0 +1,78 @@
|
||||
package com.xhpc.payment.lock;
|
||||
|
||||
import com.xhpc.common.core.constant.StatusConstants;
|
||||
import com.xhpc.common.core.utils.StringUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.concurrent.locks.ReadWriteLock;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2023-08-22 15:55
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/lock")
|
||||
@Api(value = "测试锁接口", tags = "测试锁接口")
|
||||
public class LockTestController {
|
||||
|
||||
private int userId;
|
||||
|
||||
private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
|
||||
|
||||
//写数据
|
||||
public void setLockPayment(int userId){
|
||||
try{
|
||||
readWriteLock.writeLock().lock();//取到写锁
|
||||
for (int i = userId; i <10 ; i++) {
|
||||
System.out.println(Thread.currentThread().getName()+"准备写入数据");
|
||||
|
||||
this.userId =i;
|
||||
System.out.println(Thread.currentThread().getName()+"写入"+this.userId);
|
||||
Thread.sleep(2000);
|
||||
return;
|
||||
}
|
||||
userId++;
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
System.out.println("858888");
|
||||
readWriteLock.writeLock().unlock();//释放锁
|
||||
}
|
||||
}
|
||||
|
||||
public void getLockPayment(){
|
||||
readWriteLock.readLock().lock();//读取到锁
|
||||
try{
|
||||
System.out.println(Thread.currentThread().getName()+"准备些入数据");
|
||||
System.out.println(Thread.currentThread().getName()+"写入"+this.userId);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
readWriteLock.readLock().unlock();//释放锁
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
int number =10;
|
||||
LockTestController controller =new LockTestController();
|
||||
// System.out.println("准备读取数据");
|
||||
// controller.getLockPayment();
|
||||
// System.out.println("准备写入数据");
|
||||
controller.setLockPayment(number);
|
||||
// System.out.println("准备写入数据");
|
||||
// controller.setLockPayment(10);
|
||||
// System.out.println("准备读取数据");
|
||||
// controller.getLockPayment();
|
||||
// System.out.println("准备写入数据");
|
||||
// controller.setLockPayment(15);
|
||||
// String orderNumber = StringUtils.numFormat(11L, 1, StatusConstants.FLOWING_WATER_REFUND_TYPE);
|
||||
// System.out.println("orderNumber:"+orderNumber);
|
||||
System.out.println("number:"+number);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
package com.xhpc.payment.mapper;
|
||||
|
||||
import com.xhpc.common.domain.XhpcRechargeOrder;
|
||||
import com.xhpc.common.domain.XhpcRefundOrder;
|
||||
import com.xhpc.payment.domain.XhpcRefundOriginalOrder;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2023-08-23 9:36
|
||||
*/
|
||||
public interface XhpcRefundOriginalOrderMapper {
|
||||
|
||||
//查询是否满足退款条件
|
||||
Map<String, Object> compareTotalTimeMoney(@Param("refundOrderId")Long refundOrderId, @Param("startTime")String startTime, @Param("endTime")String endTime);
|
||||
|
||||
|
||||
Map<String, Object> compareTotalMoney(@Param("userId")Long userId,@Param("source") Integer source);
|
||||
//查询以前充值记录
|
||||
List<XhpcRechargeOrder> getTotalMoneyList(@Param("userId")Long userId,@Param("source") Integer source,@Param("createTime")String createTime);
|
||||
//查询支付宝充值订单
|
||||
List<XhpcRechargeOrder> getXhpcRechargeOrderList(@Param("type")Integer type,@Param("refundOrderId")Long refundOrderId, @Param("startTime")String startTime, @Param("endTime")String endTime);
|
||||
|
||||
XhpcRefundOrder getXhpcRefundOrder(@Param("refundOrderId")Long refundOrderId);
|
||||
|
||||
XhpcRechargeOrder getXhpcRechargeOrder(@Param("rechargeOrderId")Long rechargeOrderId);
|
||||
|
||||
void addXhpcRefundOriginalOrder(XhpcRefundOriginalOrder xhpcRefundOriginalOrder);
|
||||
|
||||
XhpcRefundOriginalOrder getXhpcRefundOriginalOrderRefundId(@Param("refundId")String refundId);
|
||||
|
||||
void updateXhpcRefundOriginalOrder(XhpcRefundOriginalOrder xhpcRefundOriginalOrder);
|
||||
}
|
||||
@ -90,6 +90,15 @@ public interface IXhpcRechargeOrderService {
|
||||
*/
|
||||
public void updateRechargeOrder(Long rechargeOrderId, String type, Integer status, String paymentNumber);
|
||||
|
||||
/**
|
||||
* 修改充值订单 退款金额
|
||||
*
|
||||
* @param rechargeOrderId 充值订单id
|
||||
* @param refundFee 退款金额(元)
|
||||
* @param refundStatus 退款金额状态(0 未退款 1未退款完 2全部已退还)
|
||||
* @return
|
||||
*/
|
||||
public void updateRechargeOrderFeundFee(Long rechargeOrderId,BigDecimal refundFee,Integer refundStatus);
|
||||
/**
|
||||
* 充值订单详情
|
||||
*
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
package com.xhpc.payment.service;
|
||||
|
||||
import com.xhpc.common.core.domain.R;
|
||||
import com.xhpc.common.domain.XhpcRefundOrder;
|
||||
import com.xhpc.payment.domain.XhpcRefundAudit;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2023-08-23 9:35
|
||||
*/
|
||||
public interface IXhpcRefundOriginalOrderService {
|
||||
|
||||
//支付宝原路退款
|
||||
R zhbRefundOriginalOrder(Long refundOrderId);
|
||||
|
||||
//微信支付
|
||||
R wxRefundOriginalOrder(Long refundOrderId);
|
||||
|
||||
//微信回调处理
|
||||
void updateXhpcRefundOriginalOrder(Map<String, String> reqInfo);
|
||||
|
||||
void updateXhpcRefundOrder(XhpcRefundOrder refundOrder, BigDecimal refundFee, Integer type,Integer status);
|
||||
}
|
||||
@ -196,6 +196,23 @@ public class XhpcRechargeOrderServiceImpl implements IXhpcRechargeOrderService {
|
||||
xhpcRechargeOrderMapper.update(xhpcRechargeOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改充值订单 退款金额
|
||||
*
|
||||
* @param rechargeOrderId 充值订单id
|
||||
* @param refundFee 退款金额(元)
|
||||
* @param refundStatus 退款金额状态(0 未退款 1未退款完 2全部已退还)
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void updateRechargeOrderFeundFee(Long rechargeOrderId, BigDecimal refundFee, Integer refundStatus) {
|
||||
XhpcRechargeOrder xhpcRechargeOrder = new XhpcRechargeOrder();
|
||||
xhpcRechargeOrder.setRechargeOrderId(rechargeOrderId);
|
||||
xhpcRechargeOrder.setRefundFee(refundFee);
|
||||
xhpcRechargeOrder.setRefundStatus(refundStatus);
|
||||
xhpcRechargeOrderMapper.update(xhpcRechargeOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 充值订单详情
|
||||
*
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,98 @@
|
||||
package com.xhpc.payment.util;
|
||||
|
||||
|
||||
|
||||
import com.xhpc.common.core.utils.WXPayUtil;
|
||||
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.security.Security;
|
||||
import java.util.Base64;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2023-08-25 15:30
|
||||
*/
|
||||
public class AESUtil {
|
||||
/**
|
||||
* 密钥算法
|
||||
*/
|
||||
private static final String ALGORITHM = "AES";
|
||||
|
||||
/**
|
||||
* 加解密算法/工作模式/填充方式
|
||||
*/
|
||||
private static final String ALGORITHM_MODE_PADDING = "AES/ECB/PKCS7Padding";
|
||||
|
||||
/**
|
||||
* AES加密
|
||||
*
|
||||
* @param data d
|
||||
* @return str
|
||||
* @throws Exception e
|
||||
*/
|
||||
public static String encryptData(String data) throws Exception {
|
||||
// 创建密码器
|
||||
Security.addProvider(new BouncyCastleProvider());
|
||||
Cipher cipher = Cipher.getInstance(ALGORITHM_MODE_PADDING, "BC");
|
||||
SecretKeySpec key = new SecretKeySpec(WXPayUtil.MD5("sichuanxianghuakejiyouxiangongsi").toLowerCase().getBytes(), ALGORITHM);
|
||||
// 初始化
|
||||
cipher.init(Cipher.ENCRYPT_MODE, key);
|
||||
return base64Encode8859(new String(cipher.doFinal(data.getBytes()), "ISO-8859-1"));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* AES解密
|
||||
*
|
||||
* @param base64Data 64
|
||||
* @return str
|
||||
* @throws Exception e
|
||||
*/
|
||||
public static String decryptData(String base64Data,String mchKey) throws Exception {
|
||||
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
|
||||
Cipher cipher = Cipher.getInstance(ALGORITHM_MODE_PADDING, "BC");
|
||||
SecretKeySpec key = new SecretKeySpec(WXPayUtil.MD5(mchKey).toLowerCase().getBytes(), ALGORITHM);
|
||||
cipher.init(Cipher.DECRYPT_MODE, key);
|
||||
return new String(cipher.doFinal(base64Decode8859(base64Data).getBytes("ISO-8859-1")), "utf-8");
|
||||
}
|
||||
|
||||
/**
|
||||
* Base64解码
|
||||
* @param source base64 str
|
||||
* @return str
|
||||
*/
|
||||
public static String base64Decode8859(final String source) {
|
||||
String result = "";
|
||||
final Base64.Decoder decoder = Base64.getDecoder();
|
||||
try {
|
||||
// 此处的字符集是ISO-8859-1
|
||||
result = new String(decoder.decode(source), "ISO-8859-1");
|
||||
} catch (final UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Base64加密
|
||||
* @param source str
|
||||
* @return base64 str
|
||||
*/
|
||||
public static String base64Encode8859(final String source) {
|
||||
String result = "";
|
||||
final Base64.Encoder encoder = Base64.getEncoder();
|
||||
byte[] textByte = null;
|
||||
try {
|
||||
//注意此处的编码是ISO-8859-1
|
||||
textByte = source.getBytes("ISO-8859-1");
|
||||
result = encoder.encodeToString(textByte);
|
||||
} catch (final UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@ -133,7 +133,9 @@
|
||||
<if test="null != createBy and '' != createBy">create_by = #{createBy},</if>
|
||||
<if test="null != updateTime">update_time = #{updateTime},</if>
|
||||
<if test="null != updateBy and '' != updateBy">update_by = #{updateBy},</if>
|
||||
<if test="null != remark and '' != remark">remark = #{remark}</if>
|
||||
<if test="null != remark and '' != remark">remark = #{remark},</if>
|
||||
<if test="null != refundFee ">refund_fee = #{refundFee},</if>
|
||||
<if test="null != refundStatus">refund_status = #{refundStatus}</if>
|
||||
</set>
|
||||
WHERE recharge_order_id = #{rechargeOrderId}
|
||||
</update>
|
||||
|
||||
@ -112,10 +112,10 @@
|
||||
surplus_money as balance,
|
||||
avatar as avatar,
|
||||
status,
|
||||
weixin_open_id as weixinlogin,
|
||||
alipay_open_id as alipayLogin,
|
||||
weixin_login as weixinOpenId,
|
||||
weixin_login as weixinlogin,
|
||||
alipay_login as alipayLogin,
|
||||
weixin_open_id as weixinOpenId,
|
||||
alipay_open_id as alipayOpenId,
|
||||
tenant_id tenantId,
|
||||
del_flag delFlag,
|
||||
concat(2) as userType,
|
||||
@ -124,4 +124,4 @@
|
||||
from xhpc_community_personnel
|
||||
where community_personnel_id=#{userId} and tenant_id=#{tenantId}
|
||||
</select>
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
||||
@ -0,0 +1,447 @@
|
||||
<?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.xhpc.payment.mapper.XhpcRefundOriginalOrderMapper">
|
||||
|
||||
<resultMap type="com.xhpc.payment.domain.XhpcRefundOriginalOrder" id="XhpcRefundOriginalOrderResult">
|
||||
<result column="refund_original_order_id" property="refundOriginalOrderId"/>
|
||||
<result column="user_id" property="userId"/>
|
||||
<result column="type" property="type"/>
|
||||
<result column="source" property="source"/>
|
||||
<result column="status" property="status"/>
|
||||
<result column="del_flag" property="delFlag"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="create_by" property="createBy"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
<result column="update_by" property="updateBy"/>
|
||||
<result column="remark" property="remark"/>
|
||||
<result column="tenant_id" property="tenantId"/>
|
||||
<result column="app_id" property="appId"/>
|
||||
<result column="mch_id" property="mchId"/>
|
||||
<result column="nonce_str" property="nonceStr"/>
|
||||
<result column="transaction_id" property="transactionId"/>
|
||||
<result column="out_trade_no" property="outTradeNo" />
|
||||
<result column="trade_no" property="tradeNo" />
|
||||
<result column="refund_id" property="refundId" />
|
||||
<result column="out_refund_no" property="outRefundNo" />
|
||||
<result column="total_fee" property="totalFee" />
|
||||
<result column="settlement_total_fee" property="settlementTotalFee" />
|
||||
<result column="refund_fee" property="refundFee" />
|
||||
<result column="refund_status" property="refundStatus" />
|
||||
<result column="success_time" property="successTime" />
|
||||
<result column="refund_recv_accout" property="refundRecvAccout" />
|
||||
<result column="buyer_user_id" property="buyerUserId" />
|
||||
<result column="refund_account" property="refundAccount" />
|
||||
<result column="refund_request_source" property="refundRequestSource" />
|
||||
<result column="cash_refund_fee" property="cashRefundFee" />
|
||||
<result column="refund_order_id" property="refundOrderId" />
|
||||
<result column="recharge_order_id" property="rechargeOrderId" />
|
||||
<result column="last_one" property="lastOne" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
refund_original_order_id, user_id, `type`, source,status, del_flag, create_time, create_by,update_time,update_by,remark,tenant_id,app_id,mch_id,nonce_str,transaction_id,
|
||||
out_trade_no,trade_no,refund_id,out_refund_no,total_fee,settlement_total_fee,refund_fee,refund_status,success_time,refund_recv_accout,buyer_user_id,refund_account,
|
||||
refund_request_source,cash_refund_fee,refund_order_id,recharge_order_id,last_one
|
||||
</sql>
|
||||
|
||||
<insert id="addXhpcRefundOriginalOrder" parameterType="com.xhpc.payment.domain.XhpcRefundOriginalOrder" useGeneratedKeys="true"
|
||||
keyProperty="refundOriginalOrderId">
|
||||
INSERT INTO xhpc_refund_original_order
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="null != userId">
|
||||
user_id,
|
||||
</if>
|
||||
<if test="null != type">
|
||||
type,
|
||||
</if>
|
||||
<if test="null != source ">
|
||||
source,
|
||||
</if>
|
||||
<if test="null != status">
|
||||
status,
|
||||
</if>
|
||||
<if test="null != delFlag ">
|
||||
del_flag,
|
||||
</if>
|
||||
<if test="null != createTime ">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="null != remark and '' != remark">
|
||||
remark,
|
||||
</if>
|
||||
<if test="null != tenantId and '' != tenantId">
|
||||
tenant_id,
|
||||
</if>
|
||||
<if test="null != appId and '' != appId">
|
||||
app_id,
|
||||
</if>
|
||||
<if test="null != mchId and ''!=mchId">
|
||||
mch_id,
|
||||
</if>
|
||||
<if test="null != nonceStr and '' != nonceStr">
|
||||
nonce_str,
|
||||
</if>
|
||||
<if test="null != transactionId and '' !=transactionId">
|
||||
transaction_id,
|
||||
</if>
|
||||
<if test="null != outTradeNo and '' != outTradeNo">
|
||||
out_trade_no,
|
||||
</if>
|
||||
<if test="null != tradeNo and '' != tradeNo">
|
||||
trade_no,
|
||||
</if>
|
||||
<if test="null != refundId and ''!=refundId">
|
||||
refund_id,
|
||||
</if>
|
||||
<if test="null != outRefundNo and ''!=outRefundNo">
|
||||
out_refund_no,
|
||||
</if>
|
||||
<if test="null != totalFee ">
|
||||
total_fee,
|
||||
</if>
|
||||
<if test="null != settlementTotalFee">
|
||||
settlement_total_fee,
|
||||
</if>
|
||||
<if test="null != refundFee ">
|
||||
refund_fee,
|
||||
</if>
|
||||
<if test="null != refundStatus ">
|
||||
refund_status,
|
||||
</if>
|
||||
<if test="null != successTime and ''!=successTime">
|
||||
success_time,
|
||||
</if>
|
||||
<if test="null != refundRecvAccout and ''!=refundRecvAccout">
|
||||
refund_recv_accout,
|
||||
</if>
|
||||
<if test="null != buyerUserId and ''!=buyerUserId">
|
||||
buyer_user_id,
|
||||
</if>
|
||||
<if test="null != refundAccount and ''!=refundAccount">
|
||||
refund_account,
|
||||
</if>
|
||||
<if test="null != refundRequestSource and ''!=refundRequestSource">
|
||||
refund_request_source,
|
||||
</if>
|
||||
<if test="null != cashRefundFee ">
|
||||
cash_refund_fee,
|
||||
</if>
|
||||
<if test="null != refundOrderId ">
|
||||
refund_order_id,
|
||||
</if>
|
||||
<if test="null != rechargeOrderId ">
|
||||
recharge_order_id,
|
||||
</if>
|
||||
<if test="null != lastOne ">
|
||||
last_one,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="null != userId">
|
||||
#{userId},
|
||||
</if>
|
||||
<if test="null != type">
|
||||
#{type},
|
||||
</if>
|
||||
<if test="null != source ">
|
||||
#{source},
|
||||
</if>
|
||||
<if test="null != status">
|
||||
#{status},
|
||||
</if>
|
||||
<if test="null != delFlag ">
|
||||
#{delFlag},
|
||||
</if>
|
||||
<if test="null != createTime ">
|
||||
#{createTime},
|
||||
</if>
|
||||
<if test="null != remark and '' != remark">
|
||||
#{remark},
|
||||
</if>
|
||||
<if test="null != tenantId and '' != tenantId">
|
||||
#{tenantId},
|
||||
</if>
|
||||
<if test="null != appId and '' != appId">
|
||||
#{appId},
|
||||
</if>
|
||||
<if test="null != mchId and ''!=mchId">
|
||||
#{mchId},
|
||||
</if>
|
||||
<if test="null != nonceStr and '' != nonceStr">
|
||||
#{nonceStr},
|
||||
</if>
|
||||
<if test="null != transactionId and '' !=transactionId">
|
||||
#{transactionId},
|
||||
</if>
|
||||
<if test="null != outTradeNo and '' != outTradeNo">
|
||||
#{outTradeNo},
|
||||
</if>
|
||||
<if test="null != tradeNo and '' != tradeNo">
|
||||
#{tradeNo},
|
||||
</if>
|
||||
<if test="null != refundId and ''!=refundId">
|
||||
#{refundId},
|
||||
</if>
|
||||
<if test="null != outRefundNo and ''!=outRefundNo">
|
||||
#{outRefundNo},
|
||||
</if>
|
||||
<if test="null != totalFee ">
|
||||
#{totalFee},
|
||||
</if>
|
||||
<if test="null != settlementTotalFee">
|
||||
#{settlementTotalFee},
|
||||
</if>
|
||||
<if test="null != refundFee ">
|
||||
#{refundFee},
|
||||
</if>
|
||||
<if test="null != refundStatus ">
|
||||
#{refundStatus},
|
||||
</if>
|
||||
<if test="null != successTime and ''!=successTime">
|
||||
#{successTime},
|
||||
</if>
|
||||
<if test="null != refundRecvAccout and ''!=refundRecvAccout">
|
||||
#{refundRecvAccout},
|
||||
</if>
|
||||
<if test="null != buyerUserId and ''!=buyerUserId">
|
||||
#{buyerUserId},
|
||||
</if>
|
||||
<if test="null != refundAccount and ''!=refundAccount">
|
||||
#{refundAccount},
|
||||
</if>
|
||||
<if test="null != refundRequestSource and ''!=refundRequestSource">
|
||||
#{refundRequestSource},
|
||||
</if>
|
||||
<if test="null != cashRefundFee ">
|
||||
#{cashRefundFee},
|
||||
</if>
|
||||
<if test="null != refundOrderId ">
|
||||
#{refundOrderId},
|
||||
</if>
|
||||
<if test="null != rechargeOrderId ">
|
||||
#{rechargeOrderId},
|
||||
</if>
|
||||
<if test="null != lastOne ">
|
||||
#{lastOne},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<update id="updateXhpcRefundOriginalOrder">
|
||||
update xhpc_refund_original_order
|
||||
<set>
|
||||
<if test="null != userId">
|
||||
user_id=#{userId},
|
||||
</if>
|
||||
<if test="null != type">
|
||||
type=#{type},
|
||||
</if>
|
||||
<if test="null != source ">
|
||||
source=#{source},
|
||||
</if>
|
||||
<if test="null != status">
|
||||
status=#{status},
|
||||
</if>
|
||||
<if test="null != delFlag ">
|
||||
del_flag=#{delFlag},
|
||||
</if>
|
||||
<if test="null != createTime ">
|
||||
create_time=#{createTime},
|
||||
</if>
|
||||
<if test="null != remark and '' != remark">
|
||||
remark= #{remark},
|
||||
</if>
|
||||
<if test="null != tenantId and '' != tenantId">
|
||||
tenant_id=#{tenantId},
|
||||
</if>
|
||||
<if test="null != appId and '' != appId">
|
||||
app_id=#{appId},
|
||||
</if>
|
||||
<if test="null != mchId and ''!=mchId">
|
||||
mch_id=#{mchId},
|
||||
</if>
|
||||
<if test="null != nonceStr and '' != nonceStr">
|
||||
nonce_str=#{nonceStr},
|
||||
</if>
|
||||
<if test="null != transactionId and '' !=transactionId">
|
||||
transaction_id=#{transactionId},
|
||||
</if>
|
||||
<if test="null != outTradeNo and '' != outTradeNo">
|
||||
out_trade_no=#{outTradeNo},
|
||||
</if>
|
||||
<if test="null != tradeNo and '' != tradeNo">
|
||||
trade_no=#{tradeNo},
|
||||
</if>
|
||||
<if test="null != refundId and ''!=refundId">
|
||||
refund_id=#{refundId},
|
||||
</if>
|
||||
<if test="null != outRefundNo and ''!=outRefundNo">
|
||||
out_refund_no=#{outRefundNo},
|
||||
</if>
|
||||
<if test="null != totalFee ">
|
||||
total_fee=#{totalFee},
|
||||
</if>
|
||||
<if test="null != settlementTotalFee">
|
||||
settlement_total_fee=#{settlementTotalFee},
|
||||
</if>
|
||||
<if test="null != refundFee ">
|
||||
refund_fee=#{refundFee},
|
||||
</if>
|
||||
<if test="null != refundStatus ">
|
||||
refund_status=#{refundStatus},
|
||||
</if>
|
||||
<if test="null != successTime and ''!=successTime">
|
||||
success_time=#{successTime},
|
||||
</if>
|
||||
<if test="null != refundRecvAccout and ''!=refundRecvAccout">
|
||||
refund_recv_accout=#{refundRecvAccout},
|
||||
</if>
|
||||
<if test="null != buyerUserId and ''!=buyerUserId">
|
||||
buyer_user_id=#{buyerUserId},
|
||||
</if>
|
||||
<if test="null != refundAccount and ''!=refundAccount">
|
||||
refund_account=#{refundAccount},
|
||||
</if>
|
||||
<if test="null != refundRequestSource and ''!=refundRequestSource">
|
||||
refund_request_source=#{refundRequestSource},
|
||||
</if>
|
||||
<if test="null != cashRefundFee ">
|
||||
cash_refund_fee=#{cashRefundFee},
|
||||
</if>
|
||||
<if test="null != refundOrderId ">
|
||||
refund_order_id=#{refundOrderId},
|
||||
</if>
|
||||
<if test="null != rechargeOrderId ">
|
||||
recharge_order_id=#{rechargeOrderId},
|
||||
</if>
|
||||
</set>
|
||||
where refund_original_order_id = #{refundOriginalOrderId}
|
||||
</update>
|
||||
|
||||
<select id="compareTotalTimeMoney" resultType="map">
|
||||
select
|
||||
if(xro.amount <= (SELECT IFNULL(SUM(amount)-sum(refund_fee),0) from xhpc_recharge_order where refund_status !=2 and user_id=xro.user_id and status =1 and source =xro.source and type =2 and create_time >= #{startTime} and create_time <=#{endTime}) ,1,2) zfbStatus,
|
||||
if(xro.amount <= (SELECT IFNULL(SUM(amount)-sum(refund_fee),0) from xhpc_recharge_order where refund_status !=2 and user_id=xro.user_id and status =1 and source =xro.source and type =1 and create_time >= #{startTime} and create_time <=#{endTime}),1,2) wxStatus,
|
||||
if(xro.amount <= (SELECT IFNULL(SUM(amount)-sum(refund_fee),0) from xhpc_recharge_order where refund_status !=2 and user_id=xro.user_id and status =1 and source =xro.source and create_time >= #{startTime} and create_time <=#{endTime}),1,2) refundStatus,
|
||||
(SELECT IFNULL(SUM(amount)-sum(refund_fee),0) from xhpc_recharge_order where refund_status !=2 and user_id=xro.user_id and status =1 and source =xro.source and type =2 and create_time >= #{startTime} and create_time <=#{endTime}) zfbMoney,
|
||||
(SELECT IFNULL(SUM(amount)-sum(refund_fee),0) from xhpc_recharge_order where refund_status !=2 and user_id=xro.user_id and status =1 and source =xro.source and type =1 and create_time >= #{startTime} and create_time <=#{endTime}) wxMoney,
|
||||
(SELECT IFNULL(SUM(amount)-sum(refund_fee),0) from xhpc_recharge_order where refund_status !=2 and user_id=xro.user_id and status =1 and source =xro.source and create_time >= #{startTime} and create_time <=#{endTime}) totalMoney
|
||||
from xhpc_refund_order xro
|
||||
where xro.refund_order_id =#{refundOrderId}
|
||||
</select>
|
||||
|
||||
<select id="compareTotalMoney" resultType="map">
|
||||
select
|
||||
IFNULL(SUM(amount)-sum(refund_fee),0) totalAmount
|
||||
from xhpc_recharge_order xro
|
||||
where xro.user_id =#{userId} and xro.source=#{source} and refund_status !=2
|
||||
</select>
|
||||
|
||||
<select id="getTotalMoneyList" resultType="com.xhpc.common.domain.XhpcRechargeOrder">
|
||||
select
|
||||
recharge_order_id rechargeOrderId,
|
||||
recharge_order_number rechargeOrderNumber,
|
||||
user_id userId,
|
||||
prepay_id prepayId,
|
||||
alipay_number alipayNumber,
|
||||
amount amount,
|
||||
type type,
|
||||
status status,
|
||||
source source,
|
||||
del_flag delFlag,
|
||||
create_time createTime,
|
||||
create_by createBy,
|
||||
update_time updateTime,
|
||||
update_by updateBy,
|
||||
remark remark,
|
||||
tenant_id tenantId,
|
||||
refund_fee refundFee,
|
||||
refund_status refundStatus
|
||||
from xhpc_recharge_order xro
|
||||
where xro.user_id =#{userId} and xro.source=#{source} and refund_status !=2 and create_time < #{createTime}
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
|
||||
<select id="getXhpcRechargeOrderList" resultType="com.xhpc.common.domain.XhpcRechargeOrder">
|
||||
SELECT
|
||||
recharge_order_id rechargeOrderId,
|
||||
recharge_order_number rechargeOrderNumber,
|
||||
user_id userId,
|
||||
prepay_id prepayId,
|
||||
alipay_number alipayNumber,
|
||||
amount amount,
|
||||
type type,
|
||||
status status,
|
||||
source source,
|
||||
del_flag delFlag,
|
||||
create_time createTime,
|
||||
create_by createBy,
|
||||
update_time updateTime,
|
||||
update_by updateBy,
|
||||
remark remark,
|
||||
tenant_id tenantId,
|
||||
refund_fee refundFee,
|
||||
refund_status refundStatus
|
||||
from xhpc_recharge_order
|
||||
where refund_status !=2 and user_id=(select user_id from xhpc_refund_order where refund_order_id =#{refundOrderId}) and type =#{type}
|
||||
and create_time >= #{startTime} and create_time <=#{endTime}
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<select id="getXhpcRefundOrder" resultType="com.xhpc.common.domain.XhpcRefundOrder">
|
||||
SELECT
|
||||
refund_order_id refundOrderId,
|
||||
refund_order_number refundOrderNumber,
|
||||
user_id userId,
|
||||
open_id openId,
|
||||
alipay_id alipayId,
|
||||
amount amount,
|
||||
type type,
|
||||
examine_status examineStatus,
|
||||
status status,
|
||||
del_flag delFlag,
|
||||
create_time createTime,
|
||||
create_by createBy,
|
||||
update_time updateTime,
|
||||
update_by updateBy,
|
||||
remark remark,
|
||||
source source,
|
||||
payment_no paymentNo,
|
||||
payment_time paymentTime,
|
||||
order_id orderId,
|
||||
pay_fund_order_id payFundOrderId,
|
||||
trans_pay_time transPayTime,
|
||||
tenant_id tenantId
|
||||
from xhpc_refund_order
|
||||
where refund_order_id =#{refundOrderId}
|
||||
</select>
|
||||
|
||||
<select id="getXhpcRechargeOrder" resultType="com.xhpc.common.domain.XhpcRechargeOrder" >
|
||||
SELECT
|
||||
recharge_order_id rechargeOrderId,
|
||||
recharge_order_number rechargeOrderNumber,
|
||||
user_id userId,
|
||||
prepay_id prepayId,
|
||||
alipay_number alipayNumber,
|
||||
amount,
|
||||
type,
|
||||
status,
|
||||
source,
|
||||
del_flag delFlag,
|
||||
tenant_id tenantId,
|
||||
refund_fee refundFee,
|
||||
refund_status refundStatus
|
||||
from xhpc_recharge_order
|
||||
where recharge_order_id=#{rechargeOrderId}
|
||||
</select>
|
||||
|
||||
|
||||
<select id="getXhpcRefundOriginalOrderRefundId" resultMap="XhpcRefundOriginalOrderResult">
|
||||
select
|
||||
<include refid="Base_Column_List"/>
|
||||
from xhpc_refund_original_order where refund_id = #{refundId}
|
||||
</select>
|
||||
</mapper>
|
||||
@ -162,7 +162,8 @@
|
||||
<update id="updateAppUserBalance" parameterType="com.xhpc.payment.domain.XhpcAppUser">
|
||||
UPDATE xhpc_app_user
|
||||
<set>
|
||||
<if test="null != balance">balance = #{balance}</if>
|
||||
<if test="null != balance">balance = #{balance},</if>
|
||||
<if test="null != isRefundApplication">is_refund_application = #{isRefundApplication}</if>
|
||||
</set>
|
||||
WHERE app_user_id = #{appUserId}
|
||||
</update>
|
||||
@ -201,4 +202,4 @@
|
||||
from xhpc_terminal
|
||||
where terminal_id =(select terminal_id from xhpc_charge_order where user_id = #{userId} and source=#{source} and tenant_id=#{tenantId} and status=0 and del_flag =0 limit 1)
|
||||
</select>
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
||||
@ -398,7 +398,7 @@ public class ChargingController {
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
Integer f70C0000 = HexUtils.reverseHexInt("16D6870400");
|
||||
Integer f70C0000 = HexUtils.reverseHexInt("0000");
|
||||
System.out.println("f70C0000 转化成="+f70C0000);
|
||||
|
||||
Integer f70C0001 = HexUtils.reverseHexInt("D8B68A0400");
|
||||
@ -406,16 +406,20 @@ public class ChargingController {
|
||||
|
||||
Integer f70C0002 = HexUtils.reverseHexInt("C2E00200");
|
||||
System.out.println("f70C0002 转化成="+f70C0002);
|
||||
|
||||
String s = HexUtils.reverseHex("38C7280A1D0817");
|
||||
System.out.println("s 转化成="+s);
|
||||
// String s = toHexInt(3532);
|
||||
// System.out.println("3532 转化成BIN码="+s);
|
||||
// byte[] bytes = HexUtils.toBytes("80836000150001022305301518050003");
|
||||
// System.out.println("String 转化成Byte[]="+ Arrays.toString(bytes));
|
||||
// String msg = HexUtils.toHex(bytes);
|
||||
// System.out.println("Byte 转化成String="+ msg);
|
||||
double vs = 76011030;
|
||||
double v = vs / 10000;
|
||||
DecimalFormat df = new DecimalFormat("#.000");
|
||||
System.out.println(df.format(v));
|
||||
// double vs = 76011030;
|
||||
// double v = vs / 10000;
|
||||
// DecimalFormat df = new DecimalFormat("#.000");
|
||||
// System.out.println(df.format(v));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -218,21 +218,25 @@ public class CP56Time2a {
|
||||
// System.out.println(String.format("--未编码--: %s", time));
|
||||
// String hex = toCp56Hex(time);
|
||||
// System.out.println("--编码1--:" + hex);
|
||||
System.out.println(HexUtils.toBinaryString("90E223133D0416"));
|
||||
System.out.println("--下达1--:" + DateUtil.format(cp56toDate("38443B161D0416"), NORM_DATETIME_FORMATTER));
|
||||
System.out.println("--下达2--:" + DateUtil.format(cp56toDate("384A34171D0416"), NORM_DATETIME_FORMATTER));
|
||||
System.out.println("toCp56Hex = " + toCp56Hex(cp56toDate("C05D0D171F0116")));
|
||||
// System.out.println("--下达2--:" + DateUtil.format(cp56toDate(""), NORM_DATETIME_FORMAT));
|
||||
String dateStr = "2017-03-01 22:33:23";
|
||||
Date date = DateUtil.parse(dateStr);
|
||||
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
|
||||
System.out.println("--变为--:" + newDate.toString());
|
||||
System.out.println("sudo date " + newDate.getTime());
|
||||
// System.out.println(HexUtils.toBinaryString("90E223133D0416"));
|
||||
// System.out.println("--下达1--:" + DateUtil.format(cp56toDate("38443B161D0416"), NORM_DATETIME_FORMATTER));
|
||||
// System.out.println("--下达2--:" + DateUtil.format(cp56toDate("384A34171D0416"), NORM_DATETIME_FORMATTER));
|
||||
// System.out.println("toCp56Hex = " + toCp56Hex(cp56toDate("C05D0D171F0116")));
|
||||
//// System.out.println("--下达2--:" + DateUtil.format(cp56toDate(""), NORM_DATETIME_FORMAT));
|
||||
// String dateStr = "2017-03-01 22:33:23";
|
||||
// Date date = DateUtil.parse(dateStr);
|
||||
// Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
|
||||
// System.out.println("--变为--:" + newDate.toString());
|
||||
// System.out.println("sudo date " + newDate.getTime());
|
||||
// System.out.println("--D0073211110815--:" + DateUtil.format(cp56toDate("D0073211110815"), NORM_DATETIME_FORMAT));
|
||||
// System.out.println("--A85B3411110815--:" + DateUtil.format(cp56toDate("A85B3411110815"), NORM_DATETIME_FORMAT));
|
||||
// String encode = encode(time);
|
||||
// System.out.println(String.format("--编码2--:%s", encode));
|
||||
// System.out.println("--解码2--:" + decode(HexUtils.toBytes(encode)));
|
||||
|
||||
String s = cp56toDateStr("B036360B1D0817");
|
||||
|
||||
System.out.println("-111-变为--:" + s);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -404,6 +404,7 @@ public class XhpcAppUserController extends BaseController {
|
||||
// auth_code 前端授权后得到的授权码
|
||||
request.setCode(code);
|
||||
AlipaySystemOauthTokenResponse response = alipayClient.certificateExecute(request);
|
||||
System.out.println("response>>>>>>>>>>>>"+response.toString());
|
||||
//服务端请求返回,RSA2密钥和公钥证书请求方式不同,如当面付
|
||||
// RSA2密钥请求response = alipayClient.execute(request);
|
||||
// 公钥证书请求请求response = alipayClient.certificateExecute(request);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user