From 60317b725d7d3b139dd807bfcfee5213a6c229aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E7=BE=8E=E5=B9=B3?= <1102247926@qq.com>
Date: Tue, 26 Aug 2025 14:51:12 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/CopilotChatHistory.xml | 6 +
.idea/workspace.xml | 165 ++++++++++-------
.../nmgs/common/GlobalExceptionHandler.java | 2 +-
.../com/nmgs/config/DataSourceConfig.java | 30 ++--
.../java/com/nmgs/config/MybatisConfig.java | 5 +-
.../controller/SolveIntegralController.java | 45 +++++
.../com/nmgs/controller/UserController.java | 30 +++-
.../controller/UserVehicleController.java | 6 +-
.../mysqlmapper/IntegrationListMyMapper.java | 10 +-
.../mysqlmapper/IntegrationListMyMapper.xml | 21 ++-
.../mysqlmapper/UserTableMysqlMapper.java | 14 ++
.../mysqlmapper/UserTableMysqlMapper.xml | 28 ++-
.../oraclemapper/IntegrationListMapper.java | 10 +-
.../oraclemapper/IntegrationListMapper.xml | 13 +-
.../oraclemapper/UserTableMapper.java | 16 +-
.../oraclemapper/UserTableMapper.xml | 31 ++++
.../com/nmgs/service/UserTableService.java | 6 +
.../impl/IntegralRebatSolveServiceImpl.java | 166 ++++++++++++++++++
.../service/impl/ServiceAreaServiceImpl.java | 8 +-
.../service/impl/UserTableServiceImpl.java | 19 +-
.../service/impl/UserVehicleServiceImpl.java | 7 +
src/main/java/com/nmgs/util/PubTools.java | 42 +++++
.../resources/static/application.properties | 3 +-
23 files changed, 581 insertions(+), 102 deletions(-)
create mode 100644 src/main/java/com/nmgs/controller/SolveIntegralController.java
create mode 100644 src/main/java/com/nmgs/service/impl/IntegralRebatSolveServiceImpl.java
diff --git a/.idea/CopilotChatHistory.xml b/.idea/CopilotChatHistory.xml
index 5c1a011..01f72bf 100644
--- a/.idea/CopilotChatHistory.xml
+++ b/.idea/CopilotChatHistory.xml
@@ -3,6 +3,12 @@
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
@@ -82,61 +96,61 @@
- {
+ "keyToString": {
+ "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
+ "Application.DivPassDataImpl.executor": "Run",
+ "Application.ImageUtils.executor": "Run",
+ "Application.OcrUtil.executor": "Debug",
+ "Application.PubTools.executor": "Run",
+ "Application.QCodeInfoServiceImpl.executor": "Debug",
+ "Application.SensitiveFilter.executor": "Run",
+ "Application.main.executor": "Run",
+ "Application.redisConfigUtil.executor": "Debug",
+ "Maven.IntegraManager [clean].executor": "Run",
+ "Maven.IntegraManager [install].executor": "Run",
+ "Maven.IntegralManager [clean].executor": "Run",
+ "Maven.IntegralManager [install].executor": "Run",
+ "Maven.IntegralManager [site].executor": "Run",
+ "Maven.IntegralManager [validate].executor": "Run",
+ "Maven.IntegralManagerSys [clean].executor": "Run",
+ "Maven.IntegralManagerSys [install].executor": "Run",
+ "Maven.devProject [clean].executor": "Run",
+ "Maven.devProject [install].executor": "Run",
+ "Maven.dev_project [clean].executor": "Run",
+ "Maven.dev_project [install].executor": "Run",
+ "Maven.special_event [clean].executor": "Run",
+ "Maven.special_event [install].executor": "Run",
+ "Maven.special_event [org.apache.maven.plugins:maven-assembly-plugin:3.3.0:single].executor": "Run",
+ "Maven.special_event [org.springframework.boot:spring-boot-maven-plugin:2.7.11:repackage].executor": "Run",
+ "Maven.special_event [package].executor": "Run",
+ "Maven.special_event [validate].executor": "Run",
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "SHARE_PROJECT_CONFIGURATION_FILES": "true",
+ "TomEE Server.special_event.executor": "Debug",
+ "Tomcat Server.Tomcat 9.0.80.executor": "Debug",
+ "deletionFromPopupRequiresConfirmation": "false",
+ "git-widget-placeholder": "master",
+ "kotlin-language-version-configured": "true",
+ "last_opened_file_path": "D:/workspace/IntegralManager",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "project.structure.last.edited": "Artifacts",
+ "project.structure.proportion": "0.15",
+ "project.structure.side.proportion": "0.37169158",
+ "settings.editor.selected.configurable": "reference.settings.project.maven.importing",
+ "vue.rearranger.settings.migration": "true"
},
- "keyToStringList": {
- "DatabaseDriversLRU": [
- "oracle"
+ "keyToStringList": {
+ "DatabaseDriversLRU": [
+ "oracle"
]
}
-}]]>
+}
@@ -152,11 +166,11 @@
+
+
-
-
@@ -188,7 +202,7 @@
-
+
@@ -624,7 +638,18 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -858,7 +883,15 @@
1753167913617
-
+
+
+ 1753759290530
+
+
+
+ 1753759290530
+
+
@@ -896,7 +929,8 @@
-
+
+
@@ -921,11 +955,6 @@
115
-
- file://$PROJECT_DIR$/src/main/java/com/nmgs/service/impl/QCodeInfoServiceImpl.java
- 666
-
-
diff --git a/src/main/java/com/nmgs/common/GlobalExceptionHandler.java b/src/main/java/com/nmgs/common/GlobalExceptionHandler.java
index a05e971..275a32f 100644
--- a/src/main/java/com/nmgs/common/GlobalExceptionHandler.java
+++ b/src/main/java/com/nmgs/common/GlobalExceptionHandler.java
@@ -20,7 +20,7 @@ public class GlobalExceptionHandler {
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ResultData handleDataAccessException(DataAccessException e) {
LogUtil.WriteLog_Error("数据库操作失败:" + e.getMessage(),"GlobalExceptionHandler");
- return ResultData.fail("数据库操作失败" );
+ return ResultData.fail("数据库操作失败");
}
@ExceptionHandler(SQLException.class)
diff --git a/src/main/java/com/nmgs/config/DataSourceConfig.java b/src/main/java/com/nmgs/config/DataSourceConfig.java
index c75abfb..e410122 100644
--- a/src/main/java/com/nmgs/config/DataSourceConfig.java
+++ b/src/main/java/com/nmgs/config/DataSourceConfig.java
@@ -33,7 +33,7 @@ public class DataSourceConfig {
@Bean
public UserTransaction localuserTransaction() throws SystemException {
UserTransactionImp userTransactionImp = new UserTransactionImp();
- userTransactionImp.setTransactionTimeout(6000);
+ userTransactionImp.setTransactionTimeout(600);
return userTransactionImp;
}
@@ -41,7 +41,7 @@ public class DataSourceConfig {
public TransactionManager localtransactionManager() throws SystemException {
UserTransactionManager userTransactionManager = new UserTransactionManager();
userTransactionManager.setForceShutdown(false);
- userTransactionManager.setTransactionTimeout(6000);
+ userTransactionManager.setTransactionTimeout(600);
return userTransactionManager;
}
@@ -50,7 +50,7 @@ public class DataSourceConfig {
UserTransaction localuserTransaction,
TransactionManager localtransactionManager) {
JtaTransactionManager jtaTransactionManager = new JtaTransactionManager(localuserTransaction, localtransactionManager);
- jtaTransactionManager.setDefaultTimeout(6000);
+ jtaTransactionManager.setDefaultTimeout(600);
return jtaTransactionManager;
}
/**
@@ -85,9 +85,9 @@ public class DataSourceConfig {
//atomikosDataSourceBean.setXaDataSourceClassName("com.zaxxer.hikari.HikariXADataSource");
// 必须为数据源指定唯一标识
atomikosDataSourceBean.setUniqueResourceName("oracleDataSource");
- atomikosDataSourceBean.setMinPoolSize(3);
- atomikosDataSourceBean.setMaxPoolSize(25);
- atomikosDataSourceBean.setMaxIdleTime(60000);
+ atomikosDataSourceBean.setMinPoolSize(1);
+ atomikosDataSourceBean.setMaxPoolSize(10);
+ atomikosDataSourceBean.setMaxIdleTime(600000);
//获取连接的最大等待时间(单位:秒),超时抛出异常。默认 0(无限等待),建议设为 30 秒。
atomikosDataSourceBean.setBorrowConnectionTimeout(300);
// 每分钟检查空闲连接(单位:秒)
@@ -106,7 +106,6 @@ public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.bak")
public XADataSource getDataSourceBak() throws SQLException {
- // 创建XA连接池
// 创建XA连接池
if("2".equals(PropertiesUtil.getValue("BakDBType"))){
OracleXADataSource oracleXADataSource = new OracleXADataSource();
@@ -130,10 +129,10 @@ public class DataSourceConfig {
//atomikosDataSourceBean.setXaDataSourceClassName("com.zaxxer.hikari.HikariXADataSource");
// 必须为数据源指定唯一标识
atomikosDataSourceBean.setUniqueResourceName("mysqlDataSource");
- atomikosDataSourceBean.setMinPoolSize(2);
- atomikosDataSourceBean.setMaxPoolSize(50);
+ atomikosDataSourceBean.setMinPoolSize(1);
+ atomikosDataSourceBean.setMaxPoolSize(10);
// 空闲连接保留 300 秒(5分钟)
- atomikosDataSourceBean.setMaxIdleTime(60000);
+ atomikosDataSourceBean.setMaxIdleTime(600000);
atomikosDataSourceBean.setTestQuery("select 1");
//获取连接的最大等待时间(单位:秒),超时抛出异常。默认 0(无限等待),建议设为 30 秒。
atomikosDataSourceBean.setBorrowConnectionTimeout(300);
@@ -150,7 +149,13 @@ public class DataSourceConfig {
@Bean(name = "commonDataSource")
@ConfigurationProperties(prefix = "spring.datasource.main")
public DataSource commonDataSource() {
- return DataSourceBuilder.create().type(HikariDataSource.class).build();
+ HikariDataSource build = DataSourceBuilder.create().type(HikariDataSource.class).build();
+ build.setConnectionTimeout(600000);
+ build.setMinimumIdle(2);
+ build.setMaximumPoolSize(10);
+ build.setMaxLifetime(1800000);
+ build.setIdleTimeout(60000);
+ return build;
}
public static DataSource initSource(String sourceType){
DataSourceConfig dsc=new DataSourceConfig();
@@ -160,7 +165,8 @@ public class DataSourceConfig {
}else if("BAK".equals(sourceType)){
return (DataSource)dsc.getDataSourcePrimary();
}else if("COMMON".equals(sourceType)){
- return dsc.commonDataSource();
+ // return dsc.commonDataSource();
+ return (DataSource) dsc.getDataSourcePrimary();
}
}catch (Exception e){
diff --git a/src/main/java/com/nmgs/config/MybatisConfig.java b/src/main/java/com/nmgs/config/MybatisConfig.java
index aa43581..43fdddc 100644
--- a/src/main/java/com/nmgs/config/MybatisConfig.java
+++ b/src/main/java/com/nmgs/config/MybatisConfig.java
@@ -57,6 +57,7 @@ public class MybatisConfig {
sessionFactory.setDataSource(bakDataSource);
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.addInterceptor(mybatisPlusInterceptor );
+ configuration.setCallSettersOnNulls(true);
// 配置打印sql语句
if("Y".equals(PropertiesUtil.getValue("mybatislogImplEnabled"))){
configuration.setLogImpl(StdOutImpl.class);
@@ -92,6 +93,7 @@ public class MybatisConfig {
}
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.addInterceptor(mybatisPlusInterceptor );
+ configuration.setCallSettersOnNulls(true);
// 配置打印sql语句
if("Y".equals(PropertiesUtil.getValue("mybatislogImplEnabled"))){
configuration.setLogImpl(StdOutImpl.class);
@@ -112,7 +114,7 @@ public class MybatisConfig {
public static class commonMyBatisConfig {
@Autowired
- @Qualifier("commonDataSource")
+ @Qualifier("primaryDataSource")
private DataSource commonDataSource;
@Autowired
@Qualifier("mybatisPlusInterceptor")
@@ -126,6 +128,7 @@ public class MybatisConfig {
sessionFactory.setDataSource(commonDataSource);
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.addInterceptor(mybatisPlusInterceptor );
+ configuration.setCallSettersOnNulls(true);
// 配置打印sql语句
if("Y".equals(PropertiesUtil.getValue("mybatislogImplEnabled"))){
configuration.setLogImpl(StdOutImpl.class);
diff --git a/src/main/java/com/nmgs/controller/SolveIntegralController.java b/src/main/java/com/nmgs/controller/SolveIntegralController.java
new file mode 100644
index 0000000..0a10eb8
--- /dev/null
+++ b/src/main/java/com/nmgs/controller/SolveIntegralController.java
@@ -0,0 +1,45 @@
+package com.nmgs.controller;
+
+import com.nmgs.config.ResultData;
+import com.nmgs.service.UserTableService;
+import com.nmgs.service.impl.IntegralRebatSolveServiceImpl;
+import com.nmgs.util.LogUtil;
+import com.nmgs.util.PubTools;
+import com.nmgs.util.redisConfigUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+@RestController
+@RequestMapping("solveIntegral")
+@Api(tags = "用户积分异常数据处理")
+public class SolveIntegralController {
+
+ public IntegralRebatSolveServiceImpl integralRebatSolveServiceImpl;
+
+ @Autowired
+ public void setUserTableService(IntegralRebatSolveServiceImpl userTableServiceT) {
+ this.integralRebatSolveServiceImpl = userTableServiceT;
+ }
+
+ @RequestMapping(value = "startSolve",
+ method = {RequestMethod.POST}
+ )
+ @ApiOperation(value = "积分处理", httpMethod = "POST")
+ public ResultData startSolve(@RequestParam("userId") String userId, @RequestParam("startTime") String startTime) {
+ LogUtil.WriteLog_Info("用户积分处理开始======={userId:" + userId + ",startTime:" + startTime + "}", "SolveIntegralController");
+ int i1 = integralRebatSolveServiceImpl.solveIntegralRebat(userId, startTime);
+ if (i1 < 0) {
+ return ResultData.fail("人员积分处理失败");
+ }
+ return ResultData.success(1, "积分处理成功");
+ }
+
+}
diff --git a/src/main/java/com/nmgs/controller/UserController.java b/src/main/java/com/nmgs/controller/UserController.java
index f287f23..d668ea0 100644
--- a/src/main/java/com/nmgs/controller/UserController.java
+++ b/src/main/java/com/nmgs/controller/UserController.java
@@ -10,7 +10,9 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
@RestController
@@ -31,6 +33,7 @@ public class UserController {
public ResultData oathuUser(@RequestParam("openId") String openId, @RequestParam(value = "wxName", required = false) String wxName) throws InterruptedException {
LogUtil.WriteLog_Info("用户注册开始====" + PubTools.getCurrentDate() + "====" + openId, "UserController");
List userByOpenId = userTableService.getUserByOpenId(openId);
+ LogUtil.WriteLog_Info("用户注册结束====" + PubTools.getCurrentDate() + "====" + openId, "UserController");
if(userByOpenId != null && userByOpenId.size()>0 ){
return ResultData.success(2,"人员已经存在");
}else{
@@ -59,7 +62,7 @@ public class UserController {
@RequestParam(value = "NUMBERPIC", required = false) String NUMBERPIC) {
LogUtil.WriteLog_Info("用户实名认证开始====" + PubTools.getCurrentDate() + "====" + USERID, "UserController");
int i = userTableService.updateUser(USERID,IDNUMBER,PHONE,REALNAME,NUMBERPIC);
- LogUtil.WriteLog_Info("用户实名认证结束========" + PubTools.getCurrentDate(), "UserController");
+ LogUtil.WriteLog_Info("用户实名认证结束====" + PubTools.getCurrentDate(), "UserController");
if(i<0){
if (i == -99) {
return ResultData.fail("身份证附件没有上传");
@@ -144,4 +147,29 @@ public class UserController {
}
return ResultData.success("查询成功", userByOpenId, userByOpenId.size());
}
+
+
+ //2025-08-19 新加接口
+ @RequestMapping(value = "saveUserInfo")
+ @ApiOperation(value = "个人信息保存", httpMethod = "POST")
+ public ResultData saveUserInfo(@RequestParam("openid") String openId,
+ @RequestParam(value = "sex", required = false) String sex,
+ @RequestParam(value = "age", required = false) String age,
+ @RequestParam(value = "username", required = false) String username,
+ @RequestParam(value = "email", required = false) String email) {
+ Map map = new HashMap<>();
+ map.put("openid", openId);
+ map.put("sex", sex);
+ map.put("age", age);
+ map.put("email", email);
+ map.put("username", username);
+ int ret = userTableService.saveUserInfo(map);
+ if (ret < 0) {
+ return ResultData.fail("保存失败");
+ }
+ return ResultData.success(1, "保存成功");
+ }
+
+
+
}
diff --git a/src/main/java/com/nmgs/controller/UserVehicleController.java b/src/main/java/com/nmgs/controller/UserVehicleController.java
index 4bfbe83..7d175b6 100644
--- a/src/main/java/com/nmgs/controller/UserVehicleController.java
+++ b/src/main/java/com/nmgs/controller/UserVehicleController.java
@@ -92,7 +92,11 @@ public class UserVehicleController {
if(ret >-1){
return ResultData.success("解除成功");
}else{
- return ResultData.fail("车牌解除出错");
+ if (ret == -2) {
+ return ResultData.fail("用户已被冻结或者积分异常");
+ } else {
+ return ResultData.fail("车牌解除出错");
+ }
}
}
/**
diff --git a/src/main/java/com/nmgs/mapperset/mysqlmapper/IntegrationListMyMapper.java b/src/main/java/com/nmgs/mapperset/mysqlmapper/IntegrationListMyMapper.java
index 654c61a..bdda1a3 100644
--- a/src/main/java/com/nmgs/mapperset/mysqlmapper/IntegrationListMyMapper.java
+++ b/src/main/java/com/nmgs/mapperset/mysqlmapper/IntegrationListMyMapper.java
@@ -8,10 +8,18 @@ import java.util.Map;
public interface IntegrationListMyMapper {
/**
- * 新增用户签到积分信息
+ * 新增用户积分信息
* @param param
* @return
*/
public int addIntegralList(@Param("params") Map param);
+ /**
+ * 新增用户流水积分信息
+ *
+ * @param param
+ * @return
+ */
+ public int updateIntegralList(@Param("params") Map param);
+
}
diff --git a/src/main/java/com/nmgs/mapperset/mysqlmapper/IntegrationListMyMapper.xml b/src/main/java/com/nmgs/mapperset/mysqlmapper/IntegrationListMyMapper.xml
index 36fa5bb..c72861e 100644
--- a/src/main/java/com/nmgs/mapperset/mysqlmapper/IntegrationListMyMapper.xml
+++ b/src/main/java/com/nmgs/mapperset/mysqlmapper/IntegrationListMyMapper.xml
@@ -4,9 +4,15 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- INSERT INTO integration_list_table ( ID, USERID,ACARNO, LASTINTEGRATION, TOTALADDINTEGRATION,PAYINTEGRATION, RESTINTEGRATION,
- PAYTIME, PAYTYPE,CPENABLEINTEGRATION,OGENABLEINTEGRATION )
- values(#{params.maxid},#{params.userId},#{params.acarNo},#{params.lastintegration},#{params.totalintegration},
+ INSERT INTO integration_list_table ( ID, USERID,ACARNO, LASTINTEGRATION,
+
+ TOTALADDINTEGRATION,
+
+ PAYINTEGRATION, RESTINTEGRATION,PAYTIME, PAYTYPE,CPENABLEINTEGRATION,OGENABLEINTEGRATION )
+ values(#{params.maxid},#{params.userId},#{params.acarNo},#{params.lastintegration},
+
+ #{params.totalintegration},
+
#{params.payintegration},#{params.restintegration},
dateadd(day,0,#{params.payTime}),
@@ -22,6 +28,13 @@
#{params.paytype},#{params.cpenableintegration},#{params.ogenableintegration})
-
+
+ update integration_list_table
+ set LASTINTEGRATION=#{params.lastintegration},
+ RESTINTEGRATION=#{params.restintegration},
+ OGENABLEINTEGRATION=#{params.ogenableintegration},
+ CPENABLEINTEGRATION=#{params.cpenableintegration}
+ where ID = #{params.dataId}
+
\ No newline at end of file
diff --git a/src/main/java/com/nmgs/mapperset/mysqlmapper/UserTableMysqlMapper.java b/src/main/java/com/nmgs/mapperset/mysqlmapper/UserTableMysqlMapper.java
index 3315667..47d37f0 100644
--- a/src/main/java/com/nmgs/mapperset/mysqlmapper/UserTableMysqlMapper.java
+++ b/src/main/java/com/nmgs/mapperset/mysqlmapper/UserTableMysqlMapper.java
@@ -25,4 +25,18 @@ public interface UserTableMysqlMapper {
* @return
*/
public int updateUserById(@Param("params") Map param);
+
+ /**
+ * 根据用户ID信息修改
+ *
+ * @return
+ */
+ public int updateUserByUserId(@Param("params") Map param);
+
+ /**
+ * 个人信息保存
+ *
+ * @return
+ */
+ public int saveUserInfo(@Param("params") Map param);
}
diff --git a/src/main/java/com/nmgs/mapperset/mysqlmapper/UserTableMysqlMapper.xml b/src/main/java/com/nmgs/mapperset/mysqlmapper/UserTableMysqlMapper.xml
index c6113bf..05d0ef6 100644
--- a/src/main/java/com/nmgs/mapperset/mysqlmapper/UserTableMysqlMapper.xml
+++ b/src/main/java/com/nmgs/mapperset/mysqlmapper/UserTableMysqlMapper.xml
@@ -53,5 +53,31 @@
ENABLEINTEGRATION= #{params.enabledTI}
where OPENID=#{params.userId}
-
+
+ update WEIXN_USER_TABLE
+ SET CPENABLEINTEGRATION=#{params.enabledTICp},
+ OGENABLEINTEGRATION=#{params.enabledTIOG},
+ ENABLEINTEGRATION= #{params.enabledTI}
+ where ID = #{params.userId}
+
+
+ update WEIXN_USER_TABLE
+ SET OPENID = #{params.openid}
+
+ ,SEX = #{params.sex}
+
+
+ ,age = #{params.age}
+
+
+ ,email = #{params.email}
+
+
+ ,headphoto = #{params.headphoto}
+
+
+ ,username = #{params.username}
+
+ where OPENID = #{params.openid}
+
\ No newline at end of file
diff --git a/src/main/java/com/nmgs/mapperset/oraclemapper/IntegrationListMapper.java b/src/main/java/com/nmgs/mapperset/oraclemapper/IntegrationListMapper.java
index 27b6120..ec12109 100644
--- a/src/main/java/com/nmgs/mapperset/oraclemapper/IntegrationListMapper.java
+++ b/src/main/java/com/nmgs/mapperset/oraclemapper/IntegrationListMapper.java
@@ -8,10 +8,18 @@ import java.util.Map;
public interface IntegrationListMapper {
/**
- * 新增用户签到积分信息
+ * 新增用户积分信息
* @param param
* @return
*/
public int addIntegralList(@Param("params") Map param);
+ /**
+ * 新增用户流水积分信息
+ *
+ * @param param
+ * @return
+ */
+ public int updateIntegralList(@Param("params") Map param);
+
}
diff --git a/src/main/java/com/nmgs/mapperset/oraclemapper/IntegrationListMapper.xml b/src/main/java/com/nmgs/mapperset/oraclemapper/IntegrationListMapper.xml
index e8aaf4f..ab587ee 100644
--- a/src/main/java/com/nmgs/mapperset/oraclemapper/IntegrationListMapper.xml
+++ b/src/main/java/com/nmgs/mapperset/oraclemapper/IntegrationListMapper.xml
@@ -8,8 +8,7 @@
TOTALADDINTEGRATION,
- PAYINTEGRATION, RESTINTEGRATION,
- PAYTIME, PAYTYPE,CPENABLEINTEGRATION,OGENABLEINTEGRATION )
+ PAYINTEGRATION, RESTINTEGRATION, PAYTIME, PAYTYPE,CPENABLEINTEGRATION,OGENABLEINTEGRATION )
values(#{params.maxid},#{params.userId},#{params.acarNo},#{params.lastintegration},
#{params.totalintegration},
@@ -31,4 +30,14 @@
+
+ update integration_list_table
+ set LASTINTEGRATION=#{params.lastintegration},
+ RESTINTEGRATION=#{params.restintegration},
+ OGENABLEINTEGRATION=#{params.ogenableintegration},
+ CPENABLEINTEGRATION=#{params.cpenableintegration}
+ where ID = #{params.dataId}
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/nmgs/mapperset/oraclemapper/UserTableMapper.java b/src/main/java/com/nmgs/mapperset/oraclemapper/UserTableMapper.java
index 736e49a..e72ef51 100644
--- a/src/main/java/com/nmgs/mapperset/oraclemapper/UserTableMapper.java
+++ b/src/main/java/com/nmgs/mapperset/oraclemapper/UserTableMapper.java
@@ -21,9 +21,23 @@ public interface UserTableMapper {
*/
public int updateUser(@Param("params") Map param);
/**
- * 用户信息修改
+ * 根据用户OPENID信息修改
* @return
*/
public int updateUserById(@Param("params") Map param);
+ /**
+ * 根据用户ID信息修改
+ *
+ * @return
+ */
+ public int updateUserByUserId(@Param("params") Map param);
+
+ /**
+ * 个人信息保存
+ *
+ * @return
+ */
+ public int saveUserInfo(@Param("params") Map param);
+
}
diff --git a/src/main/java/com/nmgs/mapperset/oraclemapper/UserTableMapper.xml b/src/main/java/com/nmgs/mapperset/oraclemapper/UserTableMapper.xml
index a49d559..6a8d7cb 100644
--- a/src/main/java/com/nmgs/mapperset/oraclemapper/UserTableMapper.xml
+++ b/src/main/java/com/nmgs/mapperset/oraclemapper/UserTableMapper.xml
@@ -53,4 +53,35 @@
where OPENID=#{params.userId}
+
+ update WEIXN_USER_TABLE
+ SET CPENABLEINTEGRATION=#{params.enabledTICp},
+ OGENABLEINTEGRATION=#{params.enabledTIOG},
+ ENABLEINTEGRATION= #{params.enabledTI}
+ where ID = #{params.userId}
+
+
+
+
+ update WEIXN_USER_TABLE
+ SET OPENID = #{params.openid}
+
+ ,SEX = #{params.sex}
+
+
+ ,age = #{params.age}
+
+
+ ,email = #{params.email}
+
+
+ ,headphoto = #{params.headphoto}
+
+
+ ,username = #{params.username}
+
+ where OPENID = #{params.openid}
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/nmgs/service/UserTableService.java b/src/main/java/com/nmgs/service/UserTableService.java
index 0b93b4c..fe7770f 100644
--- a/src/main/java/com/nmgs/service/UserTableService.java
+++ b/src/main/java/com/nmgs/service/UserTableService.java
@@ -3,6 +3,7 @@ package com.nmgs.service;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
+import java.util.Map;
public interface UserTableService {
/**
@@ -49,4 +50,9 @@ public interface UserTableService {
*/
public List checkUserInfo(String PHONE, String IDNUMBER, String REALNAME);
+ /**
+ * @param map
+ * @return
+ */
+ int saveUserInfo(Map map);
}
diff --git a/src/main/java/com/nmgs/service/impl/IntegralRebatSolveServiceImpl.java b/src/main/java/com/nmgs/service/impl/IntegralRebatSolveServiceImpl.java
new file mode 100644
index 0000000..374e605
--- /dev/null
+++ b/src/main/java/com/nmgs/service/impl/IntegralRebatSolveServiceImpl.java
@@ -0,0 +1,166 @@
+package com.nmgs.service.impl;
+
+import com.nmgs.mappercommon.Mapper;
+import com.nmgs.mapperset.mysqlmapper.IntegrationListMyMapper;
+import com.nmgs.mapperset.mysqlmapper.UserTableMysqlMapper;
+import com.nmgs.mapperset.oraclemapper.IntegrationListMapper;
+import com.nmgs.mapperset.oraclemapper.UserTableMapper;
+import com.nmgs.util.PropertiesUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 积分核销处理
+ */
+@Service
+public class IntegralRebatSolveServiceImpl {
+ @Autowired
+ public Mapper imapper;
+
+
+ public UserTableMapper userTableMapper;
+
+ public UserTableMysqlMapper userTableMysqlMapper;
+
+ @Autowired
+ public void setUserTableMapper(UserTableMapper userTableMapper) {
+ this.userTableMapper = userTableMapper;
+ }
+
+ @Autowired
+ public void setUserTableMysqlMapper(UserTableMysqlMapper userTableMysqlMapper) {
+ this.userTableMysqlMapper = userTableMysqlMapper;
+ }
+
+ public IntegrationListMapper integrationListMapper;
+
+ @Autowired
+ public void setIntegrationListMapper(IntegrationListMapper integrationListMapper) {
+ this.integrationListMapper = integrationListMapper;
+ }
+
+ public IntegrationListMyMapper integrationListMyMapper;
+
+ @Autowired
+ public void setIntegrationListMyMapper(IntegrationListMyMapper integrationListMyMapper) {
+ this.integrationListMyMapper = integrationListMyMapper;
+ }
+
+ @Transactional(value = "jtatransactionManager", timeout = 100)
+ public int solveIntegralRebat(String userIdParam, String startTime) {
+ int ret = -1;
+ String sqlUserId = "select distinct USERID from integration_list_table " +
+ "where PAYTIME >=to_date('" + startTime + "','yyyy-mm-dd HH24:mi:ss') AND userID='" + userIdParam + "' " +
+ "and PAYTYPE in('FP','FG','FC','FS','TK','FCA') ";
+ List selectforlist = this.imapper.selectforlist(sqlUserId);
+ System.out.println("总次数===" + selectforlist.size());
+ for (int i = 0; i < selectforlist.size(); i++) {
+ Map userIdO = (Map) selectforlist.get(i);
+ String userId = userIdO.get("USERID").toString();
+ //人员截止到2025-07-21 17:15:00的积分流水中最新数据情况,查询出来 最新的积分数据当成初始数据
+
+ String sql = "select LASTINTEGRATION,PAYINTEGRATION,RESTINTEGRATION,OGENABLEINTEGRATION,CPENABLEINTEGRATION,PAYTYPE from integration_list_table where ID =(select max(ID) from integration_list_table where USERID='" + userId + "' AND PAYTIME < to_date('" + startTime + "','yyyy-mm-dd HH24:mi:ss')) ";
+ List selectforlist1 = this.imapper.selectforlist(sql);
+ if (!selectforlist1.isEmpty()) {
+ Map o = (Map) selectforlist1.get(0);
+ BigDecimal LASTINTEGRATION = (BigDecimal) o.get("LASTINTEGRATION");//上次总积分
+ BigDecimal RESTINTEGRATION = (BigDecimal) o.get("RESTINTEGRATION");//剩余积分
+ BigDecimal OGENABLEINTEGRATION = (BigDecimal) o.get("OGENABLEINTEGRATION");//加油加气可用积分
+ BigDecimal CPENABLEINTEGRATION = (BigDecimal) o.get("CPENABLEINTEGRATION");//商超可用积分
+ //用户需要处理的数据
+ String sql1 = "select ID,LASTINTEGRATION,PAYINTEGRATION,RESTINTEGRATION,OGENABLEINTEGRATION,CPENABLEINTEGRATION,PAYTYPE from integration_list_table where USERID='" + userId + "' AND PAYTIME >=to_date('" + startTime + "','yyyy-mm-dd HH24:mi:ss') order by PAYTIME asc";
+ List selectforlist2 = this.imapper.selectforlist(sql1);
+ //处理逻辑
+ for (int k = 0; k < selectforlist2.size(); k++) {
+ Map o1 = (Map) selectforlist2.get(k);
+ String PAYTYPE = (String) o1.get("PAYTYPE");
+ String dataId = ((BigDecimal) o1.get("ID")).toString();
+ BigDecimal PAYINTEGRATION2 = (BigDecimal) o1.get("PAYINTEGRATION");
+ boolean updateCan = false;
+ if ("FC".equals(PAYTYPE) || "FS".equals(PAYTYPE) || "FCA".equals(PAYTYPE)) {//商超及餐饮预约
+ updateCan = true;
+ LASTINTEGRATION = RESTINTEGRATION;
+ RESTINTEGRATION = RESTINTEGRATION.subtract(PAYINTEGRATION2);
+ CPENABLEINTEGRATION = CPENABLEINTEGRATION.subtract(PAYINTEGRATION2);
+
+ } else if ("FP".equals(PAYTYPE) || "FG".equals(PAYTYPE)) {//加油加气
+ updateCan = true;
+ LASTINTEGRATION = RESTINTEGRATION;
+ RESTINTEGRATION = RESTINTEGRATION.subtract(PAYINTEGRATION2);
+ OGENABLEINTEGRATION = OGENABLEINTEGRATION.subtract(PAYINTEGRATION2);
+ } else if ("AM".equals(PAYTYPE)) {//里程积分
+ updateCan = true;
+ LASTINTEGRATION = RESTINTEGRATION;
+ RESTINTEGRATION = RESTINTEGRATION.add(PAYINTEGRATION2);
+ OGENABLEINTEGRATION = OGENABLEINTEGRATION.add(PAYINTEGRATION2.multiply(new BigDecimal("0.6")));
+ CPENABLEINTEGRATION = CPENABLEINTEGRATION.add(PAYINTEGRATION2.multiply(new BigDecimal("0.4")));
+ } else if ("GREENBAK".equals(PAYTYPE)) {//绿通核减
+ updateCan = true;
+ LASTINTEGRATION = RESTINTEGRATION;
+ RESTINTEGRATION = RESTINTEGRATION.add(PAYINTEGRATION2);
+ OGENABLEINTEGRATION = OGENABLEINTEGRATION.add(PAYINTEGRATION2.multiply(new BigDecimal("0.6")));
+ CPENABLEINTEGRATION = CPENABLEINTEGRATION.add(PAYINTEGRATION2.multiply(new BigDecimal("0.4")));
+ } else if ("TK".equals(PAYTYPE)) {//退款
+ updateCan = true;
+ LASTINTEGRATION = RESTINTEGRATION;
+ RESTINTEGRATION = RESTINTEGRATION.add(PAYINTEGRATION2);
+ List selectforlist3 = this.imapper.selectforlist("select ilt.ID,LASTINTEGRATION,ilt.PAYINTEGRATION,ilt.RESTINTEGRATION,ilt.OGENABLEINTEGRATION,ilt.CPENABLEINTEGRATION,ilt.PAYTYPE from integration_list_table ilt,CAFTER_TABLE ct where ilt.ID =ct.INTEGRATIONLISTID AND ct.INTEGRALROLLBACK='" + dataId + "'");
+ if (!selectforlist3.isEmpty()) {
+ Map tk1 = (Map) selectforlist3.get(0);
+ String PAYTYPE2 = (String) tk1.get("PAYTYPE");
+ if ("FC".equals(PAYTYPE2) || "FS".equals(PAYTYPE2)) {//商超
+ CPENABLEINTEGRATION = CPENABLEINTEGRATION.add(PAYINTEGRATION2);
+ } else if ("FP".equals(PAYTYPE2) || "FG".equals(PAYTYPE2)) {//加油加气
+ OGENABLEINTEGRATION = OGENABLEINTEGRATION.add(PAYINTEGRATION2);
+ }
+ }
+ }
+ if (updateCan) {
+ /* this.imapper.update("update integration_list_table set LASTINTEGRATION='" + LASTINTEGRATION + "'" +
+ ",RESTINTEGRATION='" + RESTINTEGRATION + "' " +
+ ",OGENABLEINTEGRATION='" + OGENABLEINTEGRATION + "' " +
+ ",CPENABLEINTEGRATION='" + CPENABLEINTEGRATION + "' " +
+ " where ID='" + dataId + "'");*/
+
+ Map listParams = new HashMap<>();
+ listParams.put("lastintegration", LASTINTEGRATION);
+ listParams.put("restintegration", RESTINTEGRATION);
+ listParams.put("ogenableintegration", OGENABLEINTEGRATION);
+ listParams.put("cpenableintegration", CPENABLEINTEGRATION);
+ listParams.put("dataId", dataId);
+ ret = this.integrationListMapper.updateIntegralList(listParams);
+ if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) {
+ String bakDBType = PropertiesUtil.getValue("BakDBType");
+ listParams.put("DBTYPEBAK", bakDBType);
+ ret = this.integrationListMyMapper.updateIntegralList(listParams);
+ }
+ updateCan = false;
+ }
+ }
+ /* this.imapper.update("update WEIXN_USER_TABLE set ENABLEINTEGRATION='" + RESTINTEGRATION + "'" +
+ ",OGENABLEINTEGRATION='" + OGENABLEINTEGRATION + "' " +
+ ",CPENABLEINTEGRATION='" + CPENABLEINTEGRATION + "' " +
+ " where ID='" + userId + "'");*/
+ Map userParams = new HashMap<>();
+ userParams.put("enabledTICp", CPENABLEINTEGRATION);
+ userParams.put("enabledTIOG", OGENABLEINTEGRATION);
+ userParams.put("enabledTI", RESTINTEGRATION);
+ userParams.put("userId", userId);
+ ret = this.userTableMapper.updateUserByUserId(userParams);
+ if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) {
+ String bakDBType = PropertiesUtil.getValue("BakDBType");
+ userParams.put("DBTYPEBAK", bakDBType);
+ ret = this.userTableMysqlMapper.updateUserByUserId(userParams);
+
+ }
+ }
+ }
+ return ret;
+ }
+}
diff --git a/src/main/java/com/nmgs/service/impl/ServiceAreaServiceImpl.java b/src/main/java/com/nmgs/service/impl/ServiceAreaServiceImpl.java
index 356b67d..f920a23 100644
--- a/src/main/java/com/nmgs/service/impl/ServiceAreaServiceImpl.java
+++ b/src/main/java/com/nmgs/service/impl/ServiceAreaServiceImpl.java
@@ -40,8 +40,8 @@ public class ServiceAreaServiceImpl implements IServiceAreaService {
"\tarea.AREANAME,\n" +
"\t(area.AREANAME||'('||sapt.TEXT||')') AS AREANAMEPOSITION,\n" +
"\tarea.SERVICETYPE,\n" +
- "\tarea.LAT,\n" +
- "\tarea.LNG,\n" +
+ "\tCOALESCE(area.LAT,'') as LAT,\n" +
+ "\tCOALESCE(area.LNG,'') as LNG,\n" +
"\tarea.SERVICEKIND,\n" +
" (select LISTAGG ( kind.TEXT, ', ' ) WITHIN GROUP ( ORDER BY kind.VALUE ) from service_area_kind_text kind where INSTR( area.SERVICEKIND, kind.VALUE ) > 0 GROUP BY area.SERVICEKIND) AS SERVICEKINDNAME,\n" +
"\tarea.SERVICEFEETYPE,\n" +
@@ -68,8 +68,8 @@ static{
"\tconcat(area.AREANAME,'(',sapt.TEXT,')') AS AREANAMEPOSITION,\n" +
"\tarea.SERVICETYPE,\n" +
"\tarea.SERVICEKIND,\n" +
- "\tarea.LAT,\n" +
- "\tarea.LNG,\n" +
+ "\tCOALESCE(area.LAT,'') as LAT,\n" +
+ "\tCOALESCE(area.LNG,'') as LNG,\n" +
" (select GROUP_CONCAT(DISTINCT kind.TEXT ORDER BY kind.VALUE Separator ',') from service_area_kind_text kind where INSTR( area.SERVICEKIND, kind.VALUE ) > 0 GROUP BY area.SERVICEKIND) AS SERVICEKINDNAME,\n" +
"\tarea.SERVICEFEETYPE,\n" +
"(select GROUP_CONCAT(DISTINCT kind2.TEXT ORDER BY kind2.VALUE Separator ',') from service_area_kind_text kind2 where INSTR( area.SERVICEFEETYPE, kind2.VALUE ) > 0 AND kind2.VALUE >=50 GROUP BY area.SERVICEFEETYPE) AS SERVICEFEETYPENAME,\n" +
diff --git a/src/main/java/com/nmgs/service/impl/UserTableServiceImpl.java b/src/main/java/com/nmgs/service/impl/UserTableServiceImpl.java
index 97fc2da..c1ee67c 100644
--- a/src/main/java/com/nmgs/service/impl/UserTableServiceImpl.java
+++ b/src/main/java/com/nmgs/service/impl/UserTableServiceImpl.java
@@ -91,7 +91,7 @@ public class UserTableServiceImpl implements UserTableService {
}
@Override
- @Transactional(value = "jtatransactionManager",timeout = 10)
+ @Transactional(value = "jtatransactionManager", timeout = 40)
public int addUser(String openId, String userName) {
int ret=-1;
//查询全部人员,给list赋值推荐码
@@ -156,7 +156,7 @@ public class UserTableServiceImpl implements UserTableService {
}
@Override
- @Transactional(value = "jtatransactionManager",timeout = 10)
+ @Transactional(value = "jtatransactionManager", timeout = 40)
public int updateUser(String userId,String idNumber,String phone,String realName,String numberPic) {
int ret = 1;
//图片加水印
@@ -274,7 +274,7 @@ public class UserTableServiceImpl implements UserTableService {
String sqlTemp="select " +
" ut.ID ,ut.OPENID ,ut.USERNAME ,ut.PHONE ,ut.UNPASSINFO," +
- " ut.REALNAME," ;
+ " ut.REALNAME,ut.AGE,ut.SEX,ut.EMAIL,ut.HEADPHOTO,";
if("2".equals(DBType)){
sqlTemp+="substr(ut.IDNUMBER,1,6)||'********'||substr(ut.IDNUMBER,15) AS IDNUMBER ,";
}else if("4".equals(DBType)){
@@ -346,4 +346,17 @@ public class UserTableServiceImpl implements UserTableService {
}
return retlist;
}
+
+ @Override
+ public int saveUserInfo(Map map) {
+ int ret = -1;
+ map.put("DBTYPE", DBType);
+ ret = this.userTableMapperOracle.saveUserInfo(map);
+ if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) {
+ String bakDBType = PropertiesUtil.getValue("BakDBType");
+ map.put("DBTYPEBAK", bakDBType);
+ ret = this.userTableMysqlMapper.saveUserInfo(map);
+ }
+ return ret;
+ }
}
diff --git a/src/main/java/com/nmgs/service/impl/UserVehicleServiceImpl.java b/src/main/java/com/nmgs/service/impl/UserVehicleServiceImpl.java
index e63fc14..966c899 100644
--- a/src/main/java/com/nmgs/service/impl/UserVehicleServiceImpl.java
+++ b/src/main/java/com/nmgs/service/impl/UserVehicleServiceImpl.java
@@ -157,6 +157,13 @@ public class UserVehicleServiceImpl implements UserVehicleService {
public int cancelUserVehicle(String userId, String aCarNo) {
int ret=1;
String CREATETIME=PubTools.getCurrentDate() ;
+ //20250801 用户冻结或者积分是负数,则不让解绑
+ String sqlQueryUser = "SELECT OPENID from weixn_user_table wut where wut.ID=" + userId + " and (wut.ENABLEINTEGRATION <0 or wut.OGENABLEINTEGRATION <0 or wut.CPENABLEINTEGRATION <0 or wut.CERTIFICATION =5)";
+ List selectforlistUser = this.mapperI.selectforlist(sqlQueryUser);
+ if (!selectforlistUser.isEmpty()) {
+ return -2;
+
+ }
String sqlQuery = "SELECT uvt.USERID,uvt.ACARNO,uvt.CERTIFICATION,uvt.PERMITPICNAME ,uvt.VEHICLEPICNAME ,uvt.LICENSEPICNAME from user_vehicle_table uvt where uvt.USERID=" + userId + " and uvt.ACARNO='" + aCarNo + "' AND uvt.CERTIFICATION not in(4)";
List selectforlist = this.mapperI.selectforlist(sqlQuery);
if(selectforlist.size()>0){
diff --git a/src/main/java/com/nmgs/util/PubTools.java b/src/main/java/com/nmgs/util/PubTools.java
index 130da7c..84da3d3 100644
--- a/src/main/java/com/nmgs/util/PubTools.java
+++ b/src/main/java/com/nmgs/util/PubTools.java
@@ -292,6 +292,48 @@ public class PubTools {
}
return a;
}
+
+ /**
+ * 指定日期前几天,返回值 带有时分秒
+ *
+ * @param startDay 指定日期
+ * @param count 天数
+ * @return
+ */
+ String getBeforeDaySSSEnd(String startDay, int count) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ try {
+ Date date = sdf.parse(startDay);
+ Calendar cl = Calendar.getInstance();
+ cl.setTime(date);
+ cl.set(Calendar.DATE, cl.get(Calendar.DATE) - count);
+ return sdf.format(cl.getTime()) + " 23:59:59";
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return "";
+ }
+
+ /**
+ * 指定日期前几天
+ *
+ * @param startDay 指定日期
+ * @param count 天数
+ * @return
+ */
+ String getBeforeDay(String startDay, int count) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ try {
+ Date date = sdf.parse(startDay);
+ Calendar cl = Calendar.getInstance();
+ cl.setTime(date);
+ cl.set(Calendar.DATE, cl.get(Calendar.DATE) - count);
+ return sdf.format(cl.getTime());
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return "";
+ }
}
diff --git a/src/main/resources/static/application.properties b/src/main/resources/static/application.properties
index 00434c2..47eee07 100644
--- a/src/main/resources/static/application.properties
+++ b/src/main/resources/static/application.properties
@@ -95,7 +95,8 @@ DMvalidationQuery=SELECT 1
MySQLClassName=com.mysql.cj.jdbc.Driver
MySQLvalidationQuery=SELECT 1
spring.web.resources.static-locations= classpath:/static/View/
-
+#?? MyBatis ???? SQL ????????? NULL???????????????
+mybatis.configuration.call-setters-on-nulls=true
Downfilepth= classpath:/static/tt.txt
#??jta????
spring.jta.enabled=true