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 @@ - + + + - - + + + + + + + + + + + - - + + + + + @@ -152,11 +166,11 @@ + + - - @@ -188,7 +202,7 @@ @@ -896,7 +929,8 @@ - @@ -921,11 +955,6 @@ 115 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