From 4fa049186bf8e12fee993fbadad2745eca1ae7fd Mon Sep 17 00:00:00 2001 From: yang_shj Date: Tue, 8 Mar 2022 09:03:05 +0800 Subject: [PATCH] =?UTF-8?q?feat=200=20=E6=94=AF=E4=BB=98=E5=B7=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- payment-base-app/payment-base-app.iml | 21 +- payment-base-app/pom.xml | 5 +- .../aspect/annotation/LoginRequired.java | 6 + .../springcloud/aspect/annotation/Rlock.java | 42 --- .../aspect/aspect/RlockAspect.java | 118 ------- .../aspect/config/PayConfigurer.java | 4 + .../aspect/config/RedisConfig.java | 61 ---- .../aspect/interceptor/PayInterceptor.java | 11 +- .../com/base/springcloud/bo/DepartBO.java | 18 ++ .../base/springcloud/bo/MerchantConfigBO.java | 16 + .../springcloud/constant/ErrorConstant.java | 5 +- .../controller/MerchantController.java | 11 +- .../base/springcloud/dao/DepartMapper.java | 24 ++ .../dao/PayDepartConfigMapper.java | 19 ++ .../springcloud/dto/MerchantConfigReqDTO.java | 2 +- .../com/base/springcloud/entity/Depart.java | 50 +++ .../springcloud/entity/MerchantConfig.java | 2 +- .../springcloud/entity/PayDepartConfig.java | 55 ++++ .../springcloud/service/DepartService.java | 21 ++ .../service/imp/DepartServiceImp.java | 62 ++++ .../service/imp/MerchantServiceImp.java | 35 ++- .../service/imp/PaymentServiceImp.java | 4 - .../com/base/springcloud/util/TokenUtils.java | 63 ++-- .../com/base/payment/mapper/DepartMapper.xml | 292 ++++++++++++++++++ .../payment/mapper/MerchantConfigMapper.xml | 4 +- .../payment/mapper/PayDepartConfigMapper.xml | 93 ++++++ .../src/main/resources/generatorConfig.xml | 30 +- 27 files changed, 764 insertions(+), 310 deletions(-) delete mode 100644 payment-base-app/src/main/java/com/base/springcloud/aspect/annotation/Rlock.java delete mode 100644 payment-base-app/src/main/java/com/base/springcloud/aspect/aspect/RlockAspect.java delete mode 100644 payment-base-app/src/main/java/com/base/springcloud/aspect/config/RedisConfig.java create mode 100644 payment-base-app/src/main/java/com/base/springcloud/bo/DepartBO.java create mode 100644 payment-base-app/src/main/java/com/base/springcloud/dao/DepartMapper.java create mode 100644 payment-base-app/src/main/java/com/base/springcloud/dao/PayDepartConfigMapper.java create mode 100644 payment-base-app/src/main/java/com/base/springcloud/entity/Depart.java create mode 100644 payment-base-app/src/main/java/com/base/springcloud/entity/PayDepartConfig.java create mode 100644 payment-base-app/src/main/java/com/base/springcloud/service/DepartService.java create mode 100644 payment-base-app/src/main/java/com/base/springcloud/service/imp/DepartServiceImp.java create mode 100644 payment-base-app/src/main/resources/com/base/payment/mapper/DepartMapper.xml create mode 100644 payment-base-app/src/main/resources/com/base/payment/mapper/PayDepartConfigMapper.xml diff --git a/payment-base-app/payment-base-app.iml b/payment-base-app/payment-base-app.iml index 3a03a55..b52b875 100644 --- a/payment-base-app/payment-base-app.iml +++ b/payment-base-app/payment-base-app.iml @@ -29,7 +29,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -124,24 +124,13 @@ + + - - - - - - - - - - - - - - + diff --git a/payment-base-app/pom.xml b/payment-base-app/pom.xml index 522cacb..633edb4 100644 --- a/payment-base-app/pom.xml +++ b/payment-base-app/pom.xml @@ -111,9 +111,8 @@ spring-boot-starter-data-redis - org.redisson - redisson-spring-boot-starter - 3.11.3 + org.apache.commons + commons-pool2 com.alibaba diff --git a/payment-base-app/src/main/java/com/base/springcloud/aspect/annotation/LoginRequired.java b/payment-base-app/src/main/java/com/base/springcloud/aspect/annotation/LoginRequired.java index b6439c9..a589419 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/aspect/annotation/LoginRequired.java +++ b/payment-base-app/src/main/java/com/base/springcloud/aspect/annotation/LoginRequired.java @@ -6,6 +6,12 @@ import java.lang.annotation.*; @Documented @Retention(RetentionPolicy.RUNTIME) public @interface LoginRequired { + // 用户信息 + boolean user() default true; + // 部门 ture - 获取部门信息 boolean department() default false; + + // 公司 ture - 获取公司信息 + boolean company() default false; } \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/aspect/annotation/Rlock.java b/payment-base-app/src/main/java/com/base/springcloud/aspect/annotation/Rlock.java deleted file mode 100644 index 7980e9c..0000000 --- a/payment-base-app/src/main/java/com/base/springcloud/aspect/annotation/Rlock.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.base.springcloud.aspect.annotation; - -import java.lang.annotation.*; -import java.util.concurrent.TimeUnit; - -@Target({ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -public @interface Rlock { - - /** - * 分布式锁的key前缀 - */ - String prefix() default "redisLockPrefix::"; - - /** - * 分布式锁的key动态参数 - */ - String suffix() default "lockDynamicKey"; - - /** - * 等待时间 默认五秒 - * - * @return - */ - long waitTime() default 5; - - /** - * 锁释放时间 默认十秒 - * - * @return - */ - long leaseTime() default 10; - - /** - * 时间格式 默认:秒 - * - * @return - */ - TimeUnit timeUnit() default TimeUnit.SECONDS; -} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/aspect/aspect/RlockAspect.java b/payment-base-app/src/main/java/com/base/springcloud/aspect/aspect/RlockAspect.java deleted file mode 100644 index 9279a75..0000000 --- a/payment-base-app/src/main/java/com/base/springcloud/aspect/aspect/RlockAspect.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.base.springcloud.aspect.aspect; - -import com.base.springcloud.aspect.annotation.Rlock; -import com.base.springcloud.handle.RBSQueueHandler; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.aspectj.lang.reflect.MethodSignature; -import org.redisson.api.RLock; -import org.redisson.api.RedissonClient; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.DefaultParameterNameDiscoverer; -import org.springframework.expression.EvaluationContext; -import org.springframework.expression.Expression; -import org.springframework.expression.spel.standard.SpelExpressionParser; -import org.springframework.expression.spel.support.StandardEvaluationContext; -import org.springframework.stereotype.Component; - -import java.lang.reflect.Method; - -@Aspect -@Component -@Slf4j -public class RlockAspect { - - Logger logger = LoggerFactory.getLogger(RBSQueueHandler.class); - - @Autowired - private RedissonClient redissonClient; - - /** - * 用于SpEL表达式解析. - */ - private SpelExpressionParser parser = new SpelExpressionParser(); - /** - * 用于获取方法参数定义名字. - */ - private DefaultParameterNameDiscoverer nameDiscoverer = new DefaultParameterNameDiscoverer(); - - - - @Pointcut("@annotation(com.base.springcloud.aspect.annotation.Rlock)") - public void RlockAspect() { - } - - @Around("RlockAspect()") - public Object arround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { - Object object = null; - RLock lock = null; - try { - // 获取注解信息 - Rlock rlockInfo = getRlockInfo(proceedingJoinPoint); - String key = getLocalKey(proceedingJoinPoint, rlockInfo); - // 根据名字获取锁实例 - lock = redissonClient.getLock(key); - if (lock != null) { - final boolean status = lock.tryLock(rlockInfo.waitTime(), rlockInfo.leaseTime(), rlockInfo.timeUnit()); - if (status) { - logger.info("锁获取成功,加锁成功 : {}........",key); - object = proceedingJoinPoint.proceed(); - } else { - logger.info("锁被占用,加锁失败 : {} .........",key); - throw new RuntimeException("加锁失败"); - } - } - } finally { - // 方法执行完成释放锁 - if (lock != null && lock.isHeldByCurrentThread()) { - lock.unlock(); - } - } - return object; - } - - public Rlock getRlockInfo(ProceedingJoinPoint proceedingJoinPoint) { - MethodSignature methodSignature = (MethodSignature) proceedingJoinPoint.getSignature(); - return methodSignature.getMethod().getAnnotation(Rlock.class); - } - - /** - * @param proceedingJoinPoint - * @return - */ - public String getLocalKey(ProceedingJoinPoint proceedingJoinPoint, Rlock rlockInfo) { - StringBuilder localKey = new StringBuilder(); - //获取注解参数值 - String prefix = rlockInfo.prefix(); - String spELString = rlockInfo.suffix(); - String key = generateKeyBySpEL(spELString,proceedingJoinPoint); - localKey.append(prefix).append(key); - logger.info("加锁 key :{}",localKey.toString()); - return localKey.toString(); - } - - public String generateKeyBySpEL(String spELString, ProceedingJoinPoint joinPoint) { - // 通过joinPoint获取被注解方法 - MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature(); - Method method = methodSignature.getMethod(); - // 使用spring的DefaultParameterNameDiscoverer获取方法形参名数组 - String[] paramNames = nameDiscoverer.getParameterNames(method); - // 解析过后的Spring表达式对象 - Expression expression = parser.parseExpression(spELString); - // spring的表达式上下文对象 - EvaluationContext context = new StandardEvaluationContext(); - // 通过joinPoint获取被注解方法的形参 - Object[] args = joinPoint.getArgs(); - // 给上下文赋值 - for(int i = 0 ; i < args.length ; i++) { - context.setVariable(paramNames[i], args[i]); - } - // 表达式从上下文中计算出实际参数值 - return expression.getValue(context).toString(); - } -} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/aspect/config/PayConfigurer.java b/payment-base-app/src/main/java/com/base/springcloud/aspect/config/PayConfigurer.java index 88ff99c..fbe477f 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/aspect/config/PayConfigurer.java +++ b/payment-base-app/src/main/java/com/base/springcloud/aspect/config/PayConfigurer.java @@ -2,7 +2,11 @@ package com.base.springcloud.aspect.config; import com.base.springcloud.aspect.interceptor.PayInterceptor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.core.Ordered; import org.springframework.stereotype.Component; +import org.springframework.web.multipart.commons.CommonsMultipartResolver; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; diff --git a/payment-base-app/src/main/java/com/base/springcloud/aspect/config/RedisConfig.java b/payment-base-app/src/main/java/com/base/springcloud/aspect/config/RedisConfig.java deleted file mode 100644 index 2beb139..0000000 --- a/payment-base-app/src/main/java/com/base/springcloud/aspect/config/RedisConfig.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.base.springcloud.aspect.config; - - -import com.base.springcloud.constant.FastJson2JsonRedisSerializer; -import com.fasterxml.jackson.annotation.JsonAutoDetect; -import com.fasterxml.jackson.annotation.PropertyAccessor; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.redisson.Redisson; -import org.redisson.config.Config; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cache.annotation.CachingConfigurerSupport; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.serializer.StringRedisSerializer; - -@Configuration -@EnableCaching -public class RedisConfig extends CachingConfigurerSupport { - - @Value("${spring.redis.host}") - private String host; - - @Value("${spring.redis.port}") - private String port; - - @Value("${spring.redis.password}") - private String password; - - @Bean - @SuppressWarnings(value = {"unchecked", "rawtypes"}) - public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { - RedisTemplate template = new RedisTemplate<>(); - template.setConnectionFactory(redisConnectionFactory); - - FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class); - - ObjectMapper mapper = new ObjectMapper(); - mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); - mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); - serializer.setObjectMapper(mapper); - - template.setValueSerializer(serializer); - // 使用StringRedisSerializer来序列化和反序列化redis的key值 - template.setKeySerializer(new StringRedisSerializer()); - template.afterPropertiesSet(); - return template; - } - - @Bean - public Redisson redisson() { - Config config = new Config(); - config.useSingleServer().setAddress("redis://" + host + ":" + port); - config.useSingleServer().setPassword(password); - // 设置1秒钟ping一次来维持连接 - config.useSingleServer().setPingConnectionInterval(1000); - return (Redisson) Redisson.create(config); - } -} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/aspect/interceptor/PayInterceptor.java b/payment-base-app/src/main/java/com/base/springcloud/aspect/interceptor/PayInterceptor.java index 4a98d85..143c3a7 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/aspect/interceptor/PayInterceptor.java +++ b/payment-base-app/src/main/java/com/base/springcloud/aspect/interceptor/PayInterceptor.java @@ -1,6 +1,7 @@ package com.base.springcloud.aspect.interceptor; import com.base.springcloud.aspect.annotation.LoginRequired; +import com.base.springcloud.entity.User; import com.base.springcloud.util.TokenUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.lang.Nullable; @@ -32,10 +33,16 @@ public class PayInterceptor implements HandlerInterceptor { if (loginRequired == null) return true; // token数据验证 - tokenUtils.verifyToken(request); + User user = tokenUtils.verifyToken(request); + // 用户信息 + if(loginRequired.user()) + tokenUtils.userInfo(request,user.getId()); // 部门信息获取 if(loginRequired.department()) - tokenUtils.departmentInfo(request); + tokenUtils.departmentInfo(request,user.getId()); + // 公司信息获取 + if(loginRequired.company()) + tokenUtils.companyInfo(request,user.getCtCompanyId()); return true; } diff --git a/payment-base-app/src/main/java/com/base/springcloud/bo/DepartBO.java b/payment-base-app/src/main/java/com/base/springcloud/bo/DepartBO.java new file mode 100644 index 0000000..90e5a23 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/bo/DepartBO.java @@ -0,0 +1,18 @@ +package com.base.springcloud.bo; + +import lombok.Data; + +import java.util.List; + +@Data +public class DepartBO { + + // 创建人Id + private String createId; + + // 商户支付配置Id + private String merchantConfigureId; + + // 部门id集合 + private List departIdList; +} diff --git a/payment-base-app/src/main/java/com/base/springcloud/bo/MerchantConfigBO.java b/payment-base-app/src/main/java/com/base/springcloud/bo/MerchantConfigBO.java index 3810465..a47420e 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/bo/MerchantConfigBO.java +++ b/payment-base-app/src/main/java/com/base/springcloud/bo/MerchantConfigBO.java @@ -4,6 +4,7 @@ import lombok.Data; import org.springframework.web.multipart.MultipartFile; import java.io.File; +import java.util.List; @Data public class MerchantConfigBO { @@ -37,4 +38,19 @@ public class MerchantConfigBO { * 支付证书文件 */ private MultipartFile certFile; + + /** + * 创建人 + */ + private String createId; + + /** + * 部门List + */ + private List departIdList; + + /** + * 公司Id + */ + private String companyId; } diff --git a/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java b/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java index 0683403..6f9dba4 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java +++ b/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java @@ -12,7 +12,10 @@ public enum ErrorConstant { BILL_WRITE_OFF_FAIL("RBS00007","销售单据核销失败!"), USER_ERROR("RBS00008","请核对用户信息!"), USER_LOCKING("RBS00009","账号已被锁定,请联系管理员!"), - TOKEN_EXPIRATION_DATE("RBS00010","TOKEN已失效,请重新登录!"); + TOKEN_EXPIRATION_DATE("RBS00010","TOKEN已失效,请重新登录!"), + MERCHANT_CONFIGURE_FAIL("RBS00011","商户支付信息配置失败!"), + USER_DEPART_RELATION_NEED("RBS00012","请用户先关联部门信息!"), + SAVE_PAY_DEPART_CONFIG_FAIL("RBS00013","添加部门商户支付配置信息失败!"); private String code; private String message; diff --git a/payment-base-app/src/main/java/com/base/springcloud/controller/MerchantController.java b/payment-base-app/src/main/java/com/base/springcloud/controller/MerchantController.java index 1fd033c..aab238c 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/controller/MerchantController.java +++ b/payment-base-app/src/main/java/com/base/springcloud/controller/MerchantController.java @@ -14,6 +14,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.stream.Collectors; @@ -28,10 +29,16 @@ public class MerchantController { @ApiOperation(value = "商户支付信息配置", notes = "商户信息配置新增接口") @PostMapping("/merchantConfig") - @LoginRequired(department = true) - public CommonResult paymentConfigure(MerchantConfigReqDTO merchantConfigDTO) { + @LoginRequired(department = true,company = true) + public CommonResult paymentConfigure(MerchantConfigReqDTO merchantConfigDTO, HttpServletRequest request) { + List departIdList = (List) request.getAttribute("departIdList"); + String companyId = (String) request.getAttribute("companyId"); + String createId = (String) request.getAttribute("createId"); MerchantConfigBO merchantConfigBO = new MerchantConfigBO(); BeanUtils.copyProperties(merchantConfigDTO, merchantConfigBO); + merchantConfigBO.setDepartIdList(departIdList); + merchantConfigBO.setCompanyId(companyId); + merchantConfigBO.setCreateId(createId); merchantService.paymentConfigure(merchantConfigBO); return new CommonResult(ErrorConstant.SUECCESS.getCode(), ErrorConstant.SUECCESS.getMessage(), null); } diff --git a/payment-base-app/src/main/java/com/base/springcloud/dao/DepartMapper.java b/payment-base-app/src/main/java/com/base/springcloud/dao/DepartMapper.java new file mode 100644 index 0000000..9473624 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/dao/DepartMapper.java @@ -0,0 +1,24 @@ +package com.base.springcloud.dao; + +import com.base.springcloud.entity.Depart; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface DepartMapper { + int deleteByPrimaryKey(String id); + + int insert(Depart record); + + int insertSelective(Depart record); + + Depart selectByPrimaryKey(String id); + + int updateByPrimaryKeySelective(Depart record); + + int updateByPrimaryKey(Depart record); + + List getUserDepart(@Param("userId")String useId); +} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/dao/PayDepartConfigMapper.java b/payment-base-app/src/main/java/com/base/springcloud/dao/PayDepartConfigMapper.java new file mode 100644 index 0000000..4fc34c1 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/dao/PayDepartConfigMapper.java @@ -0,0 +1,19 @@ +package com.base.springcloud.dao; + +import com.base.springcloud.entity.PayDepartConfig; +import org.springframework.stereotype.Repository; + +@Repository +public interface PayDepartConfigMapper { + int deleteByPrimaryKey(String id); + + int insert(PayDepartConfig record); + + int insertSelective(PayDepartConfig record); + + PayDepartConfig selectByPrimaryKey(String id); + + int updateByPrimaryKeySelective(PayDepartConfig record); + + int updateByPrimaryKey(PayDepartConfig record); +} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigReqDTO.java b/payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigReqDTO.java index bd0df59..2f022d5 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigReqDTO.java +++ b/payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigReqDTO.java @@ -4,7 +4,7 @@ import lombok.Data; import org.springframework.web.multipart.MultipartFile; @Data -public class MerchantConfigReqDTO { +public class MerchantConfigReqDTO{ /** * 微信支付证书文件 diff --git a/payment-base-app/src/main/java/com/base/springcloud/entity/Depart.java b/payment-base-app/src/main/java/com/base/springcloud/entity/Depart.java new file mode 100644 index 0000000..5f9d70f --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/entity/Depart.java @@ -0,0 +1,50 @@ +package com.base.springcloud.entity; + +import lombok.Data; + +import java.util.Date; + +@Data +public class Depart { + private String id; + + private String parentId; + + private String departName; + + private String departNameEn; + + private String departNameAbbr; + + private Integer departOrder; + + private String description; + + private String orgCategory; + + private String orgType; + + private String orgCode; + + private String mobile; + + private String fax; + + private String address; + + private String memo; + + private String status; + + private String delFlag; + + private String createBy; + + private Date createTime; + + private String updateBy; + + private Date updateTime; + + private String ctCompanyId; +} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/entity/MerchantConfig.java b/payment-base-app/src/main/java/com/base/springcloud/entity/MerchantConfig.java index acbe379..eb1b6f8 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/entity/MerchantConfig.java +++ b/payment-base-app/src/main/java/com/base/springcloud/entity/MerchantConfig.java @@ -48,7 +48,7 @@ public class MerchantConfig extends BaseEntity { /** * 创建部门ID */ - private String createDepartId; + private String createCompanyId; /** * 创建时间 diff --git a/payment-base-app/src/main/java/com/base/springcloud/entity/PayDepartConfig.java b/payment-base-app/src/main/java/com/base/springcloud/entity/PayDepartConfig.java new file mode 100644 index 0000000..a210e15 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/entity/PayDepartConfig.java @@ -0,0 +1,55 @@ +package com.base.springcloud.entity; + +import java.util.Date; + +public class PayDepartConfig { + private String id; + + private String mechantConfigId; + + private String departId; + + private String createId; + + private Date createTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMechantConfigId() { + return mechantConfigId; + } + + public void setMechantConfigId(String mechantConfigId) { + this.mechantConfigId = mechantConfigId; + } + + public String getDepartId() { + return departId; + } + + public void setDepartId(String departId) { + this.departId = departId; + } + + public String getCreateId() { + return createId; + } + + public void setCreateId(String createId) { + this.createId = createId; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } +} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/DepartService.java b/payment-base-app/src/main/java/com/base/springcloud/service/DepartService.java new file mode 100644 index 0000000..e747d5f --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/service/DepartService.java @@ -0,0 +1,21 @@ +package com.base.springcloud.service; + +import com.base.springcloud.bo.DepartBO; + +import java.util.List; + +public interface DepartService { + + /** + * 获取用户部门 + * @param userId + * @return + */ + List getUserDepart(String userId); + + /** + * 保存商户部门信息 + * @param departBO + */ + void savePayDepart(DepartBO departBO); +} diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/DepartServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/DepartServiceImp.java new file mode 100644 index 0000000..e3abe2e --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/DepartServiceImp.java @@ -0,0 +1,62 @@ +package com.base.springcloud.service.imp; + +import com.base.springcloud.aspect.annotation.BusinessException; +import com.base.springcloud.bo.DepartBO; +import com.base.springcloud.constant.ErrorConstant; +import com.base.springcloud.dao.DepartMapper; +import com.base.springcloud.dao.PayDepartConfigMapper; +import com.base.springcloud.entity.PayDepartConfig; +import com.base.springcloud.service.DepartService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +@Service +public class DepartServiceImp implements DepartService { + + Logger logger = LoggerFactory.getLogger(DepartServiceImp.class); + + @Autowired + private DepartMapper departMapper; + + @Autowired + private PayDepartConfigMapper payDepartConfigMapper; + + /** + * 获取用户部门 + * @param userId + * @return + */ + @Override + public List getUserDepart(String userId) { + return departMapper.getUserDepart(userId); + } + + /** + * 保存商户部门信息 + * @param departBO + */ + @Override + public void savePayDepart(DepartBO departBO) { + List departIdList = departBO.getDepartIdList(); + if(!Optional.ofNullable(departIdList).isPresent()) + throw new BusinessException(ErrorConstant.USER_DEPART_RELATION_NEED); + for (String depart : departIdList){ + PayDepartConfig payDepartConfig = new PayDepartConfig(); + payDepartConfig.setId(UUID.randomUUID().toString().replace("-", "")); + payDepartConfig.setCreateId(departBO.getCreateId()); + payDepartConfig.setCreateTime(new Date()); + payDepartConfig.setDepartId(depart); + payDepartConfig.setMechantConfigId(departBO.getMerchantConfigureId()); + int count = payDepartConfigMapper.insert(payDepartConfig); + if(count < 1) + throw new BusinessException(ErrorConstant.SAVE_PAY_DEPART_CONFIG_FAIL); + } + } +} diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java index fbfab55..5eb3a0b 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java @@ -1,18 +1,15 @@ package com.base.springcloud.service.imp; import com.base.springcloud.aspect.annotation.BusinessException; -import com.base.springcloud.aspect.annotation.LoginRequired; +import com.base.springcloud.bo.DepartBO; import com.base.springcloud.bo.MerchantConfigBO; import com.base.springcloud.bo.OrderBO; import com.base.springcloud.constant.ErrorConstant; import com.base.springcloud.dao.MerchantConfigMapper; import com.base.springcloud.entity.MerchantConfig; +import com.base.springcloud.service.DepartService; import com.base.springcloud.service.MerchantService; -import com.base.springcloud.util.DateUtil; import com.base.springcloud.util.FtpUtil; -import com.base.springcloud.wxsdk.MyConfig; -import com.base.springcloud.wxsdk.WXPay; -import com.base.springcloud.wxsdk.WXPayUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -21,7 +18,10 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.*; -import java.util.*; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.UUID; import java.util.stream.Collectors; @Service @@ -30,6 +30,9 @@ public class MerchantServiceImp implements MerchantService { @Autowired private MerchantConfigMapper merchantConfigMapper; + @Autowired + private DepartService departService; + @Autowired private FtpUtil ftpUtil; @@ -43,16 +46,24 @@ public class MerchantServiceImp implements MerchantService { @Override public void paymentConfigure(MerchantConfigBO merchantConfigBO) { // 证书上传服务器 - String certPath = uplodWecWindow(merchantConfigBO.getMchId(),merchantConfigBO.getCertFile()); + //String certPath = uplodWecWindow(merchantConfigBO.getMchId(),merchantConfigBO.getCertFile()); // 商户支付信息保存 MerchantConfig merchantConfig = new MerchantConfig(); merchantConfig.setId(UUID.randomUUID().toString().replace("-", "")); + merchantConfig.setCreateId(merchantConfigBO.getCreateId()); merchantConfig.setCreateTime(new Date()); - merchantConfig.setCertPath(certPath); + merchantConfig.setCreateCompanyId(merchantConfigBO.getCompanyId()); + //merchantConfig.setCertPath(certPath); BeanUtils.copyProperties(merchantConfigBO,merchantConfig); int count = merchantConfigMapper.insert(merchantConfig); - if(count > 0) return; - // TODO 抛出业务异常 + if(count < 1) + throw new BusinessException(ErrorConstant.MERCHANT_CONFIGURE_FAIL); + // 保存商户部门信息 + DepartBO departBO = new DepartBO(); + departBO.setDepartIdList(merchantConfigBO.getDepartIdList()); + departBO.setMerchantConfigureId(merchantConfig.getId()); + departBO.setCreateId(merchantConfigBO.getCreateId()); + departService.savePayDepart(departBO); } /** @@ -188,7 +199,7 @@ public class MerchantServiceImp implements MerchantService { return null; } - public static void main(String[] args) throws Exception { + /*public static void main(String[] args) throws Exception { MyConfig config = new MyConfig(); WXPay wxPay = new WXPay(config); @@ -212,5 +223,5 @@ public class MerchantServiceImp implements MerchantService { Map responseMap = wxPay.microPay(data); //判断是否成功 System.out.println("微信返回响应:" + responseMap.toString()); - } + }*/ } \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java index 93b91ca..9d5bafc 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java @@ -1,11 +1,8 @@ package com.base.springcloud.service.imp; -import com.base.springcloud.aspect.annotation.Rlock; import com.base.springcloud.bo.OrderBO; import com.base.springcloud.bo.SaleBillBO; -import com.base.springcloud.constant.PaymentConstant; import com.base.springcloud.entity.Order; -import com.base.springcloud.entity.SaleBill; import com.base.springcloud.service.*; import com.base.springcloud.util.DecimalUtil; import org.slf4j.Logger; @@ -74,7 +71,6 @@ public class PaymentServiceImp implements PaymentService { * @param orderBO */ @Override - @Rlock(prefix = PaymentConstant.ORDER_LOCK_PREFIX, suffix = "#orderBO.order.orderNo",waitTime = 0,leaseTime = 60) public void queryOrder(OrderBO orderBO) { // 参数检查 Order order = Optional.ofNullable(orderBO).map(o->orderBO.getOrder()).orElse(null); diff --git a/payment-base-app/src/main/java/com/base/springcloud/util/TokenUtils.java b/payment-base-app/src/main/java/com/base/springcloud/util/TokenUtils.java index 1564597..2a31932 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/util/TokenUtils.java +++ b/payment-base-app/src/main/java/com/base/springcloud/util/TokenUtils.java @@ -4,13 +4,15 @@ import com.base.springcloud.aspect.annotation.BusinessException; import com.base.springcloud.constant.ErrorConstant; import com.base.springcloud.constant.PaymentConstant; import com.base.springcloud.entity.User; +import com.base.springcloud.service.DepartService; import com.base.springcloud.service.UserService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Optional; @Component public class TokenUtils { @@ -19,22 +21,15 @@ public class TokenUtils { private UserService userService; @Autowired - private RedisUtil redisUtil; + private RedisUtil redisService; - private static UserService service; - - private static RedisUtil redisService; - - @PostConstruct - public void init() { - service= this.userService; - redisService = this.redisUtil; - } + @Autowired + private DepartService departService; /** * Token验证 */ - public static void verifyToken(HttpServletRequest request) { + public User verifyToken(HttpServletRequest request) { // 从请求头获取token String token = request.getHeader("X-Access-Token"); @@ -52,32 +47,62 @@ public class TokenUtils { throw new BusinessException(ErrorConstant.ILLEGAL_TOKEN); // 查询用户信息 - User user = service.getUser(username); + User user = userService.getUser(username); // 校验token是否超时失效 & 或者账号密码是否错误 - TokenValidity(token,user,redisService); + //this.TokenValidity(token,user); + + return user; } /** * TOKEN有效期校验 + * * @param token * @param user */ - public static void TokenValidity(String token, User user,RedisUtil redisService) { + public void TokenValidity(String token, User user) { String redisToken = String.valueOf(redisService.get(PaymentConstant.TOKEN_PREFIX + token)); - if(StringUtils.isBlank(redisToken)) + if (StringUtils.isBlank(redisToken)) throw new BusinessException(ErrorConstant.TOKEN_EXPIRATION_DATE); - if(!JwtUtil.verify(redisToken, user.getUserName(), user.getPassword())) + if (!JwtUtil.verify(redisToken, user.getUserName(), user.getPassword())) throw new BusinessException(ErrorConstant.ILLEGAL_TOKEN); - String newAuthorization = JwtUtil.sign(user.getUserName(), user.getPassword()); + String newAuthorization = JwtUtil.sign(user.getUserName(), user.getPassword()); // 设置Toekn缓存有效时间 redisService.set(PaymentConstant.TOKEN_PREFIX + token, newAuthorization); redisService.expire(PaymentConstant.TOKEN_PREFIX + token, JwtUtil.EXPIRE_TIME * 2 / 1000); } + /** + * 获取用户信息 + * @param request + * @param userId + */ + public void userInfo(HttpServletRequest request, String userId) { + if(StringUtils.isBlank(userId)) return; + request.setAttribute("userId",userId); + } - public static void departmentInfo(HttpServletRequest request) { + /** + * 获取用户部门 + * + * @param request + * @param userId + */ + public void departmentInfo(HttpServletRequest request, String userId) { + List departIdList = departService.getUserDepart(userId); + if (!Optional.ofNullable(departIdList).isPresent()) return; + request.setAttribute("departIdList",departIdList); + } + /** + * 获取公司信息 + * @param request + * @param companyId + */ + public void companyInfo(HttpServletRequest request, String companyId) { + if(StringUtils.isBlank(companyId)) return; + request.setAttribute("companyId",companyId); } } diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/DepartMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/DepartMapper.xml new file mode 100644 index 0000000..f4a0858 --- /dev/null +++ b/payment-base-app/src/main/resources/com/base/payment/mapper/DepartMapper.xml @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, parent_id, depart_name, depart_name_en, depart_name_abbr, depart_order, description, + org_category, org_type, org_code, mobile, fax, address, memo, status, del_flag, create_by, + create_time, update_by, update_time, ct_company_id + + + + delete from sys_depart + where id = #{id,jdbcType=VARCHAR} + + + insert into sys_depart (id, parent_id, depart_name, + depart_name_en, depart_name_abbr, depart_order, + description, org_category, org_type, + org_code, mobile, fax, + address, memo, status, + del_flag, create_by, create_time, + update_by, update_time, ct_company_id + ) + values (#{id,jdbcType=VARCHAR}, #{parentId,jdbcType=VARCHAR}, #{departName,jdbcType=VARCHAR}, + #{departNameEn,jdbcType=VARCHAR}, #{departNameAbbr,jdbcType=VARCHAR}, #{departOrder,jdbcType=INTEGER}, + #{description,jdbcType=VARCHAR}, #{orgCategory,jdbcType=VARCHAR}, #{orgType,jdbcType=VARCHAR}, + #{orgCode,jdbcType=VARCHAR}, #{mobile,jdbcType=VARCHAR}, #{fax,jdbcType=VARCHAR}, + #{address,jdbcType=VARCHAR}, #{memo,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, + #{delFlag,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{ctCompanyId,jdbcType=VARCHAR} + ) + + + insert into sys_depart + + + id, + + + parent_id, + + + depart_name, + + + depart_name_en, + + + depart_name_abbr, + + + depart_order, + + + description, + + + org_category, + + + org_type, + + + org_code, + + + mobile, + + + fax, + + + address, + + + memo, + + + status, + + + del_flag, + + + create_by, + + + create_time, + + + update_by, + + + update_time, + + + ct_company_id, + + + + + #{id,jdbcType=VARCHAR}, + + + #{parentId,jdbcType=VARCHAR}, + + + #{departName,jdbcType=VARCHAR}, + + + #{departNameEn,jdbcType=VARCHAR}, + + + #{departNameAbbr,jdbcType=VARCHAR}, + + + #{departOrder,jdbcType=INTEGER}, + + + #{description,jdbcType=VARCHAR}, + + + #{orgCategory,jdbcType=VARCHAR}, + + + #{orgType,jdbcType=VARCHAR}, + + + #{orgCode,jdbcType=VARCHAR}, + + + #{mobile,jdbcType=VARCHAR}, + + + #{fax,jdbcType=VARCHAR}, + + + #{address,jdbcType=VARCHAR}, + + + #{memo,jdbcType=VARCHAR}, + + + #{status,jdbcType=VARCHAR}, + + + #{delFlag,jdbcType=VARCHAR}, + + + #{createBy,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{updateBy,jdbcType=VARCHAR}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{ctCompanyId,jdbcType=VARCHAR}, + + + + + update sys_depart + + + parent_id = #{parentId,jdbcType=VARCHAR}, + + + depart_name = #{departName,jdbcType=VARCHAR}, + + + depart_name_en = #{departNameEn,jdbcType=VARCHAR}, + + + depart_name_abbr = #{departNameAbbr,jdbcType=VARCHAR}, + + + depart_order = #{departOrder,jdbcType=INTEGER}, + + + description = #{description,jdbcType=VARCHAR}, + + + org_category = #{orgCategory,jdbcType=VARCHAR}, + + + org_type = #{orgType,jdbcType=VARCHAR}, + + + org_code = #{orgCode,jdbcType=VARCHAR}, + + + mobile = #{mobile,jdbcType=VARCHAR}, + + + fax = #{fax,jdbcType=VARCHAR}, + + + address = #{address,jdbcType=VARCHAR}, + + + memo = #{memo,jdbcType=VARCHAR}, + + + status = #{status,jdbcType=VARCHAR}, + + + del_flag = #{delFlag,jdbcType=VARCHAR}, + + + create_by = #{createBy,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_by = #{updateBy,jdbcType=VARCHAR}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + ct_company_id = #{ctCompanyId,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=VARCHAR} + + + update sys_depart + set parent_id = #{parentId,jdbcType=VARCHAR}, + depart_name = #{departName,jdbcType=VARCHAR}, + depart_name_en = #{departNameEn,jdbcType=VARCHAR}, + depart_name_abbr = #{departNameAbbr,jdbcType=VARCHAR}, + depart_order = #{departOrder,jdbcType=INTEGER}, + description = #{description,jdbcType=VARCHAR}, + org_category = #{orgCategory,jdbcType=VARCHAR}, + org_type = #{orgType,jdbcType=VARCHAR}, + org_code = #{orgCode,jdbcType=VARCHAR}, + mobile = #{mobile,jdbcType=VARCHAR}, + fax = #{fax,jdbcType=VARCHAR}, + address = #{address,jdbcType=VARCHAR}, + memo = #{memo,jdbcType=VARCHAR}, + status = #{status,jdbcType=VARCHAR}, + del_flag = #{delFlag,jdbcType=VARCHAR}, + create_by = #{createBy,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_by = #{updateBy,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + ct_company_id = #{ctCompanyId,jdbcType=VARCHAR} + where id = #{id,jdbcType=VARCHAR} + + + \ No newline at end of file diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml index 5608eae..77a53d9 100644 --- a/payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml +++ b/payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml @@ -28,11 +28,11 @@ insert into pay_merchant_config (id, app_id, api_key, - cert_path, serial_no,mch_id,mch_private_key, create_id, create_depart_id, + cert_path, serial_no,mch_id,mch_private_key, create_id, create_company_id, create_time, time_stamp) values (#{id,jdbcType=VARCHAR}, #{appId,jdbcType=VARCHAR}, #{apiKey,jdbcType=VARCHAR}, #{certPath,jdbcType=VARCHAR}, #{serialNo,jdbcType=VARCHAR},#{mchId,jdbcType=VARCHAR}, #{mchPrivateKey,jdbcType=VARCHAR}, - #{createId,jdbcType=VARCHAR}, #{createDepartId,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{createId,jdbcType=VARCHAR}, #{createCompanyId,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{timeStamp,jdbcType=TIMESTAMP}) diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/PayDepartConfigMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/PayDepartConfigMapper.xml new file mode 100644 index 0000000..658f8dd --- /dev/null +++ b/payment-base-app/src/main/resources/com/base/payment/mapper/PayDepartConfigMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + id, mechant_config_id, depart_id, create_id, create_time + + + + delete from pay_depart_config + where id = #{id,jdbcType=VARCHAR} + + + insert into pay_depart_config (id, mechant_config_id, depart_id, + create_id, create_time) + values (#{id,jdbcType=VARCHAR}, #{mechantConfigId,jdbcType=VARCHAR}, #{departId,jdbcType=VARCHAR}, + #{createId,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}) + + + insert into pay_depart_config + + + id, + + + mechant_config_id, + + + depart_id, + + + create_id, + + + create_time, + + + + + #{id,jdbcType=VARCHAR}, + + + #{mechantConfigId,jdbcType=VARCHAR}, + + + #{departId,jdbcType=VARCHAR}, + + + #{createId,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + + + update pay_depart_config + + + mechant_config_id = #{mechantConfigId,jdbcType=VARCHAR}, + + + depart_id = #{departId,jdbcType=VARCHAR}, + + + create_id = #{createId,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + where id = #{id,jdbcType=VARCHAR} + + + update pay_depart_config + set mechant_config_id = #{mechantConfigId,jdbcType=VARCHAR}, + depart_id = #{departId,jdbcType=VARCHAR}, + create_id = #{createId,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP} + where id = #{id,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/payment-base-app/src/main/resources/generatorConfig.xml b/payment-base-app/src/main/resources/generatorConfig.xml index 47e9246..e3cad5c 100644 --- a/payment-base-app/src/main/resources/generatorConfig.xml +++ b/payment-base-app/src/main/resources/generatorConfig.xml @@ -60,39 +60,17 @@ - - - - - - - - - - - - - - - - - - - - + + + - - - - - -
\ No newline at end of file