zzf 1 miesiąc temu
rodzic
commit
1b5035954d
72 zmienionych plików z 1807 dodań i 631 usunięć
  1. 6 3
      build.gradle
  2. BIN
      pdftemplate/进项发票.xlsx
  3. 2 0
      src/main/java/com/zzys/qhyscredit/base/model/BaseEntity.java
  4. 2 2
      src/main/java/com/zzys/qhyscredit/channel/channel/dao/model/ChannelEntity.java
  5. 1 1
      src/main/java/com/zzys/qhyscredit/channel/channel/rest/ChannelController.java
  6. 1 1
      src/main/java/com/zzys/qhyscredit/channel/channel/service/impl/ChannelServiceImpl.java
  7. 1 1
      src/main/java/com/zzys/qhyscredit/channel/invitation/dao/model/LinkEntity.java
  8. 4 0
      src/main/java/com/zzys/qhyscredit/channel/invitation/dao/repository/LinkRepository.java
  9. 27 2
      src/main/java/com/zzys/qhyscredit/channel/invitation/rest/LinkController.java
  10. 4 0
      src/main/java/com/zzys/qhyscredit/channel/invitation/service/LinkService.java
  11. 11 1
      src/main/java/com/zzys/qhyscredit/channel/invitation/service/impl/LinkServiceImpl.java
  12. 1 1
      src/main/java/com/zzys/qhyscredit/channel/order/dao/model/OrderEntity.java
  13. 7 0
      src/main/java/com/zzys/qhyscredit/channel/order/dao/repository/OrderRepository.java
  14. 6 3
      src/main/java/com/zzys/qhyscredit/channel/order/rest/OrderController.java
  15. 9 0
      src/main/java/com/zzys/qhyscredit/channel/order/service/OrderService.java
  16. 25 1
      src/main/java/com/zzys/qhyscredit/channel/order/service/impl/OrderServiceImpl.java
  17. 1 1
      src/main/java/com/zzys/qhyscredit/channel/pdf/rest/PdfController.java
  18. 1 1
      src/main/java/com/zzys/qhyscredit/channel/sign/rest/SignController.java
  19. 1 1
      src/main/java/com/zzys/qhyscredit/channel/sign/service/SignService.java
  20. 1 1
      src/main/java/com/zzys/qhyscredit/channel/sign/service/impl/SignServiceImpl.java
  21. 1 1
      src/main/java/com/zzys/qhyscredit/channel/staff/dao/model/StaffEntity.java
  22. 23 2
      src/main/java/com/zzys/qhyscredit/channel/staff/rest/StaffController.java
  23. 3 0
      src/main/java/com/zzys/qhyscredit/channel/staff/service/impl/StaffServiceImpl.java
  24. 0 2
      src/main/java/com/zzys/qhyscredit/comp/dao/model/CompanyEntity.java
  25. 4 3
      src/main/java/com/zzys/qhyscredit/comp/rest/CompanyController.java
  26. 1 1
      src/main/java/com/zzys/qhyscredit/comp/service/impl/CompanyServiceImpl.java
  27. 2 2
      src/main/java/com/zzys/qhyscredit/config/Knife4jConfig.java
  28. 1 1
      src/main/java/com/zzys/qhyscredit/data/Screen.java
  29. 4 1
      src/main/java/com/zzys/qhyscredit/enums/OrderStatus.java
  30. 1 1
      src/main/java/com/zzys/qhyscredit/filter/JWTInterceptor.java
  31. 2 2
      src/main/java/com/zzys/qhyscredit/filter/JWTInterceptorConfig.java
  32. 1 1
      src/main/java/com/zzys/qhyscredit/filter/UserCheckInterceptor.java
  33. 1 1
      src/main/java/com/zzys/qhyscredit/mp/rest/MpController.java
  34. 2 2
      src/main/java/com/zzys/qhyscredit/mp/schedule/Task.java
  35. 1 1
      src/main/java/com/zzys/qhyscredit/mp/utils/MpUtils.java
  36. 1 1
      src/main/java/com/zzys/qhyscredit/opLog/aspect/UserLogAspect.java
  37. 1 1
      src/main/java/com/zzys/qhyscredit/opLog/rest/SysLogController.java
  38. 1 1
      src/main/java/com/zzys/qhyscredit/opLog/rest/UserOperateLogController.java
  39. 17 1
      src/main/java/com/zzys/qhyscredit/param/rest/ParamController.java
  40. 6 0
      src/main/java/com/zzys/qhyscredit/report/dao/model/ReportEntity.java
  41. 2 0
      src/main/java/com/zzys/qhyscredit/report/dao/model/TaxRateEntity.java
  42. 6 2
      src/main/java/com/zzys/qhyscredit/report/proc/T0.java
  43. 333 150
      src/main/java/com/zzys/qhyscredit/report/proc/T41.java
  44. 413 131
      src/main/java/com/zzys/qhyscredit/report/rest/GenerateReport.java
  45. 86 25
      src/main/java/com/zzys/qhyscredit/report/rest/ReportController.java
  46. 1 1
      src/main/java/com/zzys/qhyscredit/report/service/ReportService.java
  47. 7 1
      src/main/java/com/zzys/qhyscredit/report/service/impl/ReportServiceImpl.java
  48. 255 168
      src/main/java/com/zzys/qhyscredit/report/utils/WordUtils.java
  49. 1 1
      src/main/java/com/zzys/qhyscredit/report/vo/AdPuVo.java
  50. 1 0
      src/main/java/com/zzys/qhyscredit/report/vo/DividendTaxVo.java
  51. 2 1
      src/main/java/com/zzys/qhyscredit/report/vo/ReportVO.java
  52. 17 7
      src/main/java/com/zzys/qhyscredit/security/AesEncryptUtils.java
  53. 1 1
      src/main/java/com/zzys/qhyscredit/security/DecodeRequestBodyAdvice.java
  54. 1 1
      src/main/java/com/zzys/qhyscredit/security/SSLConfig.java
  55. 2 2
      src/main/java/com/zzys/qhyscredit/tax/price/rest/PriceController.java
  56. 2 2
      src/main/java/com/zzys/qhyscredit/tax/product/rest/ProductController.java
  57. 1 0
      src/main/java/com/zzys/qhyscredit/user/dao/dto/UserInfoDto.java
  58. 10 0
      src/main/java/com/zzys/qhyscredit/user/dao/model/UserInfo.java
  59. 1 1
      src/main/java/com/zzys/qhyscredit/user/dao/repository/UserRepository.java
  60. 70 37
      src/main/java/com/zzys/qhyscredit/user/rest/UserController.java
  61. 3 1
      src/main/java/com/zzys/qhyscredit/user/service/UserService.java
  62. 6 1
      src/main/java/com/zzys/qhyscredit/user/service/impl/UserServiceImpl.java
  63. 8 0
      src/main/java/com/zzys/qhyscredit/utils/Constant.java
  64. 1 1
      src/main/java/com/zzys/qhyscredit/utils/OrderNoUtil.java
  65. 6 3
      src/main/java/com/zzys/qhyscredit/utils/QrCodeUtil.java
  66. 1 1
      src/main/java/com/zzys/qhyscredit/utils/WechatDecryptDataUtil.java
  67. 100 12
      src/main/java/com/zzys/qhyscredit/wxpay/controller/WxPayController.java
  68. 14 2
      src/main/java/com/zzys/qhyscredit/wxpay/service/WxPayService.java
  69. 223 9
      src/main/java/com/zzys/qhyscredit/wxpay/service/impl/WxPayServiceImpl.java
  70. 2 3
      src/main/java/com/zzys/qhyscredit/wxpay/task/WxTask.java
  71. 33 13
      src/main/java/com/zzys/qhyscredit/wxpay/utils/WXUtils.java
  72. 14 9
      src/main/resources/application.yml

+ 6 - 3
build.gradle

@@ -32,8 +32,9 @@ dependencies {
     implementation 'com.github.xiaoymin:knife4j-openapi2-spring-boot-starter:4.0.0'
     implementation 'com.github.xiaoymin:knife4j-openapi2-spring-boot-starter:4.0.0'
     // https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on
     // https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on
     implementation 'org.bouncycastle:bcprov-jdk15on:1.57'
     implementation 'org.bouncycastle:bcprov-jdk15on:1.57'
-    // https://mvnrepository.com/artifact/com.alibaba/fastjson
-    implementation 'com.alibaba:fastjson:1.2.76'
+// https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2
+    implementation 'com.alibaba.fastjson2:fastjson2:2.0.53'
+
     implementation 'com.auth0:java-jwt:3.18.2'
     implementation 'com.auth0:java-jwt:3.18.2'
     // https://mvnrepository.com/artifact/commons-codec/commons-codec
     // https://mvnrepository.com/artifact/commons-codec/commons-codec
     implementation 'commons-codec:commons-codec:1.15'
     implementation 'commons-codec:commons-codec:1.15'
@@ -55,7 +56,8 @@ dependencies {
     implementation 'org.apache.poi:poi-ooxml:5.2.2'
     implementation 'org.apache.poi:poi-ooxml:5.2.2'
 // https://mvnrepository.com/artifact/fr.opensagres.xdocreport/fr.opensagres.poi.xwpf.converter.pdf-gae
 // https://mvnrepository.com/artifact/fr.opensagres.xdocreport/fr.opensagres.poi.xwpf.converter.pdf-gae
     implementation 'fr.opensagres.xdocreport:fr.opensagres.poi.xwpf.converter.pdf-gae:2.0.3'
     implementation 'fr.opensagres.xdocreport:fr.opensagres.poi.xwpf.converter.pdf-gae:2.0.3'
-
+    // https://mvnrepository.com/artifact/com.github.qcloudsms/qcloudsms
+    implementation group: 'com.github.qcloudsms', name: 'qcloudsms', version: '1.0.6'
 
 
 
 
     // QueryDSL
     // QueryDSL
@@ -91,6 +93,7 @@ dependencies {
     // https://mvnrepository.com/artifact/com.alibaba/easyexcel
     // https://mvnrepository.com/artifact/com.alibaba/easyexcel
     implementation 'com.alibaba:easyexcel:4.0.1'
     implementation 'com.alibaba:easyexcel:4.0.1'
 
 
+
     // word2pdf
     // word2pdf
     // https://mvnrepository.com/artifact/com.documents4j/documents4j-local
     // https://mvnrepository.com/artifact/com.documents4j/documents4j-local
     implementation 'com.documents4j:documents4j-local:1.1.12'
     implementation 'com.documents4j:documents4j-local:1.1.12'

BIN
pdftemplate/进项发票.xlsx


+ 2 - 0
src/main/java/com/zzys/qhyscredit/base/model/BaseEntity.java

@@ -1,6 +1,7 @@
 package com.zzys.qhyscredit.base.model;
 package com.zzys.qhyscredit.base.model;
 
 
 
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
@@ -30,6 +31,7 @@ public class BaseEntity implements Serializable {
     @GeneratedValue(generator = "jpa-uuid")
     @GeneratedValue(generator = "jpa-uuid")
     @Column(name = "id", columnDefinition = "varchar(36) COMMENT '数据ID'")
     @Column(name = "id", columnDefinition = "varchar(36) COMMENT '数据ID'")
     @NotNull(groups = Update.class)
     @NotNull(groups = Update.class)
+    @ExcelIgnore
     private String id;
     private String id;
 
 
     public @interface Update {
     public @interface Update {

+ 2 - 2
src/main/java/com/zzys/qhyscredit/channel/channel/dao/model/ChannelEntity.java

@@ -36,11 +36,11 @@ public class ChannelEntity extends BaseEntity {
     private String city;
     private String city;
 
 
     @Convert(converter = EncryptDecodeConverter.class)
     @Convert(converter = EncryptDecodeConverter.class)
-    @Column(name = "address",columnDefinition = "varchar(100) not null comment '地址'")
+    @Column(name = "address",columnDefinition = "text not null comment '地址'")
     private String address;
     private String address;
 
 
     @Convert(converter = EncryptDecodeConverter.class)
     @Convert(converter = EncryptDecodeConverter.class)
-    @Column(name = "tax_id",columnDefinition = "varchar(50) comment '税号'")
+    @Column(name = "tax_id",columnDefinition = "varchar(200) comment '税号'")
     private String taxId;
     private String taxId;
 
 
     @Column(name = "corporate",columnDefinition = "varchar(50) comment '法人'")
     @Column(name = "corporate",columnDefinition = "varchar(50) comment '法人'")

+ 1 - 1
src/main/java/com/zzys/qhyscredit/channel/channel/rest/ChannelController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.channel.channel.rest;
 package com.zzys.qhyscredit.channel.channel.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;

+ 1 - 1
src/main/java/com/zzys/qhyscredit/channel/channel/service/impl/ChannelServiceImpl.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.channel.channel.service.impl;
 package com.zzys.qhyscredit.channel.channel.service.impl;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.repository.ChannelRepository;
 import com.zzys.qhyscredit.channel.channel.dao.repository.ChannelRepository;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;

+ 1 - 1
src/main/java/com/zzys/qhyscredit/channel/invitation/dao/model/LinkEntity.java

@@ -63,6 +63,6 @@ public class LinkEntity extends BaseEntity {
 
 
     private String backGround;
     private String backGround;
 
 
-    @Column(name = "status",columnDefinition = "varchar(2) not null comment '状态:0待使用;1已使用;-1:使用中,中间状态'")
+    @Column(name = "status",columnDefinition = "varchar(2) not null comment '状态:0待使用;1已使用;-1:使用中,中间状态 ;-2:过期'")
     private String status;
     private String status;
 }
 }

+ 4 - 0
src/main/java/com/zzys/qhyscredit/channel/invitation/dao/repository/LinkRepository.java

@@ -10,4 +10,8 @@ import java.util.List;
 public interface LinkRepository extends BaseRepository<LinkEntity,String> {
 public interface LinkRepository extends BaseRepository<LinkEntity,String> {
     @Query(value = "select id from cr_link where staff_id = :id",nativeQuery = true)
     @Query(value = "select id from cr_link where staff_id = :id",nativeQuery = true)
     List<String> findLinkIdByStaffId(@Param("id") String id);
     List<String> findLinkIdByStaffId(@Param("id") String id);
+
+    List<LinkEntity> findByStatus(String s);
+
+    LinkEntity findByOrderNo(String orderNo);
 }
 }

+ 27 - 2
src/main/java/com/zzys/qhyscredit/channel/invitation/rest/LinkController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.channel.invitation.rest;
 package com.zzys.qhyscredit.channel.invitation.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
@@ -30,6 +30,9 @@ import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -115,7 +118,12 @@ public class LinkController extends BaseController {
         if(StringUtils.isNotEmpty(linkEntity.getBackGround())){
         if(StringUtils.isNotEmpty(linkEntity.getBackGround())){
             background = linkEntity.getBackGround().substring(linkEntity.getBackGround().indexOf("./images"));
             background = linkEntity.getBackGround().substring(linkEntity.getBackGround().indexOf("./images"));
         }
         }
-        return success(wxUtils.generateWXCode(background,linkEntity.getId()));
+        String wxCode = wxUtils.generateWXCode(background, linkEntity.getId());
+        //reduce channel remain times
+        signEntity.setUnuse(signEntity.getUnuse() - Integer.parseInt(linkEntity.getTimes()));
+        signEntity.setUsed(signEntity.getUsed() + Integer.parseInt(linkEntity.getTimes()));
+        this.signService.save(signEntity);
+        return success(wxCode);
     }
     }
 
 
 
 
@@ -124,6 +132,13 @@ public class LinkController extends BaseController {
     @SafetyProcess
     @SafetyProcess
     @ApiOperation(value = "分页查询",notes = "pageNum:页数;pageSize:每页记录数;channelId:渠道id;staffId:员工ID;id:邀请链接id")
     @ApiOperation(value = "分页查询",notes = "pageNum:页数;pageSize:每页记录数;channelId:渠道id;staffId:员工ID;id:邀请链接id")
     public Result find(@RequestBody String json){
     public Result find(@RequestBody String json){
+        JSONObject jsonObject = JSONObject.parseObject(json);
+        if(jsonObject.containsKey("staffId") && StringUtils.isNotEmpty(jsonObject.getString("staffId"))){
+            StaffEntity staffId = this.staffService.findById(jsonObject.getString("staffId"));
+            if(staffId != null){
+                return  fail("没有权限!");
+            }
+        }
         Page<LinkEntity> links = this.linkService.find(json);
         Page<LinkEntity> links = this.linkService.find(json);
         return success(links);
         return success(links);
     }
     }
@@ -137,6 +152,15 @@ public class LinkController extends BaseController {
         if(link == null){
         if(link == null){
             return fail("邀请链接不存在");
             return fail("邀请链接不存在");
         }
         }
+        Date date = new SimpleDateFormat("yyyy-MM-dd").parse(link.getCreateDate());
+        Calendar instance = Calendar.getInstance();
+        instance.setTime(date);
+        instance.add(Calendar.DAY_OF_YEAR,link.getEffectiveDays());
+
+        if(new Date().after(instance.getTime())){
+            return fail("邀请链接已过期");
+        }
+
         LinkEntityDto dto = new LinkEntityDto();
         LinkEntityDto dto = new LinkEntityDto();
         dto.setId(link.getId());
         dto.setId(link.getId());
         dto.setChannelId(link.getChannelId());
         dto.setChannelId(link.getChannelId());
@@ -154,6 +178,7 @@ public class LinkController extends BaseController {
         switch (link.getStatus()) {
         switch (link.getStatus()) {
             case Constant.ZERO:
             case Constant.ZERO:
                 dto.setFlag(Constant.LINK_FLAG1);
                 dto.setFlag(Constant.LINK_FLAG1);
+
                 break;
                 break;
             case Constant.ONE: {//已支付,判断是否同一用户
             case Constant.ONE: {//已支付,判断是否同一用户
                 OrderEntity order = this.orderService.findByOrderNo(link.getOrderNo());
                 OrderEntity order = this.orderService.findByOrderNo(link.getOrderNo());

+ 4 - 0
src/main/java/com/zzys/qhyscredit/channel/invitation/service/LinkService.java

@@ -13,4 +13,8 @@ public interface LinkService {
     LinkEntity findById(String id);
     LinkEntity findById(String id);
 
 
     List<String> findLinkIdByStaffId(String id);
     List<String> findLinkIdByStaffId(String id);
+
+    List<LinkEntity> findByStatus(String s);
+
+    LinkEntity findByOrderNo(String orderNo);
 }
 }

+ 11 - 1
src/main/java/com/zzys/qhyscredit/channel/invitation/service/impl/LinkServiceImpl.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.channel.invitation.service.impl;
 package com.zzys.qhyscredit.channel.invitation.service.impl;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.invitation.dao.model.LinkEntity;
 import com.zzys.qhyscredit.channel.invitation.dao.model.LinkEntity;
 import com.zzys.qhyscredit.channel.invitation.dao.repository.LinkRepository;
 import com.zzys.qhyscredit.channel.invitation.dao.repository.LinkRepository;
@@ -81,4 +81,14 @@ public class LinkServiceImpl implements LinkService {
     public List<String> findLinkIdByStaffId(String id) {
     public List<String> findLinkIdByStaffId(String id) {
         return this.linkRepository.findLinkIdByStaffId(id);
         return this.linkRepository.findLinkIdByStaffId(id);
     }
     }
+
+    @Override
+    public List<LinkEntity> findByStatus(String s) {
+        return this.linkRepository.findByStatus(s);
+    }
+
+    @Override
+    public LinkEntity findByOrderNo(String orderNo) {
+        return this.linkRepository.findByOrderNo(orderNo);
+    }
 }
 }

+ 1 - 1
src/main/java/com/zzys/qhyscredit/channel/order/dao/model/OrderEntity.java

@@ -48,7 +48,7 @@ public class OrderEntity extends BaseEntity {
     @Column(name = "status",columnDefinition = "varchar(2) not null comment '结算状态:0未结算 1已结算'")
     @Column(name = "status",columnDefinition = "varchar(2) not null comment '结算状态:0未结算 1已结算'")
     private String status;
     private String status;
 
 
-    @Column(name = "pay_status",columnDefinition = "varchar(20) not null comment '状态 0待支付 1已支付 -1支付失败'")
+    @Column(name = "pay_status",columnDefinition = "varchar(20) not null comment '状态 0待支付 1已支付 -1支付失败 2 已关闭'")
     private String payStatus;
     private String payStatus;
 
 
     @Column(name = "type",columnDefinition = "varchar(2) not null comment '支付方式:1 次卡支付  2时效卡 3渠道推荐支付'")
     @Column(name = "type",columnDefinition = "varchar(2) not null comment '支付方式:1 次卡支付  2时效卡 3渠道推荐支付'")

+ 7 - 0
src/main/java/com/zzys/qhyscredit/channel/order/dao/repository/OrderRepository.java

@@ -2,11 +2,14 @@ package com.zzys.qhyscredit.channel.order.dao.repository;
 
 
 import com.zzys.qhyscredit.base.repository.BaseRepository;
 import com.zzys.qhyscredit.base.repository.BaseRepository;
 import com.zzys.qhyscredit.channel.order.dao.model.OrderEntity;
 import com.zzys.qhyscredit.channel.order.dao.model.OrderEntity;
+import com.zzys.qhyscredit.enums.OrderStatus;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.data.repository.query.Param;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import java.util.List;
+
 public interface OrderRepository extends BaseRepository<OrderEntity,String> {
 public interface OrderRepository extends BaseRepository<OrderEntity,String> {
     @Transactional
     @Transactional
     @Modifying
     @Modifying
@@ -14,4 +17,8 @@ public interface OrderRepository extends BaseRepository<OrderEntity,String> {
     void settleById(@Param("id") String id);
     void settleById(@Param("id") String id);
 
 
     OrderEntity findByOrderNo(String orderNo);
     OrderEntity findByOrderNo(String orderNo);
+
+    List<OrderEntity> findByPayStatus(String payStatus);
+
+    List<OrderEntity> findByChannelIdAndTitle(String channelId, String title);
 }
 }

+ 6 - 3
src/main/java/com/zzys/qhyscredit/channel/order/rest/OrderController.java

@@ -1,7 +1,7 @@
 package com.zzys.qhyscredit.channel.order.rest;
 package com.zzys.qhyscredit.channel.order.rest;
 
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
 import com.zzys.qhyscredit.channel.invitation.dao.model.LinkEntity;
 import com.zzys.qhyscredit.channel.invitation.dao.model.LinkEntity;
@@ -55,7 +55,7 @@ public class OrderController extends BaseController {
 
 
         if(StringUtils.isEmpty(orderEntity.getChannelId()))
         if(StringUtils.isEmpty(orderEntity.getChannelId()))
             return fail("渠道编号为空");
             return fail("渠道编号为空");
-        if (orderEntity.getAmount()<=0){
+        if (orderEntity.getAmount()<0){
             return fail("金额非法");
             return fail("金额非法");
         }
         }
         if(StringUtils.isEmpty(orderEntity.getTitle())){
         if(StringUtils.isEmpty(orderEntity.getTitle())){
@@ -82,7 +82,10 @@ public class OrderController extends BaseController {
             LinkEntity linkEntity = this.linkService.findById(jsonObject.getString("linId"));
             LinkEntity linkEntity = this.linkService.findById(jsonObject.getString("linId"));
             linkEntity.setOrderNo(orderEntity.getOrderNo());
             linkEntity.setOrderNo(orderEntity.getOrderNo());
             linkEntity.setStatus(Constant.ONE);
             linkEntity.setStatus(Constant.ONE);
+            this.linkService.save(linkEntity);
         }
         }
+        //TODO 如果金额==0,则表示线下单,不需要微信支付,如果金额>0,需要调用微信支付
+
         return success();
         return success();
     }
     }
 
 

+ 9 - 0
src/main/java/com/zzys/qhyscredit/channel/order/service/OrderService.java

@@ -1,9 +1,12 @@
 package com.zzys.qhyscredit.channel.order.service;
 package com.zzys.qhyscredit.channel.order.service;
 
 
 import com.zzys.qhyscredit.channel.order.dao.model.OrderEntity;
 import com.zzys.qhyscredit.channel.order.dao.model.OrderEntity;
+import com.zzys.qhyscredit.enums.OrderStatus;
 import com.zzys.qhyscredit.utils.Result;
 import com.zzys.qhyscredit.utils.Result;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 
 
+import java.util.List;
+
 public interface OrderService {
 public interface OrderService {
     OrderEntity save(OrderEntity orderEntity);
     OrderEntity save(OrderEntity orderEntity);
 
 
@@ -12,4 +15,10 @@ public interface OrderService {
     void settleById(String id);
     void settleById(String id);
 
 
     OrderEntity findByOrderNo(String orderNo);
     OrderEntity findByOrderNo(String orderNo);
+
+    void updateOrderStatus(String orderNo, OrderStatus success);
+
+    List<OrderEntity> findByPayStatus(String payStatus);
+
+    List<OrderEntity> findByChannelIdAndTitle(String channelId, String title);
 }
 }

+ 25 - 1
src/main/java/com/zzys/qhyscredit/channel/order/service/impl/OrderServiceImpl.java

@@ -1,11 +1,14 @@
 package com.zzys.qhyscredit.channel.order.service.impl;
 package com.zzys.qhyscredit.channel.order.service.impl;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.order.dao.model.OrderEntity;
 import com.zzys.qhyscredit.channel.order.dao.model.OrderEntity;
 import com.zzys.qhyscredit.channel.order.dao.repository.OrderRepository;
 import com.zzys.qhyscredit.channel.order.dao.repository.OrderRepository;
 import com.zzys.qhyscredit.channel.order.service.OrderService;
 import com.zzys.qhyscredit.channel.order.service.OrderService;
 import com.zzys.qhyscredit.channel.sign.dao.model.SignEntity;
 import com.zzys.qhyscredit.channel.sign.dao.model.SignEntity;
+import com.zzys.qhyscredit.enums.OrderStatus;
+import com.zzys.qhyscredit.utils.Constant;
+import com.zzys.qhyscredit.utils.DateUtil;
 import com.zzys.qhyscredit.utils.Result;
 import com.zzys.qhyscredit.utils.Result;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -77,4 +80,25 @@ public class OrderServiceImpl implements OrderService {
     public OrderEntity findByOrderNo(String orderNo) {
     public OrderEntity findByOrderNo(String orderNo) {
         return this.orderRepository.findByOrderNo(orderNo);
         return this.orderRepository.findByOrderNo(orderNo);
     }
     }
+
+    @Override
+    public void updateOrderStatus(String orderNo, OrderStatus success) {
+        OrderEntity orderEntity = this.orderRepository.findByOrderNo(orderNo);
+//        orderEntity.setOrderNo(success.getType());
+        if(success.getType().equals("SUCCESS")){
+            orderEntity.setPayStatus(Constant.ONE);
+        }
+        orderEntity.setUpdateTime(DateUtil.getNowTime());
+        orderRepository.save(orderEntity);
+    }
+
+    @Override
+    public List<OrderEntity> findByPayStatus(String payStatus) {
+        return this.orderRepository.findByPayStatus(payStatus);
+    }
+
+    @Override
+    public List<OrderEntity> findByChannelIdAndTitle(String channelId, String title) {
+        return this.orderRepository.findByChannelIdAndTitle(channelId,title);
+    }
 }
 }

+ 1 - 1
src/main/java/com/zzys/qhyscredit/channel/pdf/rest/PdfController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.channel.pdf.rest;
 package com.zzys.qhyscredit.channel.pdf.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.pdf.dao.model.PdfEntity;
 import com.zzys.qhyscredit.channel.pdf.dao.model.PdfEntity;
 import com.zzys.qhyscredit.channel.pdf.service.PdfService;
 import com.zzys.qhyscredit.channel.pdf.service.PdfService;

+ 1 - 1
src/main/java/com/zzys/qhyscredit/channel/sign/rest/SignController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.channel.sign.rest;
 package com.zzys.qhyscredit.channel.sign.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;

+ 1 - 1
src/main/java/com/zzys/qhyscredit/channel/sign/service/SignService.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.channel.sign.service;
 package com.zzys.qhyscredit.channel.sign.service;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.channel.sign.dao.model.SignEntity;
 import com.zzys.qhyscredit.channel.sign.dao.model.SignEntity;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 
 

+ 1 - 1
src/main/java/com/zzys/qhyscredit/channel/sign/service/impl/SignServiceImpl.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.channel.sign.service.impl;
 package com.zzys.qhyscredit.channel.sign.service.impl;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.channel.sign.dao.model.SignEntity;
 import com.zzys.qhyscredit.channel.sign.dao.model.SignEntity;
 import com.zzys.qhyscredit.channel.sign.dao.repository.SignRepository;
 import com.zzys.qhyscredit.channel.sign.dao.repository.SignRepository;
 import com.zzys.qhyscredit.channel.sign.service.SignService;
 import com.zzys.qhyscredit.channel.sign.service.SignService;

+ 1 - 1
src/main/java/com/zzys/qhyscredit/channel/staff/dao/model/StaffEntity.java

@@ -45,7 +45,7 @@ public class StaffEntity extends BaseEntity {
     @Column(name = "description",columnDefinition = "varchar(100) comment '个人描述'")
     @Column(name = "description",columnDefinition = "varchar(100) comment '个人描述'")
     private String description;
     private String description;
 
 
-    @Column(name = "avatar",columnDefinition = "varchar(100) comment '头像'")
+    @Column(name = "avatar",columnDefinition = "varchar(200) comment '头像'")
     private String avatar;
     private String avatar;
 
 
     @Column(name = "state",columnDefinition = "varchar(2) comment '签约状态 1签约'")
     @Column(name = "state",columnDefinition = "varchar(2) comment '签约状态 1签约'")

+ 23 - 2
src/main/java/com/zzys/qhyscredit/channel/staff/rest/StaffController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.channel.staff.rest;
 package com.zzys.qhyscredit.channel.staff.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.invitation.service.LinkService;
 import com.zzys.qhyscredit.channel.invitation.service.LinkService;
 import com.zzys.qhyscredit.channel.staff.dao.dto.StaffEntityDto;
 import com.zzys.qhyscredit.channel.staff.dao.dto.StaffEntityDto;
@@ -9,6 +9,10 @@ import com.zzys.qhyscredit.channel.staff.service.StaffService;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.report.service.ReportService;
 import com.zzys.qhyscredit.report.service.ReportService;
 import com.zzys.qhyscredit.security.SafetyProcess;
 import com.zzys.qhyscredit.security.SafetyProcess;
+import com.zzys.qhyscredit.user.dao.model.UserInfo;
+import com.zzys.qhyscredit.user.dao.model.UserPhotoInfo;
+import com.zzys.qhyscredit.user.service.UserPhotoService;
+import com.zzys.qhyscredit.user.service.UserService;
 import com.zzys.qhyscredit.utils.Constant;
 import com.zzys.qhyscredit.utils.Constant;
 import com.zzys.qhyscredit.utils.Result;
 import com.zzys.qhyscredit.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
@@ -37,6 +41,11 @@ public class StaffController extends BaseController {
 
 
     @Autowired
     @Autowired
     private ReportService reportService;
     private ReportService reportService;
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private UserPhotoService userPhotoService;
     @PostMapping("/save")
     @PostMapping("/save")
     @SafetyProcess
     @SafetyProcess
     @ApiOperation(value = "新增/修改员工",notes = "id:修改时不能为空;channelId:渠道id;name:姓名;job:岗位;mail:邮箱;phone:手机号;description:个人描述;avatar:头像;state:签约状态 1签约")
     @ApiOperation(value = "新增/修改员工",notes = "id:修改时不能为空;channelId:渠道id;name:姓名;job:岗位;mail:邮箱;phone:手机号;description:个人描述;avatar:头像;state:签约状态 1签约")
@@ -46,6 +55,18 @@ public class StaffController extends BaseController {
         if (staffEntity.getIsDelete() == null || staffEntity.getIsDelete().isEmpty()){
         if (staffEntity.getIsDelete() == null || staffEntity.getIsDelete().isEmpty()){
             staffEntity.setIsDelete(Constant.ZERO);
             staffEntity.setIsDelete(Constant.ZERO);
         }
         }
+        UserInfo userInfo = this.userService.findByPhone(staffEntity.getPhone());
+        if(userInfo != null){
+            userInfo.setMail(staffEntity.getMail());
+            userInfo.setUserName(staffEntity.getName());
+            this.userService.save(userInfo);
+            UserPhotoInfo userPhotoInfo = this.userPhotoService.findByUserId(userInfo.getId());
+            if(userPhotoInfo != null){
+                userPhotoInfo.setPath(staffEntity.getAvatar());
+                this.userPhotoService.save(userPhotoInfo);
+            }
+        }
+
         this.staffService.save(staffEntity);
         this.staffService.save(staffEntity);
         return success();
         return success();
     }
     }
@@ -111,7 +132,7 @@ public class StaffController extends BaseController {
         if (staff == null || staff.getState().equals("0")){
         if (staff == null || staff.getState().equals("0")){
             return fail("无权限登录");
             return fail("无权限登录");
         }else {
         }else {
-            return success();
+            return success(staff);
         }
         }
     }
     }
 
 

+ 3 - 0
src/main/java/com/zzys/qhyscredit/channel/staff/service/impl/StaffServiceImpl.java

@@ -4,6 +4,7 @@ import com.zzys.qhyscredit.channel.staff.dao.model.StaffEntity;
 import com.zzys.qhyscredit.channel.staff.dao.repository.StaffRepository;
 import com.zzys.qhyscredit.channel.staff.dao.repository.StaffRepository;
 import com.zzys.qhyscredit.channel.staff.service.StaffService;
 import com.zzys.qhyscredit.channel.staff.service.StaffService;
 import com.zzys.qhyscredit.security.AesEncryptUtils;
 import com.zzys.qhyscredit.security.AesEncryptUtils;
+import com.zzys.qhyscredit.utils.Constant;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
@@ -36,6 +37,7 @@ public class StaffServiceImpl implements StaffService {
             if(StringUtils.isNotEmpty(channelId)){
             if(StringUtils.isNotEmpty(channelId)){
                 list.add(cb.equal(root.get("channelId"), channelId));
                 list.add(cb.equal(root.get("channelId"), channelId));
             }
             }
+            list.add(cb.equal(root.get("isDelete"),Constant.ZERO));
             query.where(cb.and(list.toArray(new Predicate[list.size()])));
             query.where(cb.and(list.toArray(new Predicate[list.size()])));
             //排序的升序和倒叙的写法
             //排序的升序和倒叙的写法
             query.orderBy(cb.desc(root.get("id")));
             query.orderBy(cb.desc(root.get("id")));
@@ -70,6 +72,7 @@ public class StaffServiceImpl implements StaffService {
         Specification<StaffEntity> specification = (root, query, cb) -> {
         Specification<StaffEntity> specification = (root, query, cb) -> {
             List<Predicate> list = new ArrayList<>();
             List<Predicate> list = new ArrayList<>();
             list.add(cb.equal(root.get("channelId"), channelId));
             list.add(cb.equal(root.get("channelId"), channelId));
+            list.add(cb.equal(root.get("isDelete"),Constant.ZERO));
             query.where(cb.and(list.toArray(new Predicate[0])));
             query.where(cb.and(list.toArray(new Predicate[0])));
             //排序的升序和倒叙的写法
             //排序的升序和倒叙的写法
             query.orderBy(cb.desc(root.get("id")));
             query.orderBy(cb.desc(root.get("id")));

+ 0 - 2
src/main/java/com/zzys/qhyscredit/comp/dao/model/CompanyEntity.java

@@ -34,6 +34,4 @@ public class CompanyEntity extends BaseEntity {
 
 
     @Column(name = "password",columnDefinition = "varchar(100) not null comment '密码'")
     @Column(name = "password",columnDefinition = "varchar(100) not null comment '密码'")
     private String password;
     private String password;
-
-
 }
 }

+ 4 - 3
src/main/java/com/zzys/qhyscredit/comp/rest/CompanyController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.comp.rest;
 package com.zzys.qhyscredit.comp.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.comp.dao.model.CompanyEntity;
 import com.zzys.qhyscredit.comp.dao.model.CompanyEntity;
 import com.zzys.qhyscredit.comp.service.CompanyService;
 import com.zzys.qhyscredit.comp.service.CompanyService;
@@ -10,6 +10,7 @@ import com.zzys.qhyscredit.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -32,7 +33,7 @@ public class CompanyController extends BaseController {
     private CompanyService companyService;
     private CompanyService companyService;
 
 
     @PostMapping("/save")
     @PostMapping("/save")
-    @ApiOperation(value = "新增/保存",notes = "companyName:公司名称;tax:税号;identifier:身份证号/手机号/用户名;password:密码")
+    @ApiOperation(value = "新增/保存",notes = "companyName:公司名称;tax:税号;identifier:身份证号/手机号/用户名;password:密码")
     @SafetyProcess
     @SafetyProcess
     @OperationLogAnnotation("新增/保存")
     @OperationLogAnnotation("新增/保存")
     public Result save(@RequestBody String json){
     public Result save(@RequestBody String json){
@@ -42,7 +43,7 @@ public class CompanyController extends BaseController {
     }
     }
 
 
     @PostMapping("/find")
     @PostMapping("/find")
-    @ApiOperation(value = "查询",notes = "companyName:公司名称,可为空;pageNum:页数;pageSize:每页记录书")
+    @ApiOperation(value = "查询",notes = "companyName:公司名称,可为空;pageNum:页数;pageSize:每页记录书")
     @SafetyProcess
     @SafetyProcess
     @OperationLogAnnotation("查询")
     @OperationLogAnnotation("查询")
     public Result findAll(@RequestBody String json){
     public Result findAll(@RequestBody String json){

+ 1 - 1
src/main/java/com/zzys/qhyscredit/comp/service/impl/CompanyServiceImpl.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.comp.service.impl;
 package com.zzys.qhyscredit.comp.service.impl;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.comp.dao.model.CompanyEntity;
 import com.zzys.qhyscredit.comp.dao.model.CompanyEntity;
 import com.zzys.qhyscredit.comp.dao.repository.CompanyRepository;
 import com.zzys.qhyscredit.comp.dao.repository.CompanyRepository;

+ 2 - 2
src/main/java/com/zzys/qhyscredit/config/Knife4jConfig.java

@@ -38,14 +38,14 @@ public class Knife4jConfig {
                 .paths(PathSelectors.any())
                 .paths(PathSelectors.any())
                 .build();
                 .build();
     }
     }
-    private static final String API_TILE="xx项目";
+    private static final String API_TILE="税务项目";
     //文档信息配置
     //文档信息配置
     private ApiInfo apiInfo() {
     private ApiInfo apiInfo() {
         return new ApiInfoBuilder()
         return new ApiInfoBuilder()
                 // 文档标题
                 // 文档标题
                 .title(API_TILE)
                 .title(API_TILE)
                 // 文档描述信息
                 // 文档描述信息
-                .description("xxx在线API文档")
+                .description("税务风险检测系统在线API文档")
                 // 文档版本号
                 // 文档版本号
                 .version("1.0")
                 .version("1.0")
                 .build();
                 .build();

+ 1 - 1
src/main/java/com/zzys/qhyscredit/data/Screen.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.data;
 package com.zzys.qhyscredit.data;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;

+ 4 - 1
src/main/java/com/zzys/qhyscredit/enums/OrderStatus.java

@@ -16,7 +16,10 @@ public enum OrderStatus {
      * 支付成功
      * 支付成功
      */
      */
     SUCCESS("SUCCESS"),
     SUCCESS("SUCCESS"),
-
+    /**
+     * 已关闭
+     */
+    CLOSED("超时已关闭"),
     /**
     /**
      * 已关闭
      * 已关闭
      */
      */

+ 1 - 1
src/main/java/com/zzys/qhyscredit/filter/JWTInterceptor.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.filter;
 package com.zzys.qhyscredit.filter;
 
 
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSON;
 import com.auth0.jwt.exceptions.AlgorithmMismatchException;
 import com.auth0.jwt.exceptions.AlgorithmMismatchException;
 import com.auth0.jwt.exceptions.SignatureVerificationException;
 import com.auth0.jwt.exceptions.SignatureVerificationException;
 import com.auth0.jwt.exceptions.TokenExpiredException;
 import com.auth0.jwt.exceptions.TokenExpiredException;

+ 2 - 2
src/main/java/com/zzys/qhyscredit/filter/JWTInterceptorConfig.java

@@ -31,7 +31,7 @@ public class JWTInterceptorConfig implements WebMvcConfigurer {
         String[] mp = new String[]{"/mp/api/**","/pdf/generate/report"};
         String[] mp = new String[]{"/mp/api/**","/pdf/generate/report"};
         registry.addInterceptor(jwtInterceptor)
         registry.addInterceptor(jwtInterceptor)
                 .addPathPatterns("/**")
                 .addPathPatterns("/**")
-                .excludePathPatterns("/", "/index**", "/error")
+                .excludePathPatterns("/", "/index**", "/error","/report/list")
                 .excludePathPatterns(wxPay)
                 .excludePathPatterns(wxPay)
                 .excludePathPatterns(mp)
                 .excludePathPatterns(mp)
                 .excludePathPatterns(webLogin)
                 .excludePathPatterns(webLogin)
@@ -41,7 +41,7 @@ public class JWTInterceptorConfig implements WebMvcConfigurer {
                 .excludePathPatterns("/static/**");//排除静态资源
                 .excludePathPatterns("/static/**");//排除静态资源
         registry.addInterceptor(userCheckInterceptor)
         registry.addInterceptor(userCheckInterceptor)
                 .addPathPatterns("/**")
                 .addPathPatterns("/**")
-                .excludePathPatterns("/", "/index.html", "/error")
+                .excludePathPatterns("/", "/index.html", "/error","/report/list")
                 .excludePathPatterns(wxPay)
                 .excludePathPatterns(wxPay)
                 .excludePathPatterns(mp)
                 .excludePathPatterns(mp)
                 .excludePathPatterns(webLogin)
                 .excludePathPatterns(webLogin)

+ 1 - 1
src/main/java/com/zzys/qhyscredit/filter/UserCheckInterceptor.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.filter;
 package com.zzys.qhyscredit.filter;
 
 
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSON;
 import com.auth0.jwt.interfaces.DecodedJWT;
 import com.auth0.jwt.interfaces.DecodedJWT;
 import com.zzys.qhyscredit.user.service.UserService;
 import com.zzys.qhyscredit.user.service.UserService;
 import com.zzys.qhyscredit.utils.JWTUtil;
 import com.zzys.qhyscredit.utils.JWTUtil;

+ 1 - 1
src/main/java/com/zzys/qhyscredit/mp/rest/MpController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.mp.rest;
 package com.zzys.qhyscredit.mp.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.sign.dao.model.SignEntity;
 import com.zzys.qhyscredit.channel.sign.dao.model.SignEntity;
 import com.zzys.qhyscredit.channel.sign.service.SignService;
 import com.zzys.qhyscredit.channel.sign.service.SignService;

+ 2 - 2
src/main/java/com/zzys/qhyscredit/mp/schedule/Task.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.mp.schedule;
 package com.zzys.qhyscredit.mp.schedule;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.mp.utils.MpUtils;
 import com.zzys.qhyscredit.mp.utils.MpUtils;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,7 +14,7 @@ import org.springframework.stereotype.Component;
  * @Description:
  * @Description:
  */
  */
 @Slf4j
 @Slf4j
-//@Component
+@Component
 public class Task {
 public class Task {
 
 
     @Autowired
     @Autowired

+ 1 - 1
src/main/java/com/zzys/qhyscredit/mp/utils/MpUtils.java

@@ -1,7 +1,7 @@
 package com.zzys.qhyscredit.mp.utils;
 package com.zzys.qhyscredit.mp.utils;
 
 
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.mp.model.JsapiSignature;
 import com.zzys.qhyscredit.mp.model.JsapiSignature;
 import com.zzys.qhyscredit.utils.QrCodeUtil;
 import com.zzys.qhyscredit.utils.QrCodeUtil;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
src/main/java/com/zzys/qhyscredit/opLog/aspect/UserLogAspect.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.opLog.aspect;
 package com.zzys.qhyscredit.opLog.aspect;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.auth0.jwt.interfaces.DecodedJWT;
 import com.auth0.jwt.interfaces.DecodedJWT;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.opLog.dao.SysLogEntity;
 import com.zzys.qhyscredit.opLog.dao.SysLogEntity;

+ 1 - 1
src/main/java/com/zzys/qhyscredit/opLog/rest/SysLogController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.opLog.rest;
 package com.zzys.qhyscredit.opLog.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.opLog.dao.SysLogEntity;
 import com.zzys.qhyscredit.opLog.dao.SysLogEntity;
 import com.zzys.qhyscredit.opLog.service.SysLogService;
 import com.zzys.qhyscredit.opLog.service.SysLogService;

+ 1 - 1
src/main/java/com/zzys/qhyscredit/opLog/rest/UserOperateLogController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.opLog.rest;
 package com.zzys.qhyscredit.opLog.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.opLog.dao.UserOperateLogEntity;
 import com.zzys.qhyscredit.opLog.dao.UserOperateLogEntity;
 import com.zzys.qhyscredit.opLog.service.UserOperateLogService;
 import com.zzys.qhyscredit.opLog.service.UserOperateLogService;

+ 17 - 1
src/main/java/com/zzys/qhyscredit/param/rest/ParamController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.param.rest;
 package com.zzys.qhyscredit.param.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 
 
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.param.dao.model.ParamEntry;
 import com.zzys.qhyscredit.param.dao.model.ParamEntry;
@@ -9,6 +9,7 @@ import com.zzys.qhyscredit.security.SafetyProcess;
 import com.zzys.qhyscredit.utils.Constant;
 import com.zzys.qhyscredit.utils.Constant;
 import com.zzys.qhyscredit.utils.Result;
 import com.zzys.qhyscredit.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -75,4 +76,19 @@ public class ParamController extends BaseController {
             return fail();
             return fail();
         }
         }
     }
     }
+
+    @ApiOperation("扫码次数统计+1")
+    @GetMapping("/scanCount")
+    @SafetyProcess
+    public Result scanCount(){
+        ParamEntry paramEntry = paramService.findByParamName("scanCount");
+        if(paramEntry == null){
+            paramEntry = new ParamEntry();
+            paramEntry.setParamName("scanCount");
+            paramEntry.setParamValue("0");
+        }
+        paramEntry.setParamValue(Integer.parseInt(paramEntry.getParamValue())+1+"");
+        this.paramService.save(paramEntry);
+        return success();
+    }
 }
 }

+ 6 - 0
src/main/java/com/zzys/qhyscredit/report/dao/model/ReportEntity.java

@@ -60,4 +60,10 @@ public class ReportEntity extends BaseEntity {
 
 
     @Column(name = "user_id",columnDefinition = "varchar(50) not null comment '用户id'")
     @Column(name = "user_id",columnDefinition = "varchar(50) not null comment '用户id'")
     private String userId;
     private String userId;
+
+    @Column(name = "contact_number",columnDefinition = "varchar(50) not null comment '联系人手机号'")
+    private String contactNumber;
+
+    @Column(name = "type",columnDefinition = "varchar(50) not null comment '报告类型: 1税务风险报告 2信用评价报告;'")
+    private String type;
 }
 }

+ 2 - 0
src/main/java/com/zzys/qhyscredit/report/dao/model/TaxRateEntity.java

@@ -48,4 +48,6 @@ public class TaxRateEntity extends BaseEntity {
     private String travelFees;
     private String travelFees;
     @Column(name = "ad_fees",columnDefinition = "varchar(50) not null comment '广告和业务宣传费用率'")
     @Column(name = "ad_fees",columnDefinition = "varchar(50) not null comment '广告和业务宣传费用率'")
     private String adFees;
     private String adFees;
+    @Column(name = "sell_profit",columnDefinition = "varchar(50) not null comment '销售毛利率'")
+    private String sellProfit;
 }
 }

+ 6 - 2
src/main/java/com/zzys/qhyscredit/report/proc/T0.java

@@ -19,14 +19,18 @@ public class T0 {
     public Integer calcYears;//参与计算的年份
     public Integer calcYears;//参与计算的年份
     private String provinceCode;//省份
     private String provinceCode;//省份
     private TaxCodeService taxCodeService;//税收分类编码service
     private TaxCodeService taxCodeService;//税收分类编码service
+    private String taxType;
 
 
+    private String accountStand;
 
 
-    public T0(String provinceCode,Integer calcYear,List<MultipartFile> files,TaxCodeService taxCodeService){
+
+    public T0(String provinceCode,Integer calcYear,List<MultipartFile> files,TaxCodeService taxCodeService, String taxType, String accountStand){
         this.files = files;
         this.files = files;
         this.calcYears = calcYear;
         this.calcYears = calcYear;
         this.provinceCode = provinceCode;
         this.provinceCode = provinceCode;
         this.taxCodeService = taxCodeService;
         this.taxCodeService = taxCodeService;
-
+        this.taxType = taxType;
+        this.accountStand = accountStand;
     }
     }
     public static Map<String,String> areaCodeMap;
     public static Map<String,String> areaCodeMap;
     public static Map<String,String> sensitiveMap ;
     public static Map<String,String> sensitiveMap ;

Plik diff jest za duży
+ 333 - 150
src/main/java/com/zzys/qhyscredit/report/proc/T41.java


Plik diff jest za duży
+ 413 - 131
src/main/java/com/zzys/qhyscredit/report/rest/GenerateReport.java


+ 86 - 25
src/main/java/com/zzys/qhyscredit/report/rest/ReportController.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.report.rest;
 package com.zzys.qhyscredit.report.rest;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
 import com.zzys.qhyscredit.channel.invitation.dao.model.LinkEntity;
 import com.zzys.qhyscredit.channel.invitation.dao.model.LinkEntity;
@@ -9,23 +9,29 @@ import com.zzys.qhyscredit.channel.staff.service.StaffService;
 import com.zzys.qhyscredit.enums.ReportType;
 import com.zzys.qhyscredit.enums.ReportType;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.report.dao.model.ReportEntity;
 import com.zzys.qhyscredit.report.dao.model.ReportEntity;
+import com.zzys.qhyscredit.report.dao.model.ReportExtend;
 import com.zzys.qhyscredit.report.dao.model.ReportTaskEntity;
 import com.zzys.qhyscredit.report.dao.model.ReportTaskEntity;
 import com.zzys.qhyscredit.report.dto.ReportEntityDto;
 import com.zzys.qhyscredit.report.dto.ReportEntityDto;
+import com.zzys.qhyscredit.report.service.ReportExtendService;
 import com.zzys.qhyscredit.report.service.ReportService;
 import com.zzys.qhyscredit.report.service.ReportService;
 import com.zzys.qhyscredit.report.service.ReportTaskService;
 import com.zzys.qhyscredit.report.service.ReportTaskService;
 import com.zzys.qhyscredit.report.utils.ReportConstant;
 import com.zzys.qhyscredit.report.utils.ReportConstant;
+import com.zzys.qhyscredit.security.AesEncryptUtils;
 import com.zzys.qhyscredit.security.SafetyProcess;
 import com.zzys.qhyscredit.security.SafetyProcess;
 import com.zzys.qhyscredit.utils.Constant;
 import com.zzys.qhyscredit.utils.Constant;
 import com.zzys.qhyscredit.utils.DateUtil;
 import com.zzys.qhyscredit.utils.DateUtil;
 import com.zzys.qhyscredit.utils.Result;
 import com.zzys.qhyscredit.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
+import java.awt.*;
 import java.io.File;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.IOException;
@@ -44,6 +50,7 @@ import java.util.List;
 @RestController
 @RestController
 @RequestMapping("/report")
 @RequestMapping("/report")
 @Api(tags = "报告")
 @Api(tags = "报告")
+@Slf4j
 public class ReportController extends BaseController {
 public class ReportController extends BaseController {
 
 
     @Autowired
     @Autowired
@@ -61,18 +68,23 @@ public class ReportController extends BaseController {
     @Autowired
     @Autowired
     private ReportTaskService reportTaskService;
     private ReportTaskService reportTaskService;
 
 
+    @Autowired
+    private ReportExtendService reportExtendService;
+
     @PostMapping("/save")
     @PostMapping("/save")
     @SafetyProcess
     @SafetyProcess
     @OperationLogAnnotation("新增报告")
     @OperationLogAnnotation("新增报告")
-    @ApiOperation(value = "新增报告", notes = "companyName:公司名称;tax:税号;reportType:报告类型 1邀约使用;2渠道使用;3公众号用户使用;linkId:邀请链接id,如果是邀请使用类型;channelId:渠道id;userId:用户编号;contactNumber:联系手机号")
+    @ApiOperation(value = "新增报告", notes = "type:类型 1税务风险报告 2信用评价报告;companyName:公司名称;tax:税号;reportType:报告类型 1邀约使用;2渠道使用;3公众号用户使用;linkId:邀请链接id,如果是邀请使用类型;channelId:渠道id;userId:用户编号;contactNumber:联系手机号")
     public Result save(@RequestBody String json) throws ParseException {
     public Result save(@RequestBody String json) throws ParseException {
+        System.out.println("json==="+json);
         JSONObject jsonObject = JSONObject.parseObject(json);
         JSONObject jsonObject = JSONObject.parseObject(json);
         ReportEntity reportEntity = jsonObject.toJavaObject(ReportEntity.class);
         ReportEntity reportEntity = jsonObject.toJavaObject(ReportEntity.class);
         reportEntity.setCreateTime(DateUtil.getNowTime());
         reportEntity.setCreateTime(DateUtil.getNowTime());
-        if (reportEntity.getReportType().equals(ReportType.INVITATION.getType()) && StringUtils.isEmpty(reportEntity.getLinkId())) {
-            return fail("邀请链接信息为空");
+        if(reportEntity.getType().equals("1")){
+            if (reportEntity.getReportType().equals(ReportType.INVITATION.getType()) && StringUtils.isEmpty(reportEntity.getLinkId())) {
+                return fail("邀请链接信息为空");
+            }
         }
         }
-
         //邀请链接的次数-1
         //邀请链接的次数-1
         if(StringUtils.isNotEmpty(reportEntity.getLinkId())){
         if(StringUtils.isNotEmpty(reportEntity.getLinkId())){
             LinkEntity link = this.linkService.findById(reportEntity.getLinkId());
             LinkEntity link = this.linkService.findById(reportEntity.getLinkId());
@@ -95,25 +107,33 @@ public class ReportController extends BaseController {
         reportEntity.setStatus(ReportConstant.REPORT_STATUS_DOING);
         reportEntity.setStatus(ReportConstant.REPORT_STATUS_DOING);
         reportEntity.setAuthStatus(Constant.ZERO);
         reportEntity.setAuthStatus(Constant.ZERO);
         reportEntity.setCreateTime(DateUtil.getNowTime());
         reportEntity.setCreateTime(DateUtil.getNowTime());
-        reportEntity = this.reportService.save(reportEntity);
+
         reportEntity.setUserId(jsonObject.getString("userId"));
         reportEntity.setUserId(jsonObject.getString("userId"));
-        //创建task
-        ReportTaskEntity reportTaskEntity = new ReportTaskEntity();
-        reportTaskEntity.setTaskName(reportEntity.getCompanyName()+"——"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
-        reportTaskEntity.setReportId(reportEntity.getId());
-        if(StringUtils.isNotBlank(jsonObject.getString("identifierId"))){
-            reportTaskEntity.setIdentifierId(jsonObject.getString("identifierId"));
-        }else {
-            reportTaskEntity.setIdentifierId("NAN");
+        reportEntity.setContactNumber(jsonObject.getString("contactNumber"));
+        if(reportEntity.getType().equals("2")){
+            reportEntity.setReportType("-");
         }
         }
-        if(StringUtils.isNotBlank(jsonObject.getString("password"))){
-            reportTaskEntity.setPassword(jsonObject.getString("password"));
-        }else {
-            reportTaskEntity.setPassword("NAN");
+        reportEntity = this.reportService.save(reportEntity);
+        //税务风险报告生成任务,信用评价报告不生成任务
+        if(reportEntity.getType().equals("1")){
+            //创建task
+            ReportTaskEntity reportTaskEntity = new ReportTaskEntity();
+            reportTaskEntity.setTaskName(reportEntity.getCompanyName()+"——"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
+            reportTaskEntity.setReportId(reportEntity.getId());
+            if(StringUtils.isNotBlank(jsonObject.getString("identifierId"))){
+                reportTaskEntity.setIdentifierId(jsonObject.getString("identifierId"));
+            }else {
+                reportTaskEntity.setIdentifierId("NAN");
+            }
+            if(StringUtils.isNotBlank(jsonObject.getString("password"))){
+                reportTaskEntity.setPassword(jsonObject.getString("password"));
+            }else {
+                reportTaskEntity.setPassword("NAN");
+            }
+            reportTaskEntity.setContactNumber(jsonObject.getString("contactNumber"));
+            reportTaskEntity.setTaskStatus(ReportConstant.REPORT_TASK_STATUS_UNDO);
+            reportTaskService.save(reportTaskEntity);
         }
         }
-        reportTaskEntity.setContactNumber(jsonObject.getString("contactNumber"));
-        reportTaskEntity.setTaskStatus(ReportConstant.REPORT_TASK_STATUS_UNDO);
-        reportTaskService.save(reportTaskEntity);
         return success();
         return success();
     }
     }
 
 
@@ -130,7 +150,7 @@ public class ReportController extends BaseController {
         return success(reportEntities);
         return success(reportEntities);
     }
     }
 
 
-    @ApiOperation(value = "查询报告记录", notes = "channelId:非必填,渠道id;pageNum,pageSize;")
+    @ApiOperation(value = "查询报告记录", notes = "channelId:非必填,渠道id;pageNum,pageSize;type:类型 1税务风险报告 2信用评价报告")
     @PostMapping("/findAll")
     @PostMapping("/findAll")
     @SafetyProcess
     @SafetyProcess
     @OperationLogAnnotation("查询报告记录")
     @OperationLogAnnotation("查询报告记录")
@@ -169,7 +189,15 @@ public class ReportController extends BaseController {
         return success(resultJson);
         return success(resultJson);
     }
     }
 
 
-
+    @GetMapping("/findByUser/{userId}")
+    @SafetyProcess
+    @OperationLogAnnotation("查询报告记录-个人")
+    public Result findByUserId(@PathVariable String userId){
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("userId",userId);
+        Page<ReportEntity> reportEntities = this.reportService.find(jsonObject);
+        return success(reportEntities);
+    }
     @GetMapping(value = "/preview/{reportId}")
     @GetMapping(value = "/preview/{reportId}")
     public Result pdfStreamHandler(HttpServletResponse response, @PathVariable String reportId) {
     public Result pdfStreamHandler(HttpServletResponse response, @PathVariable String reportId) {
         ReportEntity reportEntity = this.reportService.findById(reportId);
         ReportEntity reportEntity = this.reportService.findById(reportId);
@@ -192,19 +220,52 @@ public class ReportController extends BaseController {
                 input.read(data);
                 input.read(data);
                 response.getOutputStream().write(data);
                 response.getOutputStream().write(data);
             } catch (Exception e) {
             } catch (Exception e) {
-                System.out.println("pdf文件处理异常:" + e);
+                log.error("pdf文件处理异常:" + e);
+//                System.out.println("pdf文件处理异常:" + e);
             } finally {
             } finally {
                 try {
                 try {
                     if (input != null) {
                     if (input != null) {
                         input.close();
                         input.close();
                     }
                     }
                 } catch (IOException e) {
                 } catch (IOException e) {
-                    e.printStackTrace();
+//                    e.printStackTrace();
+                    log.error(e.getMessage());
                 }
                 }
             }
             }
         }
         }
         return success();
         return success();
     }
     }
 
 
+    @PostMapping("/updateReportStatus")
+    @ApiOperation(value = "更新信用评价报告",notes = "filePath:文件路径;id:reportId;grade:信用等级 整数 1、2、3")
+    @SafetyProcess
+    public Result updateReportStatus(@RequestBody String json){
+
+        JSONObject jsonObject = JSONObject.parseObject(json);
+//        AesEncryptUtils.decrypt(jsonObject.getString("data"));
+        ReportEntity entity = this.reportService.findById(jsonObject.getString("id"));
+        if(entity == null){
+            return fail("报告编号不存在");
+        }
+        if(!entity.getType().equals("2")){
+            return fail("非信用评价报告,不允许修改");
+        }
+        entity.setStatus(ReportConstant.REPORT_STATUS_DONE);
+        entity.setReportPath(jsonObject.getString("filePath"));
+        entity.setUpdateTime(DateUtil.getNowTime());
+        this.reportService.save(entity);
+        //保存扩展信息
+        ReportExtend extend = new ReportExtend();
+        extend.setReportPath(entity.getReportPath());
+        extend.setContactNumber(entity.getContactNumber());
+        extend.setCreateDate(DateUtil.getNowTime());
+        extend.setTax(entity.getTax());
+        extend.setReportGrade(jsonObject.getIntValue("grade"));
+        extend.setFlag("0");
+        extend.setExportFlag("0");
+        extend.setCompanyName(entity.getCompanyName());
+        this.reportExtendService.save(extend);
+        return success();
+    }
 
 
 }
 }

+ 1 - 1
src/main/java/com/zzys/qhyscredit/report/service/ReportService.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.report.service;
 package com.zzys.qhyscredit.report.service;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.report.dao.model.ReportEntity;
 import com.zzys.qhyscredit.report.dao.model.ReportEntity;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 
 

+ 7 - 1
src/main/java/com/zzys/qhyscredit/report/service/impl/ReportServiceImpl.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.report.service.impl;
 package com.zzys.qhyscredit.report.service.impl;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.report.dao.model.ReportEntity;
 import com.zzys.qhyscredit.report.dao.model.ReportEntity;
 import com.zzys.qhyscredit.report.dao.repository.ReportRepository;
 import com.zzys.qhyscredit.report.dao.repository.ReportRepository;
@@ -57,6 +57,12 @@ public class ReportServiceImpl implements ReportService {
                 if(StringUtils.isNotEmpty(jsonObject.getString("channelId"))){
                 if(StringUtils.isNotEmpty(jsonObject.getString("channelId"))){
                     list.add(cb.equal(root.get("channelId"),jsonObject.getString("channelId")));
                     list.add(cb.equal(root.get("channelId"),jsonObject.getString("channelId")));
                 }
                 }
+                if(StringUtils.isNotEmpty(jsonObject.getString("userId"))){
+                    list.add(cb.equal(root.get("userId"),jsonObject.getString("userId")));
+                }
+                if(StringUtils.isNotEmpty(jsonObject.getString("type"))){
+                    list.add(cb.equal(root.get("type"),jsonObject.getString("type")));
+                }
                 query.where(cb.and(list.toArray(new Predicate[list.size()])));
                 query.where(cb.and(list.toArray(new Predicate[list.size()])));
                 //排序的升序和倒叙的写法
                 //排序的升序和倒叙的写法
                 query.orderBy(cb.desc(root.get("id")));
                 query.orderBy(cb.desc(root.get("id")));

Plik diff jest za duży
+ 255 - 168
src/main/java/com/zzys/qhyscredit/report/utils/WordUtils.java


+ 1 - 1
src/main/java/com/zzys/qhyscredit/report/vo/AdPuVo.java

@@ -12,6 +12,6 @@ public class AdPuVo {
     private String year;//年份
     private String year;//年份
     private double adpu;//广告费和业务宣传费
     private double adpu;//广告费和业务宣传费
     private double income;//收入
     private double income;//收入
-    private String proportion;//广告费和业务宣传费对营业收入的占比
+    private double proportion;//广告费和业务宣传费对营业收入的占比
     private String referenceValues;//行业参考值
     private String referenceValues;//行业参考值
 }
 }

+ 1 - 0
src/main/java/com/zzys/qhyscredit/report/vo/DividendTaxVo.java

@@ -12,4 +12,5 @@ public class DividendTaxVo {
     private String year;//年份
     private String year;//年份
     private double dividendAmount;//分配股息红利金额
     private double dividendAmount;//分配股息红利金额
     private double dividendTax;//股息红利个人所得税
     private double dividendTax;//股息红利个人所得税
+    private double dividendTaxPay;//已缴纳股息红利个人所得税
 }
 }

+ 2 - 1
src/main/java/com/zzys/qhyscredit/report/vo/ReportVO.java

@@ -23,7 +23,8 @@ public class ReportVO {
     Map<String, SellAndBuyProductTypeVo> mapSellProductType = new HashMap<>();//销售
     Map<String, SellAndBuyProductTypeVo> mapSellProductType = new HashMap<>();//销售
     Map<String, Double> mapSensitiveBuy = new HashMap<>();
     Map<String, Double> mapSensitiveBuy = new HashMap<>();
     List<InvoiceVo> sensitiveInvoiceList = new ArrayList<>();//近 36 个月进项发票中敏感业务发票
     List<InvoiceVo> sensitiveInvoiceList = new ArrayList<>();//近 36 个月进项发票中敏感业务发票
-    double lastYearFixedAsset = 0d;
+    double lastYearFixedAssetFinal = 0d;
+    double lastYearFixedAssetBeginning = 0d;
     Map<String, Tax0RateVO> mapTax0Rate = new HashMap<>();//近 12 个月零税额、顶额发票分析
     Map<String, Tax0RateVO> mapTax0Rate = new HashMap<>();//近 12 个月零税额、顶额发票分析
     List<InvoiceVo> tax0RateList = new ArrayList<>();//近12个月零税额发票明细
     List<InvoiceVo> tax0RateList = new ArrayList<>();//近12个月零税额发票明细
     List<Map<String, List<SellAndBuyCommodityCategoryVo>>> SellAndBuyCommodityCategoryList;//销售/采购商品品类表格
     List<Map<String, List<SellAndBuyCommodityCategoryVo>>> SellAndBuyCommodityCategoryList;//销售/采购商品品类表格

+ 17 - 7
src/main/java/com/zzys/qhyscredit/security/AesEncryptUtils.java

@@ -77,13 +77,23 @@ public class AesEncryptUtils {
 //        map.put("key","value");
 //        map.put("key","value");
 //        map.put("中文","汉字");
 //        map.put("中文","汉字");
 //        String content = JSONObject.toJSONString(map);
 //        String content = JSONObject.toJSONString(map);
-        String content = "河南禄鸿智能科技有限公司";
-        System.out.println("加密前:" + content);
-//
-        String encrypt = encrypt(content, KEY);
+//        String content = "02149e63ea0066e16c65c6f79a9c4367";
+//        System.out.println("加密前:" + content);
+////
+        String encrypt = encrypt("91310113757567690A", KEY);
+//        String encrypt1 = encrypt("华北计算机系统工程研究所(中国电子信息产业集团有限公司第六研究所)", KEY);
+//        String encrypt2 = encrypt("中国电子技术标准化研究院(工业和信息化部电子工业标准化研究院)(工业和信息化部电子第四研究院)", KEY);
+
         System.out.println("加密后:" + encrypt);
         System.out.println("加密后:" + encrypt);
-        encrypt = "4540db97742031874995884de824c605";
-        String decrypt = decrypt(encrypt, KEY);
-        System.out.println("解密后:" + decrypt);
+//        System.out.println("加密后:" + encrypt1);
+//        System.out.println("加密后:" + encrypt2);
+//        encrypt = "06d9c7a93ddb1205aba670da97f532e9";
+//        String decrypt = decrypt(encrypt, KEY);
+//        System.out.println("解密后:" + decrypt);
+//
+//
+//        System.out.println("================");
+        System.out.println(decrypt("9aaa42c1dadae2d458fa52e9333b305d"));
+
     }
     }
 }
 }

+ 1 - 1
src/main/java/com/zzys/qhyscredit/security/DecodeRequestBodyAdvice.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.security;
 package com.zzys.qhyscredit.security;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;

+ 1 - 1
src/main/java/com/zzys/qhyscredit/security/SSLConfig.java

@@ -16,7 +16,7 @@ import org.springframework.context.annotation.Profile;
  * @description:
  * @description:
  * @date 2021/9/15 14:32
  * @date 2021/9/15 14:32
  */
  */
-//@Configuration
+@Configuration
 public class SSLConfig {
 public class SSLConfig {
     @Bean
     @Bean
     public TomcatServletWebServerFactory servletContainer() { //springboot2 新变化
     public TomcatServletWebServerFactory servletContainer() { //springboot2 新变化

+ 2 - 2
src/main/java/com/zzys/qhyscredit/tax/price/rest/PriceController.java

@@ -1,7 +1,7 @@
 package com.zzys.qhyscredit.tax.price.rest;
 package com.zzys.qhyscredit.tax.price.rest;
 
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.security.SafetyProcess;
 import com.zzys.qhyscredit.security.SafetyProcess;

+ 2 - 2
src/main/java/com/zzys/qhyscredit/tax/product/rest/ProductController.java

@@ -1,7 +1,7 @@
 package com.zzys.qhyscredit.tax.product.rest;
 package com.zzys.qhyscredit.tax.product.rest;
 
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.security.SafetyProcess;
 import com.zzys.qhyscredit.security.SafetyProcess;

+ 1 - 0
src/main/java/com/zzys/qhyscredit/user/dao/dto/UserInfoDto.java

@@ -35,4 +35,5 @@ public class UserInfoDto {
     private String compAddress;
     private String compAddress;
     private String channelAvatar;
     private String channelAvatar;
     private String posterBackground;
     private String posterBackground;
+    private String avatar;
 }
 }

+ 10 - 0
src/main/java/com/zzys/qhyscredit/user/dao/model/UserInfo.java

@@ -58,7 +58,17 @@ public class UserInfo extends BaseEntity {
     @Column(name = "follow",columnDefinition = "varchar(2) comment '是否关注公众号:0否 1是'")
     @Column(name = "follow",columnDefinition = "varchar(2) comment '是否关注公众号:0否 1是'")
     private String follow;
     private String follow;
 
 
+    @Column(name = "mail",columnDefinition = "varchar(100) comment '邮箱'")
+    private String mail;
 
 
+    @Column(name = "err_num",columnDefinition = "int(10) comment '密码错误次数'")
+    private int errNum = 0;
+
+    @Column(name = "lock_end_time",columnDefinition = "datetime comment '密码锁定结束时间'")
+    private String lockEndTime;
+
+    @Column(name = "update_password_time",columnDefinition = "varchar(20) comment '密码更新时间'")
+    private String updatePasswordTime;
 
 
     @Override
     @Override
     public boolean equals(Object o) {
     public boolean equals(Object o) {

+ 1 - 1
src/main/java/com/zzys/qhyscredit/user/dao/repository/UserRepository.java

@@ -23,5 +23,5 @@ public interface UserRepository extends BaseRepository<UserInfo,String> {
     UserInfo findByName(String name);
     UserInfo findByName(String name);
 
 
 
 
-
+    UserInfo findByPhone(String phone);
 }
 }

+ 70 - 37
src/main/java/com/zzys/qhyscredit/user/rest/UserController.java

@@ -3,8 +3,7 @@ package com.zzys.qhyscredit.user.rest;
 import cn.hutool.captcha.CaptchaUtil;
 import cn.hutool.captcha.CaptchaUtil;
 import cn.hutool.captcha.LineCaptcha;
 import cn.hutool.captcha.LineCaptcha;
 import cn.hutool.captcha.generator.RandomGenerator;
 import cn.hutool.captcha.generator.RandomGenerator;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
 import com.zzys.qhyscredit.channel.channel.service.ChannelService;
@@ -30,17 +29,10 @@ import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
-import org.hibernate.boot.model.naming.ImplicitJoinColumnNameSource;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
 import org.springframework.util.DigestUtils;
 import org.springframework.util.DigestUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.client.RestTemplate;
 
 
 import javax.crypto.BadPaddingException;
 import javax.crypto.BadPaddingException;
 import javax.crypto.Cipher;
 import javax.crypto.Cipher;
@@ -53,7 +45,11 @@ import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.StandardCharsets;
 import java.security.*;
 import java.security.*;
 import java.security.spec.InvalidParameterSpecException;
 import java.security.spec.InvalidParameterSpecException;
-import java.util.*;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
 
 
 /**
 /**
  * @Author:zzf
  * @Author:zzf
@@ -81,7 +77,8 @@ public class UserController extends BaseController {
     @Autowired
     @Autowired
     private WXUtils wxUtils;
     private WXUtils wxUtils;
 
 
-
+    @Autowired
+    private UserPhotoService userPhotoService;
     @ApiOperation("快速登录")
     @ApiOperation("快速登录")
     @PostMapping(value = "/login")
     @PostMapping(value = "/login")
     @OperationLogAnnotation("C端用户登录")
     @OperationLogAnnotation("C端用户登录")
@@ -107,6 +104,9 @@ public class UserController extends BaseController {
             userInfo.setOpenId(jsonObject.getString("openid"));
             userInfo.setOpenId(jsonObject.getString("openid"));
             userInfo.setPassword(Constant.DEFAULT_PASSWORD);
             userInfo.setPassword(Constant.DEFAULT_PASSWORD);
             userInfo.setType(Constant.USER_TYPE_S);
             userInfo.setType(Constant.USER_TYPE_S);
+            if(StringUtils.isEmpty(userInfo.getChannelId())){
+                userInfo.setChannelId("-");
+            }
         }
         }
         userInfo = this.userService.save(userInfo);
         userInfo = this.userService.save(userInfo);
         JSONObject resultJson = new JSONObject();
         JSONObject resultJson = new JSONObject();
@@ -119,7 +119,10 @@ public class UserController extends BaseController {
         userInfoDto.setType(userInfo.getType());
         userInfoDto.setType(userInfo.getType());
         userInfoDto.setState(userInfo.getState());
         userInfoDto.setState(userInfo.getState());
         userInfoDto.setIsAuth(Constant.ONE);
         userInfoDto.setIsAuth(Constant.ONE);
-
+        UserPhotoInfo userPhotoInfo = this.userPhotoService.findByUserId(userInfo.getId());
+        if(userPhotoInfo != null){
+            userInfoDto.setAvatar(userPhotoInfo.getPath());
+        }
         String message = "登录成功:";
         String message = "登录成功:";
         boolean successFlag = true;
         boolean successFlag = true;
         if(StringUtils.isNotEmpty(userInfo.getPhone())){
         if(StringUtils.isNotEmpty(userInfo.getPhone())){
@@ -179,6 +182,9 @@ public class UserController extends BaseController {
             userInfoDto.setIsAuth(Constant.ZERO);
             userInfoDto.setIsAuth(Constant.ZERO);
             userInfoDto.setName(userInfoDto.getName());
             userInfoDto.setName(userInfoDto.getName());
         }
         }
+        if(StringUtils.isEmpty(userInfoDto.getChannelId())){
+            userInfoDto.setChannelId("-");
+        }
         resultJson.put("user",userInfoDto);
         resultJson.put("user",userInfoDto);
         resultJson.put("token", JWTUtil.generateToken(userInfo));
         resultJson.put("token", JWTUtil.generateToken(userInfo));
         if(successFlag){
         if(successFlag){
@@ -287,34 +293,50 @@ public class UserController extends BaseController {
     @PostMapping("/blogin")
     @PostMapping("/blogin")
     @SafetyProcess
     @SafetyProcess
     @OperationLogAnnotation("B端用户登录")
     @OperationLogAnnotation("B端用户登录")
-    public Result blogin(@RequestBody String json) throws Exception {
+    public Result blogin(@RequestBody String json) {
         JSONObject jsonObject = JSONObject.parseObject(json);
         JSONObject jsonObject = JSONObject.parseObject(json);
         String imgText = jsonObject.getString("imgText");
         String imgText = jsonObject.getString("imgText");
         boolean verify = lineCaptcha.verify(imgText);
         boolean verify = lineCaptcha.verify(imgText);
         if(!verify){
         if(!verify){
             return fail("图形验证码错误");
             return fail("图形验证码错误");
         }
         }
-        UserInfo userInfo = this.userService.login(jsonObject.getString("name"), AesEncryptUtils.encrypt(jsonObject.getString("password")));
-        if(userInfo == null){
-            return fail("用户名或密码错误");
-        }else if(userInfo.getState().equals("0")){
+        UserInfo user = this.userService.findByName(jsonObject.getString("name"));
+        if(user == null || user.getState().equals("0")){
             return fail("用户不存在");
             return fail("用户不存在");
-        }else {
-            JSONObject resultJson = new JSONObject();
-            resultJson.put("token",JWTUtil.generateToken(userInfo));
-            userInfo.setPassword("");
-            resultJson.put("user",userInfo);
-            return success(resultJson);
         }
         }
+        if(user.getErrNum() >= 5 && user.getLockEndTime().compareToIgnoreCase(new SimpleDateFormat("yyyy年MM月HH点mm分").format(new Date())) >0){
+            return fail("密码错误次数过多,账号已被锁定,请在"+user.getLockEndTime()+"后重试!");
+        }
+        if(!user.getPassword().equals(jsonObject.getString("password"))){
+            user.setErrNum(user.getErrNum()+1);
+            if(user.getErrNum() == 5){
+                //锁定账号
+                user.setLockEndTime(new SimpleDateFormat("yyyy年MM月HH点mm分").format(DateUtil.addMinutes(new Date(),10)));
+            }
+            this.userService.save(user);
+            return fail("密码错误,您还有"+(5-user.getErrNum())+"次机会");
+        }
+
+        //登录成功后,重置错误次数
+        user.setErrNum(0);
+        user.setLockEndTime("");
+        this.userService.save(user);
+        JSONObject resultJson = new JSONObject();
+        resultJson.put("token",JWTUtil.generateToken(user));
+        user.setPassword("");
+        resultJson.put("user",user);
+        return success(resultJson);
+
     }
     }
 
 
     @ApiOperation(value = "新增/修改/",notes = "channelId:渠道编号;phone :手机号;name:登录名;userName:昵称;password:密码;photoPath:头像;id:新增用户为空,修改用户不为空,删除用户时候id不为空,且state=0;")
     @ApiOperation(value = "新增/修改/",notes = "channelId:渠道编号;phone :手机号;name:登录名;userName:昵称;password:密码;photoPath:头像;id:新增用户为空,修改用户不为空,删除用户时候id不为空,且state=0;")
     @PostMapping("/save")
     @PostMapping("/save")
     @SafetyProcess
     @SafetyProcess
     @OperationLogAnnotation("B端用户管理")
     @OperationLogAnnotation("B端用户管理")
-    public Result save(@RequestBody String json){
+    public Result save(@RequestBody String json) throws Exception {
         UserInfo userInfo = JSONObject.parseObject(json).toJavaObject(UserInfo.class);
         UserInfo userInfo = JSONObject.parseObject(json).toJavaObject(UserInfo.class);
         if(userInfo.getId()==null || userInfo.getId().isEmpty()){
         if(userInfo.getId()==null || userInfo.getId().isEmpty()){
+            userInfo.setUpdatePasswordTime(DateUtil.getNowTime());
             UserInfo info = this.userService.findByName(userInfo.getName());
             UserInfo info = this.userService.findByName(userInfo.getName());
             if(info != null && info.getState().equals(Constant.ONE)){
             if(info != null && info.getState().equals(Constant.ONE)){
                 return fail("用户名已存在");
                 return fail("用户名已存在");
@@ -327,9 +349,10 @@ public class UserController extends BaseController {
         if(userInfo.getState() == null || userInfo.getState().equals("")){
         if(userInfo.getState() == null || userInfo.getState().equals("")){
             userInfo.setState(Constant.ONE);
             userInfo.setState(Constant.ONE);
         }
         }
+
         if(StringUtils.isNotEmpty(userInfo.getId())){
         if(StringUtils.isNotEmpty(userInfo.getId())){
             UserInfo info = this.userService.findById(userInfo.getId());
             UserInfo info = this.userService.findById(userInfo.getId());
-            userInfo.setPassword(info.getPassword());
+            userInfo.setPassword(AesEncryptUtils.encrypt(info.getPassword()));
             userInfo.setPhone(info.getPhone());
             userInfo.setPhone(info.getPhone());
         }
         }
         this.userService.save(userInfo);
         this.userService.save(userInfo);
@@ -366,6 +389,7 @@ public class UserController extends BaseController {
                 return fail("旧密码错误");
                 return fail("旧密码错误");
             }
             }
             userInfo.setPassword(jsonObject.getString("newPassword"));
             userInfo.setPassword(jsonObject.getString("newPassword"));
+            userInfo.setUpdatePasswordTime(DateUtil.getNowTime());
             this.userService.save(userInfo);
             this.userService.save(userInfo);
         }
         }
         return success();
         return success();
@@ -458,20 +482,29 @@ public class UserController extends BaseController {
         if(userInfo == null){
         if(userInfo == null){
             return fail("用户信息不存在");
             return fail("用户信息不存在");
         }
         }
-        StaffEntity staff = this.staffService.findByPhone(userInfo.getPhone());
-        if(staff == null){
-            return fail("员工信息不存在");
-        }
-        if(StringUtils.isNotEmpty(jsonObject.getString("userName"))){
-            staff.setName(jsonObject.getString("userName"));
+        UserPhotoInfo userPhotoInfo = this.userPhotoService.findByUserId(userInfo.getId());
+        if(userPhotoInfo == null){
+            userPhotoInfo = new UserPhotoInfo();
+            userPhotoInfo.setUserId(userInfo.getId());
         }
         }
-        if(StringUtils.isNotEmpty(jsonObject.getString("mail"))){
-            staff.setMail(jsonObject.getString("mail"));
-        }
-        if(StringUtils.isNotEmpty(jsonObject.getString("avatar"))) {
-            staff.setAvatar(jsonObject.getString("avatar"));
+        userPhotoInfo.setPath(jsonObject.getString("avatar"));
+        userInfo.setMail(jsonObject.getString("mail"));
+        userInfo.setUserName(jsonObject.getString("userName"));
+        this.userService.save(userInfo);
+        this.userPhotoService.save(userPhotoInfo);
+        StaffEntity staff = this.staffService.findByPhone(userInfo.getPhone());
+        if(staff != null){
+            if(StringUtils.isNotEmpty(jsonObject.getString("userName"))){
+                staff.setName(jsonObject.getString("userName"));
+            }
+            if(StringUtils.isNotEmpty(jsonObject.getString("mail"))){
+                staff.setMail(jsonObject.getString("mail"));
+            }
+            if(StringUtils.isNotEmpty(jsonObject.getString("avatar"))) {
+                staff.setAvatar(jsonObject.getString("avatar"));
+            }
+            this.staffService.save(staff);
         }
         }
-        this.staffService.save(staff);
         return success();
         return success();
     }
     }
 }
 }

+ 3 - 1
src/main/java/com/zzys/qhyscredit/user/service/UserService.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.user.service;
 package com.zzys.qhyscredit.user.service;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.user.dao.model.UserInfo;
 import com.zzys.qhyscredit.user.dao.model.UserInfo;
 import org.apache.catalina.User;
 import org.apache.catalina.User;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
@@ -26,4 +26,6 @@ public interface UserService {
     List<UserInfo> findAll(JSONObject jsonObject);
     List<UserInfo> findAll(JSONObject jsonObject);
 
 
     void deleteById(String id);
     void deleteById(String id);
+
+    UserInfo findByPhone(String phone);
 }
 }

+ 6 - 1
src/main/java/com/zzys/qhyscredit/user/service/impl/UserServiceImpl.java

@@ -1,6 +1,6 @@
 package com.zzys.qhyscredit.user.service.impl;
 package com.zzys.qhyscredit.user.service.impl;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.channel.channel.dao.model.ChannelEntity;
 import com.zzys.qhyscredit.security.AesEncryptUtils;
 import com.zzys.qhyscredit.security.AesEncryptUtils;
 import com.zzys.qhyscredit.user.dao.model.UserInfo;
 import com.zzys.qhyscredit.user.dao.model.UserInfo;
@@ -138,4 +138,9 @@ public class UserServiceImpl implements UserService {
         this.userRepository.deleteById(id);
         this.userRepository.deleteById(id);
     }
     }
 
 
+    @Override
+    public UserInfo findByPhone(String phone) {
+        return this.userRepository.findByPhone(phone);
+    }
+
 }
 }

+ 8 - 0
src/main/java/com/zzys/qhyscredit/utils/Constant.java

@@ -43,4 +43,12 @@ public class Constant {
     public static final String LINK_FLAG5 = "5";//status=1 当前扫码用户openId与已支付用户openId不一致
     public static final String LINK_FLAG5 = "5";//status=1 当前扫码用户openId与已支付用户openId不一致
 
 
 
 
+    public static final String TAX_TYPE_NORMAL_TAX = "一般纳税人";
+    public static final String TAX_TYPE_SMALL_TAX = "小规模纳税人";
+    public static final String ACCOUNT_STAND_ENTERPRISE = "企业会计准则";
+    public static final String ACCOUNT_STAND_SMALL_ENTERPRISE = "小企业会计准则";
+    public static int appId = 12345;
+    public static String appKey = "";
+    public static int templateId = 000;
+    public static String smsSign = "smsSign";
 }
 }

+ 1 - 1
src/main/java/com/zzys/qhyscredit/utils/OrderNoUtil.java

@@ -109,7 +109,7 @@ public class OrderNoUtil {
     public static void main(String[] args) {
     public static void main(String[] args) {
         OrderNoUtil snowFlake = new OrderNoUtil(2, 5);
         OrderNoUtil snowFlake = new OrderNoUtil(2, 5);
         long start = System.currentTimeMillis();
         long start = System.currentTimeMillis();
-        for (int i = 0; i < 1; i++) {
+        for (int i = 0; i < 10; i++) {
             System.out.println(snowFlake.nextId());
             System.out.println(snowFlake.nextId());
         }
         }
         System.out.println((System.currentTimeMillis() - start)/1000 + "秒");
         System.out.println((System.currentTimeMillis() - start)/1000 + "秒");

+ 6 - 3
src/main/java/com/zzys/qhyscredit/utils/QrCodeUtil.java

@@ -126,10 +126,13 @@ public class QrCodeUtil {
             posterPath = "./poster/"+file.getName();
             posterPath = "./poster/"+file.getName();
             Graphics2D graphics2D = backgroundImage.createGraphics();
             Graphics2D graphics2D = backgroundImage.createGraphics();
             //二维码或小图在大图的左上角坐标
             //二维码或小图在大图的左上角坐标
-            int x = backgroundImage.getWidth() - codeImage.getWidth()-45; //加是向右,减是向左
-            int y = (backgroundImage.getHeight() - codeImage.getHeight()-50); //加是向下,减是向上
+//            int x = backgroundImage.getWidth() - codeImage.getWidth()-5; //加是向右,减是向左
+//            int y = (backgroundImage.getHeight() - codeImage.getHeight()-10); //加是向下,减是向上
+            int x = backgroundImage.getWidth() - 200-5; //加是向右,减是向左
+            int y = (backgroundImage.getHeight() - 200-10); //加是向下,减是向上
             //将二维码画在背景图上
             //将二维码画在背景图上
-            graphics2D.drawImage(codeImage, x, y, codeImage.getWidth(), codeImage.getHeight(), null);
+//            graphics2D.drawImage(codeImage, x, y, codeImage.getWidth(), codeImage.getHeight(), null);
+            graphics2D.drawImage(codeImage,x,y,200,200,null);
             //结束绘画
             //结束绘画
             graphics2D.dispose();
             graphics2D.dispose();
             //为了保证大图背景不变色,formatName必须为"png"
             //为了保证大图背景不变色,formatName必须为"png"

+ 1 - 1
src/main/java/com/zzys/qhyscredit/utils/WechatDecryptDataUtil.java

@@ -1,7 +1,7 @@
 package com.zzys.qhyscredit.utils;
 package com.zzys.qhyscredit.utils;
 
 
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 
 
 import javax.crypto.Cipher;
 import javax.crypto.Cipher;

+ 100 - 12
src/main/java/com/zzys/qhyscredit/wxpay/controller/WxPayController.java

@@ -1,11 +1,12 @@
 package com.zzys.qhyscredit.wxpay.controller;
 package com.zzys.qhyscredit.wxpay.controller;
 
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.google.gson.Gson;
 import com.google.gson.Gson;
 import com.wechat.pay.contrib.apache.httpclient.auth.Verifier;
 import com.wechat.pay.contrib.apache.httpclient.auth.Verifier;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.base.rest.BaseController;
 import com.zzys.qhyscredit.channel.invitation.dao.model.LinkEntity;
 import com.zzys.qhyscredit.channel.invitation.dao.model.LinkEntity;
 import com.zzys.qhyscredit.channel.invitation.service.LinkService;
 import com.zzys.qhyscredit.channel.invitation.service.LinkService;
+import com.zzys.qhyscredit.channel.order.dao.model.OrderEntity;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.opLog.annotation.OperationLogAnnotation;
 import com.zzys.qhyscredit.security.SafetyProcess;
 import com.zzys.qhyscredit.security.SafetyProcess;
 import com.zzys.qhyscredit.user.dao.model.UserInfo;
 import com.zzys.qhyscredit.user.dao.model.UserInfo;
@@ -14,6 +15,7 @@ import com.zzys.qhyscredit.utils.Constant;
 import com.zzys.qhyscredit.utils.Result;
 import com.zzys.qhyscredit.utils.Result;
 import com.zzys.qhyscredit.wxpay.service.WxPayService;
 import com.zzys.qhyscredit.wxpay.service.WxPayService;
 import com.zzys.qhyscredit.wxpay.utils.HttpUtils;
 import com.zzys.qhyscredit.wxpay.utils.HttpUtils;
+import com.zzys.qhyscredit.wxpay.utils.RandomUtil;
 import com.zzys.qhyscredit.wxpay.utils.WechatPay2ValidatorForRequest;
 import com.zzys.qhyscredit.wxpay.utils.WechatPay2ValidatorForRequest;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
@@ -26,13 +28,20 @@ import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.util.EntityUtils;
 import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.util.Base64Utils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.Signature;
+import java.security.SignatureException;
 import java.util.HashMap;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 /**
 /**
@@ -66,6 +75,9 @@ public class WxPayController  extends BaseController {
     @Value("${weixin.mchid}")
     @Value("${weixin.mchid}")
     private String mchid;
     private String mchid;
 
 
+    @Value("${weixin.private-key-path}")
+    private String privateKeyPath;
+
     @Autowired
     @Autowired
     private UserService userService;
     private UserService userService;
 
 
@@ -100,21 +112,82 @@ public class WxPayController  extends BaseController {
             this.linkService.save(link);
             this.linkService.save(link);
 
 
             //获取必要参数
             //获取必要参数
+//            JSONObject paramObject = JSONObject.parseObject(json);
             JSONObject paramObject = JSONObject.parseObject(json);
             JSONObject paramObject = JSONObject.parseObject(json);
             paramObject.put("appid",appid);
             paramObject.put("appid",appid);
             paramObject.put("mchid",mchid);
             paramObject.put("mchid",mchid);
             paramObject.put("openId",userInfo.getOpenId());
             paramObject.put("openId",userInfo.getOpenId());
-            paramObject.put("amount",Integer.parseInt(link.getAmount())*100);
+            paramObject.put("amount",Double.parseDouble(link.getAmount())*100);
             paramObject.put("userId",userInfo.getId());
             paramObject.put("userId",userInfo.getId());
             paramObject.put("channelId",link.getChannelId());
             paramObject.put("channelId",link.getChannelId());
             paramObject.put("title",link.getTitle());
             paramObject.put("title",link.getTitle());
-            String prepayId =  wxPayService.aspiPay(paramObject);
-            return success(prepayId);
+            String prepayId =  wxPayService.aspiPay(paramObject,link.getId());
+
+            JSONObject resultJson = createResultJson(prepayId);
+            if(prepayId.equals("0000")){
+                //金额为0,不需要调用支付
+                link  = this.linkService.findById(jsonObject.getString("linkId"));
+                link.setStatus(Constant.ONE);
+                this.linkService.save(link);
+                return success("0000");
+            }else {
+                return success(resultJson);
+            }
         }catch (Exception e){
         }catch (Exception e){
             e.printStackTrace();
             e.printStackTrace();
             return fail("生成失败");
             return fail("生成失败");
         }
         }
     }
     }
+    @SafetyProcess
+    @ApiOperation(value = "小程序预下单-信用等级",notes = "amount:金额;userId:必传")
+    @PostMapping("/aspiPay2")
+    @OperationLogAnnotation("小程序预下单")
+    public Result aspiPay2(@RequestBody String json) throws IOException, NoSuchAlgorithmException, InvalidKeyException, SignatureException {
+        JSONObject paramObject = JSONObject.parseObject(json);
+        UserInfo userInfo = this.userService.findById(paramObject.getString("userId"));
+        if(userInfo == null){
+            return fail("用户不存在");
+        }
+        paramObject.put("appid",appid);
+        paramObject.put("mchid",mchid);
+        paramObject.put("openId",userInfo.getOpenId());
+        paramObject.put("amount",paramObject.getDoubleValue("amount"));
+        paramObject.put("userId",userInfo.getId());
+        paramObject.put("channelId","00001");
+        paramObject.put("title","信用等级报告");
+        String prepayId =  wxPayService.aspiPay(paramObject);
+        JSONObject resultJson = createResultJson(prepayId);
+        return success(resultJson);
+    }
+
+    @SafetyProcess
+    @ApiOperation(value = "查询信用评价报告订单")
+    @GetMapping("/queryOrder")
+    @OperationLogAnnotation("查询信用评价报告订单")
+    public Result queryGradeOrder() {
+        List<OrderEntity> orderEntityList = wxPayService.findByChannelIdAndTitle("00001","信用等级报告");
+        return success(orderEntityList);
+    }
+
+    private JSONObject createResultJson(String prepayId) throws NoSuchAlgorithmException, InvalidKeyException, SignatureException {
+        JSONObject resultJson = new JSONObject();
+        resultJson.put("prepay_id",prepayId);
+        resultJson.put("timeStamp",System.currentTimeMillis()/1000+"");
+        resultJson.put("package","prepay_id="+prepayId);
+        resultJson.put("signType","RSA");
+        resultJson.put("appId",appid);
+        resultJson.put("nonceStr", RandomUtil.getRandomString(32));
+        Signature signature = Signature.getInstance("SHA256withRSA");
+        signature.initSign(wxPayService.getPrivateKey(privateKeyPath));
+        StringBuffer buffer = new StringBuffer();
+        buffer.append(resultJson.getString("appId")).append("\n").
+                append(resultJson.getLong("timeStamp")).append("\n").
+                append(resultJson.getString("nonceStr")).append("\n").
+                append(resultJson.getString("package")).append("\n");
+        signature.update(buffer.toString().getBytes(StandardCharsets.UTF_8));
+        resultJson.put("paySign", Base64Utils.encodeToString(signature.sign()));
+        return resultJson;
+    }
 
 
     /**
     /**
      * 支付通知 微信支付通过支付通知接口将用户支付成功消息通知给商户
      * 支付通知 微信支付通过支付通知接口将用户支付成功消息通知给商户
@@ -128,6 +201,8 @@ public class WxPayController  extends BaseController {
         log.info("支付通知====================================================");
         log.info("支付通知====================================================");
         Gson gson = new Gson();
         Gson gson = new Gson();
         Map<String,Object> map = new HashMap<>();
         Map<String,Object> map = new HashMap<>();
+
+
         //处理通知参数
         //处理通知参数
         try {
         try {
             String body = HttpUtils.readData( request);
             String body = HttpUtils.readData( request);
@@ -135,7 +210,6 @@ public class WxPayController  extends BaseController {
             String requestId = (String)bodyMap.get("id");
             String requestId = (String)bodyMap.get("id");
             log.info("支付通知的id ===> {}", requestId);
             log.info("支付通知的id ===> {}", requestId);
             log.info("支付通知的完整数据 ===> {}", body);
             log.info("支付通知的完整数据 ===> {}", body);
-
             //签名的验证
             //签名的验证
             WechatPay2ValidatorForRequest wechatPay2ValidatorForRequest
             WechatPay2ValidatorForRequest wechatPay2ValidatorForRequest
                     = new WechatPay2ValidatorForRequest(verifier, requestId, body);
                     = new WechatPay2ValidatorForRequest(verifier, requestId, body);
@@ -169,25 +243,39 @@ public class WxPayController  extends BaseController {
 
 
     /**
     /**
      * 用户取消订单
      * 用户取消订单
-     * @param orderNo
+     * @param linkId
      * @return
      * @return
      * @throws Exception
      * @throws Exception
      */
      */
     @ApiOperation("用户取消订单-PC")
     @ApiOperation("用户取消订单-PC")
-    @GetMapping("/cancel/{orderNo}")
-    public Result cancel(@PathVariable String orderNo) throws Exception {
+    @GetMapping("/cancel/{linkId}")
+    @SafetyProcess
+    public Result cancel(@PathVariable String linkId) throws Exception {
         log.info("取消订单");
         log.info("取消订单");
-        wxPayService.cancelOrder(orderNo);
+        LinkEntity link = this.linkService.findById(linkId);
+        if(link != null && StringUtils.isNotEmpty(link.getOrderNo())){
+            wxPayService.cancelOrder(link.getOrderNo());
+        }
         return success(null,"订单已取消");
         return success(null,"订单已取消");
     }
     }
 
 
 
 
     @SafetyProcess
     @SafetyProcess
     @ApiOperation("查询订单")
     @ApiOperation("查询订单")
-    @GetMapping("/queryOrder/{orderNo}")
-    public Result queryOrder(@PathVariable String orderNo) throws Exception {
+    @GetMapping("/queryOrder/{linkId}")
+    public Result queryOrder(@PathVariable String linkId) throws Exception {
         log.info("查询订单订单");
         log.info("查询订单订单");
-        return success( wxPayService.queryOrder(orderNo));
+        LinkEntity link = this.linkService.findById(linkId);
+        if(link != null ){
+            if(StringUtils.isNotEmpty(link.getOrderNo())){
+                return success( wxPayService.queryOrder(link.getOrderNo()));
+            }else {
+                return success();
+            }
+        }else {
+            return fail("参数有误:订单不存在!");
+        }
+
     }
     }
 
 
     @ApiOperation("交易账单--暂未开发")
     @ApiOperation("交易账单--暂未开发")

+ 14 - 2
src/main/java/com/zzys/qhyscredit/wxpay/service/WxPayService.java

@@ -1,9 +1,13 @@
 package com.zzys.qhyscredit.wxpay.service;
 package com.zzys.qhyscredit.wxpay.service;
 
 
-import com.alibaba.fastjson.JSONObject;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.zzys.qhyscredit.channel.order.dao.model.OrderEntity;
 
 
 import java.io.IOException;
 import java.io.IOException;
 import java.security.GeneralSecurityException;
 import java.security.GeneralSecurityException;
+import java.security.PrivateKey;
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 /**
 /**
@@ -47,7 +51,7 @@ public interface WxPayService {
 
 
 //    Map refund(String orderNo) throws IOException;
 //    Map refund(String orderNo) throws IOException;
 
 
-    String aspiPay(JSONObject paramObject) throws Exception;
+    String aspiPay(JSONObject paramObject, String linkId) throws Exception;
 
 
 //    String getAccessToken() throws IOException;
 //    String getAccessToken() throws IOException;
 
 
@@ -59,4 +63,12 @@ public interface WxPayService {
     String generateLink(String path,String query) throws Exception;
     String generateLink(String path,String query) throws Exception;
 
 
     String generateWxCode(String page, String scene, String envVersion);
     String generateWxCode(String page, String scene, String envVersion);
+
+    PrivateKey getPrivateKey(String privateKeyPath);
+
+    void checkOrderStatus();
+
+    String aspiPay(JSONObject paramObject) throws IOException;
+
+    List<OrderEntity> findByChannelIdAndTitle(String channelId, String title);
 }
 }

+ 223 - 9
src/main/java/com/zzys/qhyscredit/wxpay/service/impl/WxPayServiceImpl.java

@@ -1,13 +1,19 @@
 package com.zzys.qhyscredit.wxpay.service.impl;
 package com.zzys.qhyscredit.wxpay.service.impl;
 
 
-import com.alibaba.fastjson.JSONObject;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUnit;
+import com.alibaba.fastjson2.JSONObject;
 import com.google.gson.Gson;
 import com.google.gson.Gson;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonObject;
+import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
+import com.zzys.qhyscredit.channel.invitation.dao.model.LinkEntity;
+import com.zzys.qhyscredit.channel.invitation.service.LinkService;
 import com.zzys.qhyscredit.channel.order.dao.model.OrderEntity;
 import com.zzys.qhyscredit.channel.order.dao.model.OrderEntity;
 import com.zzys.qhyscredit.channel.order.service.OrderService;
 import com.zzys.qhyscredit.channel.order.service.OrderService;
 import com.zzys.qhyscredit.enums.OrderStatus;
 import com.zzys.qhyscredit.enums.OrderStatus;
 import com.zzys.qhyscredit.enums.wxpay.WxTradeState;
 import com.zzys.qhyscredit.enums.wxpay.WxTradeState;
 import com.zzys.qhyscredit.utils.Constant;
 import com.zzys.qhyscredit.utils.Constant;
+import com.zzys.qhyscredit.utils.DateUtil;
 import com.zzys.qhyscredit.utils.OrderNoUtil;
 import com.zzys.qhyscredit.utils.OrderNoUtil;
 import com.zzys.qhyscredit.wxpay.service.PaymentInfoService;
 import com.zzys.qhyscredit.wxpay.service.PaymentInfoService;
 import com.zzys.qhyscredit.wxpay.service.WxPayService;
 import com.zzys.qhyscredit.wxpay.service.WxPayService;
@@ -20,6 +26,7 @@ import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.util.EntityUtils;
 import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Base64Utils;
 import org.springframework.util.Base64Utils;
@@ -31,9 +38,11 @@ import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.StandardCharsets;
 import java.security.GeneralSecurityException;
 import java.security.GeneralSecurityException;
 import java.security.KeyPair;
 import java.security.KeyPair;
+import java.security.PrivateKey;
 import java.security.Signature;
 import java.security.Signature;
 import java.util.Base64;
 import java.util.Base64;
 import java.util.HashMap;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -62,6 +71,14 @@ public class WxPayServiceImpl implements WxPayService {
     @Autowired
     @Autowired
     private WXUtils wxUtils;
     private WXUtils wxUtils;
 
 
+    @Autowired
+    private LinkService linkService;
+
+    @Value("${weixin.payDomain}")
+    private String payDomain;
+
+    @Value("${weixin.mchid}")
+    private String mchid;
 
 
     /**
     /**
      * 处理订单
      * 处理订单
@@ -96,8 +113,16 @@ public class WxPayServiceImpl implements WxPayService {
                     return;
                     return;
                 }
                 }
                 orderEntity.setPayStatus(OrderStatus.SUCCESS.getType());
                 orderEntity.setPayStatus(OrderStatus.SUCCESS.getType());
+                orderEntity.setUpdateTime(DateUtil.getNowTime());
                 //更新订单状态
                 //更新订单状态
                 this.orderService.save(orderEntity);
                 this.orderService.save(orderEntity);
+
+                //更新邀请链接状态
+                LinkEntity linkEntity = this.linkService.findByOrderNo(orderNo);
+                if(linkEntity != null){
+                    linkEntity.setStatus(Constant.ONE);
+                    this.linkService.save(linkEntity);
+                }
                 //记录支付日志
                 //记录支付日志
                 paymentInfoService.createPaymentInfo(plainText);
                 paymentInfoService.createPaymentInfo(plainText);
             } finally {
             } finally {
@@ -121,6 +146,13 @@ public class WxPayServiceImpl implements WxPayService {
             order.setPayStatus(OrderStatus.CANCEL.getType());
             order.setPayStatus(OrderStatus.CANCEL.getType());
             this.orderService.save(order);
             this.orderService.save(order);
         }
         }
+        //更新邀请连接状态
+        LinkEntity link = this.linkService.findByOrderNo(orderNo);
+        if(link != null){
+            link.setStatus(Constant.ZERO);
+            this.linkService.save(link);
+        }
+
     }
     }
 
 
     /**
     /**
@@ -130,6 +162,7 @@ public class WxPayServiceImpl implements WxPayService {
      */
      */
     @Override
     @Override
     public Map queryOrder(String orderNo) throws IOException {
     public Map queryOrder(String orderNo) throws IOException {
+
         try (CloseableHttpResponse response = wxUtils.queryCode(orderNo)) {
         try (CloseableHttpResponse response = wxUtils.queryCode(orderNo)) {
             Map resultMap = new HashMap();
             Map resultMap = new HashMap();
             int statusCode = response.getStatusLine().getStatusCode();//响应状态码
             int statusCode = response.getStatusLine().getStatusCode();//响应状态码
@@ -143,11 +176,19 @@ public class WxPayServiceImpl implements WxPayService {
                     Map<String, String> resultBody = gson.fromJson(body, HashMap.class);
                     Map<String, String> resultBody = gson.fromJson(body, HashMap.class);
                     //获取微信支付端的订单状态
                     //获取微信支付端的订单状态
                     String tradeState = resultBody.get("trade_state");
                     String tradeState = resultBody.get("trade_state");
+
                     //判断订单状态
                     //判断订单状态
                     if (WxTradeState.SUCCESS.getType().equals(tradeState)) {
                     if (WxTradeState.SUCCESS.getType().equals(tradeState)) {
                         //如果确认订单已支付则更新本地订单状态
                         //如果确认订单已支付则更新本地订单状态
+                        this.orderService.updateOrderStatus(orderNo,OrderStatus.SUCCESS);
                         //记录支付日志
                         //记录支付日志
                         paymentInfoService.createPaymentInfo(body);
                         paymentInfoService.createPaymentInfo(body);
+                        //更新邀请连接状态
+                        LinkEntity link = this.linkService.findByOrderNo(orderNo);
+                        if(link != null){
+                            link.setStatus(Constant.ONE);
+                            this.linkService.save(link);
+                        }
                     }
                     }
                 }
                 }
                 // log.info("成功200");
                 // log.info("成功200");
@@ -193,32 +234,41 @@ public class WxPayServiceImpl implements WxPayService {
 //    }
 //    }
 
 
     @Override
     @Override
-    public String aspiPay(JSONObject paramObject) throws Exception {
+    public String aspiPay(JSONObject paramObject, String linkId) throws Exception {
         log.info("aspi预下单订单");
         log.info("aspi预下单订单");
         //生成订单
         //生成订单
-        return pay(paramObject);
+        return pay(paramObject,linkId);
     }
     }
 
 
+    @Override
+    public String aspiPay(JSONObject paramObject) throws IOException {
+        log.info("aspi预下单订单--信用等级");
+        return pay(paramObject);
+    }
 
 
-
+    @Override
+    public List<OrderEntity> findByChannelIdAndTitle(String channelId, String title) {
+        return this.orderService.findByChannelIdAndTitle(channelId,title);
+    }
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
-    String pay(JSONObject paramData) throws Exception {
+    String pay(JSONObject paramData) throws IOException {
         String userId = paramData.getString("userId");
         String userId = paramData.getString("userId");
         OrderEntity orderEntity = new OrderEntity();
         OrderEntity orderEntity = new OrderEntity();
         OrderNoUtil orderNoUtil = new OrderNoUtil(1,1);
         OrderNoUtil orderNoUtil = new OrderNoUtil(1,1);
-        orderEntity.setOrderNo(String.valueOf(orderNoUtil.nextId()));
+        orderEntity.setOrderNo("Order_s_"+orderNoUtil.nextId());
         paramData.put("orderNo",orderEntity.getOrderNo());
         paramData.put("orderNo",orderEntity.getOrderNo());
         orderEntity.setPayStatus(Constant.ZERO);//待支付状态
         orderEntity.setPayStatus(Constant.ZERO);//待支付状态
         orderEntity.setCreateDate(com.zzys.qhyscredit.utils.DateUtil.getNowTime());
         orderEntity.setCreateDate(com.zzys.qhyscredit.utils.DateUtil.getNowTime());
         orderEntity.setStatus(Constant.ZERO);//未结算
         orderEntity.setStatus(Constant.ZERO);//未结算
-        orderEntity.setAmount(paramData.getInteger("amount"));
+        orderEntity.setAmount(paramData.getDoubleValue("amount"));
         orderEntity.setChannelId(paramData.getString("channelId"));
         orderEntity.setChannelId(paramData.getString("channelId"));
         orderEntity.setTitle(paramData.getString("title"));
         orderEntity.setTitle(paramData.getString("title"));
         //订单起始日期和订单截止日期作用未知
         //订单起始日期和订单截止日期作用未知
         orderEntity.setEffectiveDate(com.zzys.qhyscredit.utils.DateUtil.getNowTime());
         orderEntity.setEffectiveDate(com.zzys.qhyscredit.utils.DateUtil.getNowTime());
         orderEntity.setExpirationDate(com.zzys.qhyscredit.utils.DateUtil.getNowTime());
         orderEntity.setExpirationDate(com.zzys.qhyscredit.utils.DateUtil.getNowTime());
         orderEntity.setUserId(userId);
         orderEntity.setUserId(userId);
+        orderEntity.setType("1");
         orderEntity = this.orderService.save(orderEntity);
         orderEntity = this.orderService.save(orderEntity);
         CloseableHttpResponse response = wxUtils.jsapiPay(paramData);
         CloseableHttpResponse response = wxUtils.jsapiPay(paramData);
         //获取响应
         //获取响应
@@ -227,8 +277,6 @@ public class WxPayServiceImpl implements WxPayService {
             int statusCode = response.getStatusLine().getStatusCode();//获取状态码
             int statusCode = response.getStatusLine().getStatusCode();//获取状态码
             if (statusCode == 200){//成功
             if (statusCode == 200){//成功
                 log.info("成功,返回结果 = "+bodyAsString);
                 log.info("成功,返回结果 = "+bodyAsString);
-            }else if (statusCode == 204){//成功 无返回body
-                log.info("成功");
             }else {
             }else {
                 log.info("下单失败,响应码 = " + statusCode+ ",返回结果 = " + bodyAsString);
                 log.info("下单失败,响应码 = " + statusCode+ ",返回结果 = " + bodyAsString);
                 throw new IOException("request failed"+bodyAsString);
                 throw new IOException("request failed"+bodyAsString);
@@ -242,6 +290,56 @@ public class WxPayServiceImpl implements WxPayService {
     }
     }
 
 
 
 
+    @Transactional(rollbackFor = Exception.class)
+    String pay(JSONObject paramData,String linkId) throws Exception {
+        String userId = paramData.getString("userId");
+        OrderEntity orderEntity = new OrderEntity();
+        OrderNoUtil orderNoUtil = new OrderNoUtil(1,1);
+        orderEntity.setOrderNo("Order_s_"+orderNoUtil.nextId());
+        paramData.put("orderNo",orderEntity.getOrderNo());
+        orderEntity.setPayStatus(Constant.ZERO);//待支付状态
+        orderEntity.setCreateDate(com.zzys.qhyscredit.utils.DateUtil.getNowTime());
+        orderEntity.setStatus(Constant.ZERO);//未结算
+        orderEntity.setAmount(paramData.getDoubleValue("amount"));
+        orderEntity.setChannelId(paramData.getString("channelId"));
+        orderEntity.setTitle(paramData.getString("title"));
+        //订单起始日期和订单截止日期作用未知
+        orderEntity.setEffectiveDate(com.zzys.qhyscredit.utils.DateUtil.getNowTime());
+        orderEntity.setExpirationDate(com.zzys.qhyscredit.utils.DateUtil.getNowTime());
+        orderEntity.setUserId(userId);
+        orderEntity.setType("3");
+        orderEntity = this.orderService.save(orderEntity);
+        LinkEntity link = this.linkService.findById(linkId);
+        link.setOrderNo(orderEntity.getOrderNo());
+        this.linkService.save(link);
+        if(orderEntity.getAmount() == 0d){
+            log.info("金额为0 ,不调用微信支付");
+            orderEntity.setPayStatus(Constant.ONE);
+            this.orderService.save(orderEntity);
+            return "0000";
+        }
+            CloseableHttpResponse response = wxUtils.jsapiPay(paramData);
+            //获取响应
+            try {
+                String bodyAsString = EntityUtils.toString(response.getEntity());//获取响应体
+                int statusCode = response.getStatusLine().getStatusCode();//获取状态码
+                if (statusCode == 200){//成功
+                    log.info("成功,返回结果 = "+bodyAsString);
+                }else {
+                    log.info("下单失败,响应码 = " + statusCode+ ",返回结果 = " + bodyAsString);
+                    throw new IOException("request failed"+bodyAsString);
+                }
+                Gson gson = new Gson();
+                //响应结果
+                return gson.fromJson(bodyAsString,HashMap.class).get("prepay_id").toString();
+            }finally {
+                response.close();
+            }
+
+
+    }
+
+
     /**
     /**
      * V3  SHA256withRSA 签名.
      * V3  SHA256withRSA 签名.
      *
      *
@@ -330,5 +428,121 @@ public class WxPayServiceImpl implements WxPayService {
         return null;
         return null;
     }
     }
 
 
+    @Override
+    public PrivateKey getPrivateKey(String privateKeyPath) {
+        try {
+            String path =  this.getClass().getClassLoader().getResource(privateKeyPath).getPath();
+            InputStream is = this.getClass().getClassLoader().getResourceAsStream(privateKeyPath);
+            log.info(path);
+            return PemUtil.loadPrivateKey(is);//new ByteArrayInputStream(fileName.getBytes("utf-8"))
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new RuntimeException("私钥文件不存在",e);
+        }
+    }
+
+    @Override
+    public void checkOrderStatus() {
+        DateTime nowDate = cn.hutool.core.date.DateUtil.date();
+        //获取未支付订单
+        List<OrderEntity> infos = orderService.findByPayStatus(Constant.ZERO);
+        if(infos == null || infos.size() ==0){
+            return;
+        }
+        for (OrderEntity info : infos){
+            try {
+                String orderNo = info.getOrderNo();
+                //log.warn("根据订单号核实订单状态 ===> {}", orderNo);
+                //调用微信支付查单接口
+                Map queryResult = this.queryOrder(orderNo);
+                String result = queryResult.get("body").toString();
+                Gson gson = new Gson();
+                Map<String, String> resultMap = gson.fromJson(result, HashMap.class);
+                //获取微信支付端的订单状态
+                String tradeState = resultMap.get("trade_state");
+                //判断订单状态
+                if(WxTradeState.SUCCESS.getType().equals(tradeState)){
+                    // log.warn("核实订单已支付 ===> {}", orderNo);
+                    //如果确认订单已支付则更新本地订单状态
+                    orderService.updateOrderStatus(orderNo,OrderStatus.SUCCESS);
+                    //记录支付日志
+                    paymentInfoService.createPaymentInfo(result);
+                }
+                //判断url是否有效 两小时内有效
+                long betweenMinute = cn.hutool.core.date.DateUtil.between(nowDate, cn.hutool.core.date.DateUtil.parseDateTime(info.getCreateDate()), DateUnit.MINUTE);
+                if(WxTradeState.NOTPAY.getType().equals(tradeState) && betweenMinute >= 5 ){
+                    //log.warn("核实订单未支付 ===> {}", orderNo);
+                    //如果订单未支付,则调用关单接口
+                    this.closeOrder(orderNo);
+                    //更新本地订单状态
+                    orderService.updateOrderStatus(orderNo, OrderStatus.CLOSED);
+                    //更新邀请连接状态
+
+                    LinkEntity link = this.linkService.findByOrderNo(orderNo);
+                    if(link != null){
+                        link.setStatus(Constant.ZERO);
+                        this.linkService.save(link);
+                    }
+
+                }
+                if(WxTradeState.CLOSED.getType().equals(tradeState)){
+                    //更新本地订单状态
+                    orderService.updateOrderStatus(orderNo, OrderStatus.CLOSED);
+                    //更新邀请连接状态
+                    LinkEntity link = this.linkService.findByOrderNo(orderNo);
+                    if(link != null){
+                        link.setStatus(Constant.ZERO);
+                        this.linkService.save(link);
+                    }
+
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+
+        }
+    }
+
+
+
+    private void closeOrder(String orderNo) throws Exception {
+        log.info("关单接口的调用,订单号 ===> {}", orderNo);
+
+        //创建远程请求对象
+        String url = String.format("/v3/pay/transactions/out-trade-no/%s/close", orderNo);
+        url = payDomain.concat(url);
+        HttpPost httpPost = new HttpPost(url);
+
+        //组装json请求体
+        Gson gson = new Gson();
+        Map<String, String> paramsMap = new HashMap<>();
+        paramsMap.put("mchid", mchid);
+        String jsonParams = gson.toJson(paramsMap);
+        log.info("请求参数 ===> {}", jsonParams);
+
+        //将请求参数设置到请求对象中
+        StringEntity entity = new StringEntity(jsonParams,"utf-8");
+        entity.setContentType("application/json");
+        httpPost.setEntity(entity);
+        httpPost.setHeader("Accept", "application/json");
+
+        //完成签名并执行请求
+        CloseableHttpResponse response = wxPayClient.execute(httpPost);
+
+        try {
+            int statusCode = response.getStatusLine().getStatusCode();//响应状态码
+            if (statusCode == 200) { //处理成功
+                log.info("成功200");
+            } else if (statusCode == 204) { //处理成功,无返回Body
+                log.info("成功204");
+            } else {
+                log.info("取消订单失败,响应码 = " + statusCode);
+                throw new IOException("request failed");
+            }
+
+        } finally {
+            response.close();
+        }
+    }
 
 
 }
 }

+ 2 - 3
src/main/java/com/zzys/qhyscredit/wxpay/task/WxTask.java

@@ -16,14 +16,13 @@ import org.springframework.stereotype.Component;
 
 
 @Slf4j
 @Slf4j
 @Component
 @Component
-@ConditionalOnProperty(prefix="wx.pay",name = "is_lan", havingValue = "false")
 public class WxTask {
 public class WxTask {
 
 
     @Autowired
     @Autowired
     private WxPayService wxPayService;
     private WxPayService wxPayService;
 
 
     @Scheduled(cron = "0/30 * * * * ?")
     @Scheduled(cron = "0/30 * * * * ?")
-    public void taskQueryOrder() throws Exception {
-//        wxPayService.checkOrderStatus();
+    public void taskQueryOrder() {
+        wxPayService.checkOrderStatus();
     }
     }
 }
 }

+ 33 - 13
src/main/java/com/zzys/qhyscredit/wxpay/utils/WXUtils.java

@@ -1,9 +1,10 @@
 package com.zzys.qhyscredit.wxpay.utils;
 package com.zzys.qhyscredit.wxpay.utils;
 
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.google.gson.Gson;
 import com.google.gson.Gson;
 import com.wechat.pay.contrib.apache.httpclient.util.AesUtil;
 import com.wechat.pay.contrib.apache.httpclient.util.AesUtil;
+import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
 import com.zzys.qhyscredit.enums.wxpay.WxApiType;
 import com.zzys.qhyscredit.enums.wxpay.WxApiType;
 import com.zzys.qhyscredit.utils.Constant;
 import com.zzys.qhyscredit.utils.Constant;
 import com.zzys.qhyscredit.utils.QrCodeUtil;
 import com.zzys.qhyscredit.utils.QrCodeUtil;
@@ -23,13 +24,11 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.client.RestTemplate;
 
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
 import java.net.URLEncoder;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.StandardCharsets;
 import java.security.GeneralSecurityException;
 import java.security.GeneralSecurityException;
+import java.security.PrivateKey;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Objects;
@@ -53,6 +52,9 @@ public class WXUtils {
     @Value("${weixin.domain}")
     @Value("${weixin.domain}")
     private String domain;
     private String domain;
 
 
+    @Value("${weixin.payDomain}")
+    private String payDomain;
+
     @Value("${weixin.phoneNumber}")
     @Value("${weixin.phoneNumber}")
     private String phoneNumberUrl;
     private String phoneNumberUrl;
 
 
@@ -65,7 +67,8 @@ public class WXUtils {
     @Value("${weixin.generateCode}")
     @Value("${weixin.generateCode}")
     private String generateCode;
     private String generateCode;
 
 
-
+    @Value("${weixin.notifyDomain}")
+    private String notifyDomain;
 
 
     @Value("${weixin.jsapipay}")
     @Value("${weixin.jsapipay}")
     private String jsapiPay;
     private String jsapiPay;
@@ -193,8 +196,8 @@ public class WXUtils {
      * @return
      * @return
      */
      */
     public   CloseableHttpResponse jsapiPay(JSONObject paramData) throws IOException {
     public   CloseableHttpResponse jsapiPay(JSONObject paramData) throws IOException {
-        String url = domain+jsapiPay;
-        String notifyUrl = domain+notyfyUrl;
+        String url = payDomain+jsapiPay;
+        String notifyUrl = notifyDomain+notyfyUrl;
         //构建必要参数
         //构建必要参数
         Gson gson = new Gson();
         Gson gson = new Gson();
         Map<String,Object> paramsMap = new HashMap<>();
         Map<String,Object> paramsMap = new HashMap<>();
@@ -204,7 +207,7 @@ public class WXUtils {
         paramsMap.put("out_trade_no",paramData.getString("orderNo"));
         paramsMap.put("out_trade_no",paramData.getString("orderNo"));
         paramsMap.put("notify_url",notifyUrl);
         paramsMap.put("notify_url",notifyUrl);
         Map<String,Object> amountMap = new HashMap<>();
         Map<String,Object> amountMap = new HashMap<>();
-        amountMap.put("total", paramData.getInteger("amount")*100);
+        amountMap.put("total", paramData.getInteger("amount"));
         amountMap.put("currency", "CNY");
         amountMap.put("currency", "CNY");
         paramsMap.put("amount", amountMap);
         paramsMap.put("amount", amountMap);
         log.info("paramsMap:"+paramsMap);
         log.info("paramsMap:"+paramsMap);
@@ -214,7 +217,7 @@ public class WXUtils {
         //将body转化为json字符串
         //将body转化为json字符串
         String jsonParams = gson.toJson(paramsMap);
         String jsonParams = gson.toJson(paramsMap);
         StringEntity entity = new StringEntity(jsonParams,"utf-8");
         StringEntity entity = new StringEntity(jsonParams,"utf-8");
-        HttpPost httpPost = new HttpPost(notifyUrl);
+        HttpPost httpPost = new HttpPost(url);
         entity.setContentType("application/json");
         entity.setContentType("application/json");
         httpPost.setEntity(entity);
         httpPost.setEntity(entity);
         httpPost.setHeader("Accept","application/json");
         httpPost.setHeader("Accept","application/json");
@@ -231,7 +234,7 @@ public class WXUtils {
         log.info("关单接口的调用,订单号 ===> {}", orderNo);
         log.info("关单接口的调用,订单号 ===> {}", orderNo);
         //创建远程请求对象
         //创建远程请求对象
         String url = String.format(WxApiType.CLOSE_ORDER_BY_NO.getType(), orderNo);
         String url = String.format(WxApiType.CLOSE_ORDER_BY_NO.getType(), orderNo);
-        url = domain.concat(url);
+        url = payDomain.concat(url);
         HttpPost httpPost = new HttpPost(url);
         HttpPost httpPost = new HttpPost(url);
 
 
         //组装json请求体
         //组装json请求体
@@ -275,7 +278,7 @@ public class WXUtils {
      * @return
      * @return
      */
      */
     public CloseableHttpResponse queryCode(String orderNo) throws IOException {
     public CloseableHttpResponse queryCode(String orderNo) throws IOException {
-        String url = domain + String.format(queryOrderUrl, orderNo) + "?mchid=" + mchid;
+        String url = payDomain + String.format(queryOrderUrl, orderNo) + "?mchid=" + mchid;
         HttpGet httpGet = new HttpGet(url);
         HttpGet httpGet = new HttpGet(url);
         httpGet.setHeader("Accept", "application/json");
         httpGet.setHeader("Accept", "application/json");
         return wxPayClient.execute(httpGet);
         return wxPayClient.execute(httpGet);
@@ -308,4 +311,21 @@ public class WXUtils {
 
 
         return plainText;
         return plainText;
     }
     }
+
+    /**
+     * 获取商户的私钥文件
+     * @param fileName
+     * @return
+     */
+    public PrivateKey getPrivateKey(String fileName){
+        try {
+            String path =  this.getClass().getClassLoader().getResource(fileName).getPath();
+            InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileName);
+            log.info(path);
+            return PemUtil.loadPrivateKey(is);//new ByteArrayInputStream(fileName.getBytes("utf-8"))
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new RuntimeException("私钥文件不存在",e);
+        }
+    }
 }
 }

+ 14 - 9
src/main/resources/application.yml

@@ -31,7 +31,8 @@ spring:
 #      password: Z04agHTieMz3lrvqdyHZaOgDrBS2kvKSCSLDavQL3VmoXTf7+VTamagPHnX9+q2nT1fYJd0T0mivyDiQ0YXHUg==
 #      password: Z04agHTieMz3lrvqdyHZaOgDrBS2kvKSCSLDavQL3VmoXTf7+VTamagPHnX9+q2nT1fYJd0T0mivyDiQ0YXHUg==
 #      connection-properties: config.decrypt=true;config.decrypt.key=${publicKey}
 #      connection-properties: config.decrypt=true;config.decrypt.key=${publicKey}
 
 
-      url: jdbc:mysql://146.56.226.174:3306/credit-dev?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=GMT%2B8
+#      url: jdbc:mysql://146.56.226.174:3306/credit-dev?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=GMT%2B8
+      url: jdbc:mysql://146.56.226.174:3306/credit?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=GMT%2B8
       username: root
       username: root
       password: Mysql@.2020
       password: Mysql@.2020
 #      connection-properties: config.decrypt=true;config.decrypt.key=${publicKey}
 #      connection-properties: config.decrypt=true;config.decrypt.key=${publicKey}
@@ -60,12 +61,12 @@ server:
       timeout: 100000
       timeout: 100000
   tomcat:
   tomcat:
     connection-timeout: 100000
     connection-timeout: 100000
-  port: 8086
+  port: 8443
   address: 0.0.0.0
   address: 0.0.0.0
-#  ssl:
-#    key-store: classpath:jinhong-credit.com.jks
-#    key-store-password: 02klh4z3r6z9
-#    key-store-type: JKS
+  ssl:
+    key-store: classpath:jinhong-credit.com.jks
+    key-store-password: 8kf7726l1x
+    key-store-type: JKS
 
 
 #
 #
 #anti:
 #anti:
@@ -80,7 +81,7 @@ server:
 #        request-max-size: 5
 #        request-max-size: 5
 #mysql@.2020  key
 #mysql@.2020  key
 #publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ0wKAMJ3vzmREeYnacS1zPHh0Vif9rqtqDPfsT7DTxZOpOPqnKqTeUdLdB1dQVdT+0X+rvJeivdpxw9CW1HZbUCAwEAAQ==
 #publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ0wKAMJ3vzmREeYnacS1zPHh0Vif9rqtqDPfsT7DTxZOpOPqnKqTeUdLdB1dQVdT+0X+rvJeivdpxw9CW1HZbUCAwEAAQ==
-publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJmEpLBsygPphd9duo0LbPvEx6hhx3oeieLqnkWeh3YnOqtMH1ILWacyI8hEoImPLaK+o3FgVDl3kThZTsij/9UCAwEAAQ==
+#publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJmEpLBsygPphd9duo0LbPvEx6hhx3oeieLqnkWeh3YnOqtMH1ILWacyI8hEoImPLaK+o3FgVDl3kThZTsij/9UCAwEAAQ==
 # 显示sql语句传入的参数
 # 显示sql语句传入的参数
 logging:
 logging:
   level:
   level:
@@ -96,6 +97,7 @@ weixin:
   appid: wx25c982b905769a23
   appid: wx25c982b905769a23
   secret: b48354d6722c4312592d2c927795803d
   secret: b48354d6722c4312592d2c927795803d
   domain: https://api.weixin.qq.com
   domain: https://api.weixin.qq.com
+  payDomain: https://api.mch.weixin.qq.com
   phoneNumber: /wxa/business/getuserphonenumber?access_token=
   phoneNumber: /wxa/business/getuserphonenumber?access_token=
   accessToken: /cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s
   accessToken: /cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s
   generateCode: /wxa/getwxacodeunlimit?access_token=
   generateCode: /wxa/getwxacodeunlimit?access_token=
@@ -104,11 +106,14 @@ weixin:
   code2session: /sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code
   code2session: /sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code
   jsapipay: /v3/pay/transactions/jsapi
   jsapipay: /v3/pay/transactions/jsapi
   queryorder: /v3/pay/transactions/out-trade-no/%s
   queryorder: /v3/pay/transactions/out-trade-no/%s
-  notifyDomain: https://www.jinhong-credit.com:8086
+  notifyDomain: https://www.jinhong-credit.com:8445
   nativeNotify: /api/wx-pay/native/notify
   nativeNotify: /api/wx-pay/native/notify
   refundNotify: /api/wx-pay/refunds/notify
   refundNotify: /api/wx-pay/refunds/notify
   mchid: 1680923815
   mchid: 1680923815
-  env: trial
+
+  env: release
+#  env: develop
+#  env: trial
   mch-serial-no: 3E99C043ED0116BC1D995F58CAC6C0150DF3CD38
   mch-serial-no: 3E99C043ED0116BC1D995F58CAC6C0150DF3CD38
   api-v3-key: E10ADC3949BA59ABBE56E057F20F883E
   api-v3-key: E10ADC3949BA59ABBE56E057F20F883E
   private-key-path: apiclient_key.pem
   private-key-path: apiclient_key.pem

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików