diff --git a/payment-base-app/payment-base-app.iml b/payment-base-app/payment-base-app.iml index 77af3c2..a2bbd1d 100644 --- a/payment-base-app/payment-base-app.iml +++ b/payment-base-app/payment-base-app.iml @@ -141,6 +141,8 @@ + + @@ -168,17 +170,9 @@ + - - - - - - - - - diff --git a/payment-base-app/pom.xml b/payment-base-app/pom.xml index d408ada..4c291d9 100644 --- a/payment-base-app/pom.xml +++ b/payment-base-app/pom.xml @@ -151,42 +151,17 @@ - + commons-httpclient commons-httpclient 3.1 - - commons-logging - commons-logging - 1.1 - - - commons-codec - commons-codec - 1.3 - commons-lang commons-lang 2.3 - - bcprov-ext-jdk15on - bcprov-ext-jdk15on - 1.4.6 - - - hiiposm_engine_simple - hiiposm_engine_simple - 2.3.4 - - - securityAPI-client - securityAPI-client - 1.0.0 - @@ -252,27 +227,4 @@ - - - - maven-public - maven-public - http://maven.hnrr.com.cn/repository/maven-public/ - - true - - - - - - nexus-releases - maven-releases - http://maven.hnrr.com.cn/repository/maven-releases/ - - - nexus-snapshots - maven-snapshots - http://maven.hnrr.com.cn/repository/maven-snapshots/ - - \ No newline at end of file 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 new file mode 100644 index 0000000..b6439c9 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/aspect/annotation/LoginRequired.java @@ -0,0 +1,11 @@ +package com.base.springcloud.aspect.annotation; + +import java.lang.annotation.*; + +@Target(ElementType.METHOD) +@Documented +@Retention(RetentionPolicy.RUNTIME) +public @interface LoginRequired { + // 部门 ture - 获取部门信息 + boolean department() default false; +} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/aspect/aspect/WebMvcConfiguration.java b/payment-base-app/src/main/java/com/base/springcloud/aspect/aspect/WebMvcConfiguration.java deleted file mode 100644 index 182c36c..0000000 --- a/payment-base-app/src/main/java/com/base/springcloud/aspect/aspect/WebMvcConfiguration.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.base.springcloud.aspect.aspect; - -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.CorsRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -/** - * Spring Boot 2.0 解决跨域问题 - * - * @Author qinfeng - * - */ -@Configuration -public class WebMvcConfiguration implements WebMvcConfigurer { - - - @Override - public void addCorsMappings(CorsRegistry registry){ - // 设置允许跨域的路由 - registry.addMapping("/**") - // 设置允许跨域请求的域名------------修改此行 - .allowedOrigins("*") - // 是否允许证书(cookies) - .allowCredentials(true) - // 设置允许的方法 - .allowedMethods("*") - // 跨域允许时间 - .maxAge(3600); - } - - -} 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 new file mode 100644 index 0000000..93af01f --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/aspect/config/PayConfigurer.java @@ -0,0 +1,25 @@ +package com.base.springcloud.aspect.config; + +import com.base.springcloud.aspect.interceptor.PayInterceptor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +public class PayConfigurer implements WebMvcConfigurer { + + @Autowired + private PayInterceptor payInterceptor; + + // 拦截器请求 :'/merchant/**','/payment/**' + @Override + public void addInterceptors(InterceptorRegistry registry){ + registry.addInterceptor(payInterceptor).addPathPatterns("/merchant/**","/payment/**"); + } + + // 跨域配置 + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**").allowCredentials(true).allowedOrigins("*").allowedMethods("GET", "PUT", "DELETE", "POST", "OPTIONS").maxAge(3600); + } +} diff --git a/payment-base-app/src/main/java/com/base/springcloud/constant/RedisConfig.java b/payment-base-app/src/main/java/com/base/springcloud/aspect/config/RedisConfig.java similarity index 94% rename from payment-base-app/src/main/java/com/base/springcloud/constant/RedisConfig.java rename to payment-base-app/src/main/java/com/base/springcloud/aspect/config/RedisConfig.java index da09b29..266771b 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/constant/RedisConfig.java +++ b/payment-base-app/src/main/java/com/base/springcloud/aspect/config/RedisConfig.java @@ -1,6 +1,7 @@ -package com.base.springcloud.constant; +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; 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 new file mode 100644 index 0000000..4a98d85 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/aspect/interceptor/PayInterceptor.java @@ -0,0 +1,52 @@ +package com.base.springcloud.aspect.interceptor; + +import com.base.springcloud.aspect.annotation.LoginRequired; +import com.base.springcloud.util.TokenUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.Nullable; +import org.springframework.stereotype.Component; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Component +public class PayInterceptor implements HandlerInterceptor { + + @Autowired + private TokenUtils tokenUtils; + + // 在业务处理器处理请求之前被调用 + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + LoginRequired loginRequired; + // 根据注解拦截请求 + if (handler instanceof HandlerMethod) { + loginRequired = ((HandlerMethod)handler).getMethodAnnotation(LoginRequired.class); + } else { + return true; + } + // 说明此方法没有LoginRequired注解 + if (loginRequired == null) + return true; + // token数据验证 + tokenUtils.verifyToken(request); + // 部门信息获取 + if(loginRequired.department()) + tokenUtils.departmentInfo(request); + return true; + } + + // 在业务处理器处理请求执行完成后 + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView){ + + }; + + // 在DispatcherServlet完全处理完请求后被调用 + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex){ + + } +} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/bo/RefundBO.java b/payment-base-app/src/main/java/com/base/springcloud/bo/RefundBO.java index 3bdefa1..8d54311 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/bo/RefundBO.java +++ b/payment-base-app/src/main/java/com/base/springcloud/bo/RefundBO.java @@ -9,24 +9,21 @@ import java.math.BigDecimal; @Data public class RefundBO extends MchConfigEntity implements Serializable { - // 销售退款单据号 - private String billRefundNo; + // 退款单据编号 + private String billId; - // 原交易订单号即支付订单号 + // 原订单编号 private String origOrderNo; - // 原订单金额 - private BigDecimal orderAmount; - // 退款订单号 private String refundNo; + // 退款原因 + private String reason; + // 退款金额 private BigDecimal refundAmount; // 退款通知地址 private String notifyUrl; - - // 退款原因 - private String reason; } 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 5f5c173..0683403 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 @@ -3,11 +3,16 @@ package com.base.springcloud.constant; public enum ErrorConstant { SUECCESS("RBS00000","交易成功!"), - NULL_OBJ("RBS00001","参数异常!"), - MCH_ID_PARAM_ERR("RBS00002","商户支付配置异常!"), - BILL_AMOUNT_ERR("RBS00003","销售单合计结算金额异常!"), - BILL_INVALID("RBS00004","无效销售单据!"), - BILL_WRITE_OFF_FAIL("RBS00005","销售单据核销失败!"); + INVALID_TOKEN("RBS00001","无效TOKEN!"), + ILLEGAL_TOKEN("RBS00002","非法TOKEN!"), + NULL_OBJ("RBS00003","参数异常!"), + MCH_ID_PARAM_ERR("RBS00004","商户支付配置异常!"), + BILL_AMOUNT_ERR("RBS00005","销售单合计结算金额异常!"), + BILL_INVALID("RBS00006","无效销售单据!"), + BILL_WRITE_OFF_FAIL("RBS00007","销售单据核销失败!"), + USER_ERROR("RBS00008","请核对用户信息!"), + USER_LOCKING("RBS00009","账号已被锁定,请联系管理员!"), + TOKEN_EXPIRATION_DATE("RBS00010","TOKEN已失效,请重新登录!"); private String code; private String message; diff --git a/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java b/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java index f70767e..9c4c511 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java +++ b/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java @@ -2,38 +2,19 @@ package com.base.springcloud.constant; public interface PaymentConstant { - String CHARACTER_SET = "00"; // 字符集默认 : 00 - GBK - String CALLBACK_URL = "www.baidu.com"; // 页面通知地址 - String NOTIFY_URL = "www.baidu.com"; // 后台通知地址 - String SIGN_TYPE = "RSA"; // 签名类型 + String TOKEN_PREFIX = "prefix_user_token_"; // TOKEN前缀 String WAIT = "W"; // 等待付款 - String SUECCESS = "S"; // 支付成功 String WX_SUCCESS = "SUCCESS"; // 微信支付成功状态 - String REFUND = "R"; // 退款成功 - String CANCLE = "C"; // 撤销 - - String WEC = "WEC"; // 微信 - String QRCWC = "QRCWC"; - - String AL = "AL"; // 支付宝 - String QRCAL = "QRCAL"; - - String CP = "CP"; // 云闪付 - String QRCCP = "QRCCP"; - - String HB = "HB"; // 和包 - String QRCHB = "QRCHB"; String NATIVE = "Native"; // Native支付 String H5 = "H5"; // H5支付 String JSAPI = "Jsapi"; // JSAPI支付 - String ORDER_QUEUE = "order_queue"; // 订单队列 String ORDER_LOCK_PREFIX = "ORDER_KEY:"; // 订单锁前缀 String DEFAULT_MCH_ID = "1537100771"; // 默认商户ID - String METHOD_GET = "GET"; // GET请求 - String METHOD_POST = "POST"; // POST请求 String WX_ORDER_QUERY_URL = "https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/"; + + } diff --git a/payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java b/payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java index ebd9f44..2f0a482 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java +++ b/payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java @@ -1,10 +1,13 @@ package com.base.springcloud.controller; +import com.base.springcloud.aspect.annotation.LoginRequired; +import com.base.springcloud.base.CommonResult; import com.base.springcloud.base.ReportResult; import com.base.springcloud.bo.OrderBO; -import com.base.springcloud.constant.PaymentConstant; -import com.base.springcloud.dto.NativePlaceOrderDTO; +import com.base.springcloud.bo.RefundBO; +import com.base.springcloud.constant.ErrorConstant; import com.base.springcloud.service.PaymentService; +import com.base.springcloud.service.RefundService; import com.base.springcloud.util.ParameterUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -15,9 +18,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; - @RestController @Slf4j @Api(tags="支付管理") @@ -30,11 +30,23 @@ public class PaymentController { @Autowired private PaymentService paymentService; + @Autowired + private RefundService refundService; + @ApiOperation(value = "native下单", notes = "微信native下单") + @LoginRequired(department=true) @GetMapping("/nativePlaceOrder") public ReportResult nativePlaceOrder(@RequestParam String salesBillId) { OrderBO orderBO = parameterUtil.nativePlaceOrderBefore(salesBillId); String codeUrl = paymentService.placeOrder(orderBO); return new ReportResult(parameterUtil.nativePlaceOrderAfter(codeUrl)); } + + @ApiOperation(value = "退款", notes = "微信退款") + @GetMapping("/refund") + public CommonResult refund(@RequestParam String billId) { + RefundBO refundBO = parameterUtil.refundBefore(billId); + refundService.refund(refundBO); + return new CommonResult(ErrorConstant.SUECCESS.getCode(), ErrorConstant.SUECCESS.getMessage(),null); + } } diff --git a/payment-base-app/src/main/java/com/base/springcloud/dao/UserMapper.java b/payment-base-app/src/main/java/com/base/springcloud/dao/UserMapper.java new file mode 100644 index 0000000..e73d836 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/dao/UserMapper.java @@ -0,0 +1,22 @@ +package com.base.springcloud.dao; + +import com.base.springcloud.entity.User; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserMapper { + int deleteByPrimaryKey(String id); + + int insert(User record); + + int insertSelective(User record); + + User selectByPrimaryKey(String id); + + int updateByPrimaryKeySelective(User record); + + int updateByPrimaryKey(User record); + + User getUser(@Param("userName") String userName); +} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/entity/User.java b/payment-base-app/src/main/java/com/base/springcloud/entity/User.java new file mode 100644 index 0000000..d928051 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/entity/User.java @@ -0,0 +1,62 @@ +package com.base.springcloud.entity; + +import lombok.Data; + +import java.util.Date; + +@Data +public class User { + private String id; + + private String userName; + + private String realName; + + private String password; + + private String salt; + + private String avatar; + + private Date birthday; + + private Integer sex; + + private String email ; + + private String phone; + + private String orgCode; + + private Integer status; + + private Integer delFlag; + + private String thirdId; + + private String thirdType; + + private Integer activitiSync; + + private String workNo; + + private String post; + + private String telephone; + + private String createBy; + + private Date createTime; + + private String updateBy; + + private Date updateTime; + + private Integer userIdentity; + + private String departIds; + + private String ctCompanyId; + + private Integer accountType; +} \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/RefundService.java b/payment-base-app/src/main/java/com/base/springcloud/service/RefundService.java new file mode 100644 index 0000000..406467c --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/service/RefundService.java @@ -0,0 +1,12 @@ +package com.base.springcloud.service; + +import com.base.springcloud.bo.RefundBO; + +public interface RefundService { + + /** + * 退款 + * @param refundBO + */ + void refund(RefundBO refundBO); +} diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/UserService.java b/payment-base-app/src/main/java/com/base/springcloud/service/UserService.java new file mode 100644 index 0000000..8c4ef06 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/service/UserService.java @@ -0,0 +1,19 @@ +package com.base.springcloud.service; + +import com.base.springcloud.entity.User; + +public interface UserService { + + /** + * 获取用户信息 + * @param userName + */ + User getUser(String userName); + + /** + * TOKEN有效期校验 + * @param token + * @param user + */ + void TokenValidity(String token, User user); +} diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java b/payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java index e564616..ac39dce 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java @@ -3,17 +3,9 @@ package com.base.springcloud.service; import com.base.springcloud.bo.CodePayBO; import com.base.springcloud.bo.OrderBO; import com.base.springcloud.bo.RefundBO; -import com.base.springcloud.entity.Order; public interface WecPaymentService { - /** - * Native支付 - * @param orderBO - * @return - */ - String nativePay(OrderBO orderBO); - /** * 微信Native支付 * @param orderBO 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 042b8b3..c942013 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 @@ -12,7 +12,7 @@ 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.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java new file mode 100644 index 0000000..f368b0b --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java @@ -0,0 +1,14 @@ +package com.base.springcloud.service.imp; + +import com.base.springcloud.bo.RefundBO; +import com.base.springcloud.service.RefundService; +import org.springframework.stereotype.Service; + +@Service +public class RefundServiceImp implements RefundService { + + @Override + public void refund(RefundBO refundBO) { + + } +} diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/UserServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/UserServiceImp.java new file mode 100644 index 0000000..bfd9939 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/UserServiceImp.java @@ -0,0 +1,64 @@ +package com.base.springcloud.service.imp; + +import com.base.springcloud.aspect.annotation.BusinessException; +import com.base.springcloud.constant.ErrorConstant; +import com.base.springcloud.constant.PaymentConstant; +import com.base.springcloud.dao.UserMapper; +import com.base.springcloud.entity.User; +import com.base.springcloud.service.UserService; +import com.base.springcloud.util.JwtUtil; +import com.base.springcloud.util.RedisUtil; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +public class UserServiceImp implements UserService { + + @Autowired + private UserMapper userMapper; + + @Autowired + private RedisUtil redisService; + + /** + * 获取用户信息 + * @param userName + * @return + */ + @Override + @Cacheable(cacheNames="cache:pay:user", key="#userName") + public User getUser(String userName) { + User user = userMapper.getUser(userName); + if(!Optional.ofNullable(user).isPresent()){ + throw new BusinessException(ErrorConstant.USER_ERROR); + } + // 判断用户状态 + if (user.getStatus() != 1) { + throw new BusinessException(ErrorConstant.USER_LOCKING); + } + return user; + } + + /** + * TOKEN有效期校验 + * @param token + * @param user + */ + @Override + public void TokenValidity(String token, User user) { + String redisToken = String.valueOf(redisService.get(PaymentConstant.TOKEN_PREFIX + token)); + if(StringUtils.isBlank(redisToken)) + throw new BusinessException(ErrorConstant.TOKEN_EXPIRATION_DATE); + if(!JwtUtil.verify(redisToken, user.getUserName(), user.getPassword())) + throw new BusinessException(ErrorConstant.ILLEGAL_TOKEN); + 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); + + } +} diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java index d79c04a..787a44e 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java @@ -13,13 +13,7 @@ import com.base.springcloud.service.WecPaymentService; import com.base.springcloud.util.DateUtil; import com.base.springcloud.util.DecimalUtil; import com.base.springcloud.wxsdk.WxpayUtils; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.hisun.iposm.HiCASignUtil2; -import com.hisun.iposm.HiiposmUtil; import lombok.SneakyThrows; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.text.StrBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -32,103 +26,6 @@ public class WecPaymentServiceImp implements WecPaymentService { Logger logger = LoggerFactory.getLogger(WecPaymentServiceImp.class); - /** - * Native支付 - * - * @param orderBO - * @return - */ - @Override - public String nativePay(OrderBO orderBO) { - String res = ""; - HiiposmUtil util = new HiiposmUtil(); - String merchantId = orderBO.getMchId(); - String privateKey = orderBO.getMchPrivateKey(); - String req_url = "https://ipos.10086.cn/cps/cmpayService"; - String type = "AggregPayAmt"; - String version = "1.0.0"; - String deviceInfo = "sb001"; - String spbillCreateIp = "8.8.8.8"; - String storeBrand = "RBS-MD"; - String cityBranchNm = "RBS-PP"; - String createDate = DateUtil.getYearMonthDay2(); - String amount = DecimalUtil.multiple(orderBO.getSaleBill().getTotalAmount(),100).setScale(0, BigDecimal.ROUND_DOWN).toPlainString(); - - // 签名数据 - Order order = orderBO.getOrder(); - StringBuilder signDate = new StringBuilder(); - signDate.append(PaymentConstant.CHARACTER_SET); - signDate.append(PaymentConstant.CALLBACK_URL); - signDate.append(PaymentConstant.NOTIFY_URL); - signDate.append(merchantId); - signDate.append(order.getRequestNo()); - signDate.append(PaymentConstant.SIGN_TYPE); - signDate.append(type); - signDate.append(version); - signDate.append(amount); - signDate.append(createDate); - switch (order.getOrderType()) { - case PaymentConstant.HB: - signDate.append(PaymentConstant.QRCHB); - break; - case PaymentConstant.WEC: - signDate.append(PaymentConstant.QRCWC); - break; - case PaymentConstant.AL: - signDate.append(PaymentConstant.QRCAL); - break; - case PaymentConstant.CP: - signDate.append(PaymentConstant.QRCCP); - break; - } - signDate.append(order.getOrderNo()); - signDate.append(order.getGoodName()); - signDate.append(order.getReserved()); - logger.warn("signData:{}", signDate.toString()); - try { - HiCASignUtil2 rsa = new HiCASignUtil2(privateKey, "111"); - StrBuilder requestParam = new StrBuilder(); - requestParam.append("hmac=").append(rsa.sign(signDate.toString())); - requestParam.append("&characterSet=").append(PaymentConstant.CHARACTER_SET); - requestParam.append("&callbackUrl=").append(PaymentConstant.CALLBACK_URL); - requestParam.append("¬ifyUrl=").append(PaymentConstant.NOTIFY_URL); - requestParam.append("&merchantId=").append(merchantId); - requestParam.append("&requestId=").append(order.getRequestNo()); - requestParam.append("&signType=").append(PaymentConstant.SIGN_TYPE); - requestParam.append("&type=").append(type); - requestParam.append("&version=").append(version); - requestParam.append("&amount=").append(amount); - requestParam.append("&orderDate=").append(createDate); - requestParam.append("&payWay="); - switch (order.getOrderType()) { - case PaymentConstant.HB: - requestParam.append(PaymentConstant.QRCHB); - break; - case PaymentConstant.WEC: - requestParam.append(PaymentConstant.QRCWC); - break; - case PaymentConstant.AL: - requestParam.append(PaymentConstant.QRCAL); - break; - case PaymentConstant.CP: - requestParam.append(PaymentConstant.QRCCP); - break; - } - requestParam.append("&orderId=").append(order.getOrderNo()); - requestParam.append("&productName=").append(order.getGoodName()); - requestParam.append("&reserved1=").append(order.getReserved()); - requestParam.append("&deviceInfo=").append(deviceInfo); - requestParam.append("&spbillCreateIp=").append(spbillCreateIp); - requestParam.append("&storeBrand=").append(storeBrand); - requestParam.append("&cityBranchNm=").append(cityBranchNm); - res = util.sendAndRecv(req_url, requestParam.toString(), PaymentConstant.CHARACTER_SET); - logger.info("Native支付下单参数响应: {}" , res); - } catch (Exception e) { - e.printStackTrace(); - } - return StringUtils.isNotBlank(res) ? util.getValue(res, "sessionId") : ""; - } - /** * 微信Native支付 * @param orderBO @@ -167,7 +64,7 @@ public class WecPaymentServiceImp implements WecPaymentService { wxpayRefundVo.setTransaction_id(refundBO.getOrigOrderNo()); wxpayRefundVo.setReason(refundBO.getReason()); WxpayRefundVo.WxRefundAmountVo wxRefundAmountVo = new WxpayRefundVo.WxRefundAmountVo(); - wxRefundAmountVo.setTotal(refundBO.getOrderAmount()); + wxRefundAmountVo.setTotal(refundBO.getRefundAmount()); wxRefundAmountVo.setRefund(refundBO.getRefundAmount()); wxpayRefundVo.setNotify_url(refundBO.getNotifyUrl()); wxpayRefundVo.setOut_refund_no(refundBO.getRefundNo()); diff --git a/payment-base-app/src/main/java/com/base/springcloud/util/JwtUtil.java b/payment-base-app/src/main/java/com/base/springcloud/util/JwtUtil.java new file mode 100644 index 0000000..c6cc916 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/util/JwtUtil.java @@ -0,0 +1,101 @@ +package com.base.springcloud.util; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.JWTVerifier; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.exceptions.JWTDecodeException; +import com.auth0.jwt.interfaces.DecodedJWT; + +import java.util.Date; + +/** + * @Author Scott + * @Date 2018-07-12 14:23 + * @Desc JWT工具类 + **/ +public class JwtUtil { + + /** + * Token过期时间30分钟(用户登录过期时间是此时间的两倍,以token在reids缓存时间为准) + */ + public static final long EXPIRE_TIME = 30 * 60 * 1000; + + /** + * 校验token是否正确 + * + * @param token 密钥 + * @param secret 用户的密码 + * @return 是否正确 + */ + public static boolean verify(String token, String username, String secret) { + try { + // 根据密码生成JWT效验器 + Algorithm algorithm = Algorithm.HMAC256(secret); + JWTVerifier verifier = JWT.require(algorithm).withClaim("username", username).build(); + // 效验TOKEN + DecodedJWT jwt = verifier.verify(token); + return true; + } catch (Exception exception) { + return false; + } + } + + /** + * 获得token中的信息无需secret解密也能获得 + * + * @return token中包含的用户名 + */ + public static String getUsername(String token) { + try { + DecodedJWT jwt = JWT.decode(token); + return jwt.getClaim("username").asString(); + } catch (JWTDecodeException e) { + return null; + } + } + + /** + * 获得token中的信息无需secret解密也能获得 + * + * @return token中包含的用户名 + */ + public static String getPlatform(String token) { + try { + DecodedJWT jwt = JWT.decode(token); + return jwt.getClaim("platform").asString(); + } catch (JWTDecodeException e) { + return null; + } + } + + /** + * 生成签名,5min后过期 + * + * @param username 用户名 + * @param secret 用户的密码 + * @return 加密的token + */ + public static String sign(String username, String secret) { + Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME); + Algorithm algorithm = Algorithm.HMAC256(secret); + // 附带username信息 + return JWT.create().withClaim("username", username).withExpiresAt(date).sign(algorithm); + + } + + /** + * 生成签名,5min后过期 + * + * @param username 用户名 + * @param secret 用户的密码 + * @return 加密的token + */ + public static String sign(String username, String secret,String platform) { + Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME); + Algorithm algorithm = Algorithm.HMAC256(secret); + // 附带username信息 + return JWT.create().withClaim("username", username).withClaim("platform",platform).withExpiresAt(date).sign(algorithm); + } + + +} diff --git a/payment-base-app/src/main/java/com/base/springcloud/util/ParameterUtil.java b/payment-base-app/src/main/java/com/base/springcloud/util/ParameterUtil.java index f7de1ab..63de9f2 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/util/ParameterUtil.java +++ b/payment-base-app/src/main/java/com/base/springcloud/util/ParameterUtil.java @@ -1,9 +1,10 @@ package com.base.springcloud.util; import com.base.springcloud.bo.OrderBO; +import com.base.springcloud.bo.RefundBO; import com.base.springcloud.constant.PaymentConstant; import com.base.springcloud.dto.NativePlaceOrderDTO; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -13,7 +14,7 @@ import java.util.List; public class ParameterUtil { /** - * native下单入场设置 + * native下单入参设置 * @param billId * @return */ @@ -39,4 +40,15 @@ public class ParameterUtil { nativePlaceOrderDTOList.add(nativePlaceOrderDTO); return nativePlaceOrderDTOList; } + + /** + * 退款入参设置 + * @param billId + * @return + */ + public RefundBO refundBefore(String billId) { + RefundBO refundBO = new RefundBO(); + refundBO.setBillId(billId); + return refundBO; + } } diff --git a/payment-base-app/src/main/java/com/base/springcloud/util/RedisUtil.java b/payment-base-app/src/main/java/com/base/springcloud/util/RedisUtil.java new file mode 100644 index 0000000..8481024 --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/util/RedisUtil.java @@ -0,0 +1,568 @@ +package com.base.springcloud.util; + +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * redis 工具类 + * @Author Scott + * + */ +@Component +public class RedisUtil { + + @Resource + private RedisTemplate redisTemplate; + + /** + * 指定缓存失效时间 + * + * @param key 键 + * @param time 时间(秒) + * @return + */ + public boolean expire(String key, long time) { + try { + if (time > 0) { + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据key 获取过期时间 + * + * @param key 键 不能为null + * @return 时间(秒) 返回0代表为永久有效 + */ + public long getExpire(String key) { + return redisTemplate.getExpire(key, TimeUnit.SECONDS); + } + + /** + * 判断key是否存在 + * + * @param key 键 + * @return true 存在 false不存在 + */ + public boolean hasKey(String key) { + try { + return redisTemplate.hasKey(key); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除缓存 + * + * @param key 可以传一个值 或多个 + */ + @SuppressWarnings("unchecked") + public void del(String... key) { + if (key != null && key.length > 0) { + if (key.length == 1) { + redisTemplate.delete(key[0]); + } else { + redisTemplate.delete((Collection) CollectionUtils.arrayToList(key)); + } + } + } + + // ============================String============================= + /** + * 普通缓存获取 + * + * @param key 键 + * @return 值 + */ + public Object get(String key) { + return key == null ? null : redisTemplate.opsForValue().get(key); + } + + /** + * 普通缓存放入 + * + * @param key 键 + * @param value 值 + * @return true成功 false失败 + */ + public boolean set(String key, Object value) { + try { + redisTemplate.opsForValue().set(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + + } + + /** + * 普通缓存放入并设置时间 + * + * @param key 键 + * @param value 值 + * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 + * @return true成功 false 失败 + */ + public boolean set(String key, Object value, long time) { + try { + if (time > 0) { + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); + } else { + set(key, value); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 递增 + * + * @param key 键 + * @return + */ + public long incr(String key, long delta) { + if (delta < 0) { + throw new RuntimeException("递增因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, delta); + } + + /** + * 递减 + * + * @param key 键 + * @return + */ + public long decr(String key, long delta) { + if (delta < 0) { + throw new RuntimeException("递减因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, -delta); + } + + // ================================Map================================= + /** + * HashGet + * + * @param key 键 不能为null + * @param item 项 不能为null + * @return 值 + */ + public Object hget(String key, String item) { + return redisTemplate.opsForHash().get(key, item); + } + + /** + * 获取hashKey对应的所有键值 + * + * @param key 键 + * @return 对应的多个键值 + */ + public Map hmget(String key) { + return redisTemplate.opsForHash().entries(key); + } + + /** + * HashSet + * + * @param key 键 + * @param map 对应多个键值 + * @return true 成功 false 失败 + */ + public boolean hmset(String key, Map map) { + try { + redisTemplate.opsForHash().putAll(key, map); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * HashSet 并设置时间 + * + * @param key 键 + * @param map 对应多个键值 + * @param time 时间(秒) + * @return true成功 false失败 + */ + public boolean hmset(String key, Map map, long time) { + try { + redisTemplate.opsForHash().putAll(key, map); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * + * @param key 键 + * @param item 项 + * @param value 值 + * @return true 成功 false失败 + */ + public boolean hset(String key, String item, Object value) { + try { + redisTemplate.opsForHash().put(key, item, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * + * @param key 键 + * @param item 项 + * @param value 值 + * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 + * @return true 成功 false失败 + */ + public boolean hset(String key, String item, Object value, long time) { + try { + redisTemplate.opsForHash().put(key, item, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除hash表中的值 + * + * @param key 键 不能为null + * @param item 项 可以使多个 不能为null + */ + public void hdel(String key, Object... item) { + redisTemplate.opsForHash().delete(key, item); + } + + /** + * 判断hash表中是否有该项的值 + * + * @param key 键 不能为null + * @param item 项 不能为null + * @return true 存在 false不存在 + */ + public boolean hHasKey(String key, String item) { + return redisTemplate.opsForHash().hasKey(key, item); + } + + /** + * hash递增 如果不存在,就会创建一个 并把新增后的值返回 + * + * @param key 键 + * @param item 项 + * @param by 要增加几(大于0) + * @return + */ + public double hincr(String key, String item, double by) { + return redisTemplate.opsForHash().increment(key, item, by); + } + + /** + * hash递减 + * + * @param key 键 + * @param item 项 + * @param by 要减少记(小于0) + * @return + */ + public double hdecr(String key, String item, double by) { + return redisTemplate.opsForHash().increment(key, item, -by); + } + + // ============================set============================= + /** + * 根据key获取Set中的所有值 + * + * @param key 键 + * @return + */ + public Set sGet(String key) { + try { + return redisTemplate.opsForSet().members(key); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 根据value从一个set中查询,是否存在 + * + * @param key 键 + * @param value 值 + * @return true 存在 false不存在 + */ + public boolean sHasKey(String key, Object value) { + try { + return redisTemplate.opsForSet().isMember(key, value); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将数据放入set缓存 + * + * @param key 键 + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSet(String key, Object... values) { + try { + return redisTemplate.opsForSet().add(key, values); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 将set数据放入缓存 + * + * @param key 键 + * @param time 时间(秒) + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSetAndTime(String key, long time, Object... values) { + try { + Long count = redisTemplate.opsForSet().add(key, values); + if (time > 0) { + expire(key, time); + } + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 获取set缓存的长度 + * + * @param key 键 + * @return + */ + public long sGetSetSize(String key) { + try { + return redisTemplate.opsForSet().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 移除值为value的 + * + * @param key 键 + * @param values 值 可以是多个 + * @return 移除的个数 + */ + public long setRemove(String key, Object... values) { + try { + Long count = redisTemplate.opsForSet().remove(key, values); + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + // ===============================list================================= + + /** + * 获取list缓存的内容 + * + * @param key 键 + * @param start 开始 + * @param end 结束 0 到 -1代表所有值 + * @return + */ + public List lGet(String key, long start, long end) { + try { + return redisTemplate.opsForList().range(key, start, end); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 获取list缓存的长度 + * + * @param key 键 + * @return + */ + public long lGetListSize(String key) { + try { + return redisTemplate.opsForList().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 通过索引 获取list中的值 + * + * @param key 键 + * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推 + * @return + */ + public Object lGetIndex(String key, long index) { + try { + return redisTemplate.opsForList().index(key, index); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @return + */ + public boolean lSet(String key, Object value) { + try { + redisTemplate.opsForList().rightPush(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, Object value, long time) { + try { + redisTemplate.opsForList().rightPush(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @return + */ + public boolean lSet(String key, List value) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, List value, long time) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据索引修改list中的某条数据 + * + * @param key 键 + * @param index 索引 + * @param value 值 + * @return + */ + public boolean lUpdateIndex(String key, long index, Object value) { + try { + redisTemplate.opsForList().set(key, index, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 移除N个值为value + * + * @param key 键 + * @param count 移除多少个 + * @param value 值 + * @return 移除的个数 + */ + public long lRemove(String key, long count, Object value) { + try { + Long remove = redisTemplate.opsForList().remove(key, count, value); + return remove; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } +} 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 new file mode 100644 index 0000000..591cacf --- /dev/null +++ b/payment-base-app/src/main/java/com/base/springcloud/util/TokenUtils.java @@ -0,0 +1,57 @@ +package com.base.springcloud.util; + +import com.base.springcloud.aspect.annotation.BusinessException; +import com.base.springcloud.constant.ErrorConstant; +import com.base.springcloud.entity.User; +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; + +@Component +public class TokenUtils { + + @Autowired + private UserService userService; + + private static UserService service; + + @PostConstruct + public void init() { + service= this.userService; + } + + /** + * Token验证 + */ + public static void verifyToken(HttpServletRequest request) { + // 从请求头获取token + String token = request.getHeader("X-Access-Token"); + + // 如果请求头没有token,则从请求参数中取 + if (StringUtils.isBlank(token)) + token = request.getParameter("token"); + + // 如果还是没有token,则抛异常 + if (StringUtils.isBlank(token)) + throw new BusinessException(ErrorConstant.INVALID_TOKEN); + + // 从token里获取用户姓名 + String username = JwtUtil.getUsername(token); + if (StringUtils.isEmpty(username)) + throw new BusinessException(ErrorConstant.ILLEGAL_TOKEN); + + // 查询用户信息 + User user = service.getUser(username); + + // 校验token是否超时失效 & 或者账号密码是否错误 + service.TokenValidity(token,user); + } + + public static void departmentInfo(HttpServletRequest request) { + + } +} diff --git a/payment-base-app/src/main/resources/application.yml b/payment-base-app/src/main/resources/application.yml index 8914db8..658789b 100644 --- a/payment-base-app/src/main/resources/application.yml +++ b/payment-base-app/src/main/resources/application.yml @@ -1,7 +1,7 @@ server: port: 5080 #服务端口 servlet: - context-path: / + context-path: /rbs-pay #spring相关配置 spring: application: @@ -9,9 +9,9 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型 driver-class-name: org.gjt.mm.mysql.Driver #数据库驱动包 - url: jdbc:mysql://rm-uf672osw4deemr4yt.mysql.rds.aliyuncs.com:3306/rbs_erp?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false - username: hnrr - password: hnrr@0b6759c29a8e + url: jdbc:mysql://106.14.81.251:3306/rbs_erp_test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false + username: root + password: hnrr%%360 #rabbitmq 配置 #rabbitmq: #host: localhost @@ -22,11 +22,11 @@ spring: redis: database: 10 # 地址 - host: r-uf643kmbsoz7ledq2j.redis.rds.aliyuncs.com + host: 127.0.0.1 # 端口,默认为6379 port: 6379 # 密码 - password: rds@53798a0fa6ce + password: 123456 # 连接超时时间 timeout: 10s lettuce: diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/UserMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/UserMapper.xml new file mode 100644 index 0000000..b1ab96a --- /dev/null +++ b/payment-base-app/src/main/resources/com/base/payment/mapper/UserMapper.xml @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, username, realname, password, salt, avatar, birthday, sex, email, phone, org_code, + status, del_flag, third_id, third_type, activiti_sync, work_no, post, telephone, + create_by, create_time, update_by, update_time, user_identity, depart_ids, ct_company_id, + account_type + + + + delete from sys_user + where id = #{id,jdbcType=VARCHAR} + + + insert into sys_user (id, username, realname, + password, salt, avatar, + birthday, sex, email, + phone, org_code, status, + del_flag, third_id, third_type, + activiti_sync, work_no, post, + telephone, create_by, create_time, + update_by, update_time, user_identity, + depart_ids, ct_company_id, account_type + ) + values (#{id,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, #{realName,jdbcType=VARCHAR}, + #{password,jdbcType=VARCHAR}, #{salt,jdbcType=VARCHAR}, #{avatar,jdbcType=VARCHAR}, + #{birthday,jdbcType=TIMESTAMP}, #{sex,jdbcType=INTEGER}, #{email ,jdbcType=VARCHAR}, + #{phone,jdbcType=VARCHAR}, #{orgCode,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, + #{delFlag,jdbcType=INTEGER}, #{thirdId,jdbcType=VARCHAR}, #{thirdType,jdbcType=VARCHAR}, + #{activitiSync,jdbcType=INTEGER}, #{workNo,jdbcType=VARCHAR}, #{post,jdbcType=VARCHAR}, + #{telephone,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{userIdentity,jdbcType=INTEGER}, + #{departIds,jdbcType=VARCHAR}, #{ctCompanyId,jdbcType=TIMESTAMP}, #{accountType,jdbcType=INTEGER} + ) + + + insert into sys_user + + + id, + + + username, + + + realname, + + + password, + + + salt, + + + avatar, + + + birthday, + + + sex, + + + email, + + + phone, + + + org_code, + + + status, + + + del_flag, + + + third_id, + + + third_type, + + + activiti_sync, + + + work_no, + + + post, + + + telephone, + + + create_by, + + + create_time, + + + update_by, + + + update_time, + + + user_identity, + + + depart_ids, + + + ct_company_id, + + + account_type, + + + + + #{id,jdbcType=VARCHAR}, + + + #{userName,jdbcType=VARCHAR}, + + + #{realName,jdbcType=VARCHAR}, + + + #{password,jdbcType=VARCHAR}, + + + #{salt,jdbcType=VARCHAR}, + + + #{avatar,jdbcType=VARCHAR}, + + + #{birthday,jdbcType=TIMESTAMP}, + + + #{sex,jdbcType=INTEGER}, + + + #{email ,jdbcType=VARCHAR}, + + + #{phone,jdbcType=VARCHAR}, + + + #{orgCode,jdbcType=VARCHAR}, + + + #{status,jdbcType=INTEGER}, + + + #{delFlag,jdbcType=INTEGER}, + + + #{thirdId,jdbcType=VARCHAR}, + + + #{thirdType,jdbcType=VARCHAR}, + + + #{activitiSync,jdbcType=INTEGER}, + + + #{workNo,jdbcType=VARCHAR}, + + + #{post,jdbcType=VARCHAR}, + + + #{telephone,jdbcType=VARCHAR}, + + + #{createBy,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{updateBy,jdbcType=VARCHAR}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{userIdentity,jdbcType=INTEGER}, + + + #{departIds,jdbcType=VARCHAR}, + + + #{ctCompanyId,jdbcType=TIMESTAMP}, + + + #{accountType,jdbcType=INTEGER}, + + + + + update sys_user + + + username = #{userName,jdbcType=VARCHAR}, + + + realname = #{realName,jdbcType=VARCHAR}, + + + password = #{password,jdbcType=VARCHAR}, + + + salt = #{salt,jdbcType=VARCHAR}, + + + avatar = #{avatar,jdbcType=VARCHAR}, + + + birthday = #{birthday,jdbcType=TIMESTAMP}, + + + sex = #{sex,jdbcType=INTEGER}, + + + email = #{email ,jdbcType=VARCHAR}, + + + phone = #{phone,jdbcType=VARCHAR}, + + + org_code = #{orgCode,jdbcType=VARCHAR}, + + + status = #{status,jdbcType=INTEGER}, + + + del_flag = #{delFlag,jdbcType=INTEGER}, + + + third_id = #{thirdId,jdbcType=VARCHAR}, + + + third_type = #{thirdType,jdbcType=VARCHAR}, + + + activiti_sync = #{activitiSync,jdbcType=INTEGER}, + + + work_no = #{workNo,jdbcType=VARCHAR}, + + + post = #{post,jdbcType=VARCHAR}, + + + telephone = #{telephone,jdbcType=VARCHAR}, + + + create_by = #{createBy,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_by = #{updateBy,jdbcType=VARCHAR}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + user_identity = #{userIdentity,jdbcType=INTEGER}, + + + depart_ids = #{departIds,jdbcType=VARCHAR}, + + + ct_company_id = #{ctCompanyId,jdbcType=TIMESTAMP}, + + + account_type = #{accountType,jdbcType=INTEGER}, + + + where id = #{id,jdbcType=VARCHAR} + + + update sys_user + set username = #{userName,jdbcType=VARCHAR}, + realname = #{realName,jdbcType=VARCHAR}, + password = #{password,jdbcType=VARCHAR}, + salt = #{salt,jdbcType=VARCHAR}, + avatar = #{avatar,jdbcType=VARCHAR}, + birthday = #{birthday,jdbcType=TIMESTAMP}, + sex = #{sex,jdbcType=INTEGER}, + email = #{email ,jdbcType=VARCHAR}, + phone = #{phone,jdbcType=VARCHAR}, + org_code = #{orgCode,jdbcType=VARCHAR}, + status = #{status,jdbcType=INTEGER}, + del_flag = #{delFlag,jdbcType=INTEGER}, + third_id = #{thirdId,jdbcType=VARCHAR}, + third_type = #{thirdType,jdbcType=VARCHAR}, + activiti_sync = #{activitiSync,jdbcType=INTEGER}, + work_no = #{workNo,jdbcType=VARCHAR}, + post = #{post,jdbcType=VARCHAR}, + telephone = #{telephone,jdbcType=VARCHAR}, + create_by = #{createBy,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_by = #{updateBy,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + user_identity = #{userIdentity,jdbcType=INTEGER}, + depart_ids = #{departIds,jdbcType=VARCHAR}, + ct_company_id = #{ctCompanyId,jdbcType=TIMESTAMP}, + account_type = #{accountType,jdbcType=INTEGER} + 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 5d3f108..590e834 100644 --- a/payment-base-app/src/main/resources/generatorConfig.xml +++ b/payment-base-app/src/main/resources/generatorConfig.xml @@ -27,7 +27,7 @@ + targetProject="payment-base-app/src/main/java"> @@ -40,7 +40,7 @@ + targetProject="payment-base-app/src/main/resources"> @@ -50,7 +50,7 @@ + targetProject="payment-base-app/src/main/java" type="XMLMAPPER"> @@ -60,55 +60,39 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + +
\ No newline at end of file