浏览代码

Merge branch 'refs/heads/master' into ScrmStore

chenguo 1 天之前
父节点
当前提交
27ee815a09

+ 1 - 0
fs-service/src/main/java/com/fs/his/config/AgreementConfig.java

@@ -10,4 +10,5 @@ public class AgreementConfig implements Serializable {
     String userPrivacy;
     String userHealth;
     String vipService;
+    String vipAutomaticService;
 }

+ 162 - 0
fs-service/src/main/resources/application-config-zkzh.yml

@@ -0,0 +1,162 @@
+#中康配置
+fsConfig:
+  #快递鸟
+  kdnId: 1762981
+  kdnKeyId: 024e89b1-25c7-4725-8a3c-1bf1ca3ddcab
+  kdnUrl: http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx
+  kdnSubscribeUrl: https://api.kdniao.com/api/dist
+  kdnAddressUrl: https://api.kdniao.com/api/dist
+  #ERP配置
+  erpOpen: 1
+  erpAppKey: 108123
+  erpSessionKey: 9caae15474cb443ea22235e7bb86016b
+  erpSecret: 96f774dbd60847b59a16f92fd963a0c8
+  erpUrl: http://v2.api.guanyierp.com/rest/erp_open
+  erpShopCode: test
+  #ERP-hc
+#  erpWdAppKey: beiliyou2-test
+#  erpWdAppsecret: 6ec212f06
+#  erpWdSid: apidevnew2
+#  erpWdShopCode: beiliyou2-test
+#  erpWdBaseUrl: https://api.wangdian.cn/openapi2/
+#  erpWarehouseCode: beiliyou2-test
+
+  #金博ERP
+#  kingbosan: "陕西中康"
+#  kingbosSecret: 12CA1038CE8A45D1BA325898A3F2F029
+#  kingbosUrl: http://zkyf888.gnway.cc:53868/?an=陕西中康&do=k9save&timestep=&sign=&corgid=zy01
+#  corgid: zy01
+#  cwarehouseCode: "CK01"
+#  cwarehouseName: "合格仓"
+  #第三方支付配置
+  payOpen: 1
+  payPartnerId: 22051909542647100020
+  payKey: f256bd35aa36115d729537e1a1e01b92
+  payGateWayUrl: https://openapi.t2bank.cn/gateway.html
+  payNotifyUrl: https://api.yjf.runtzh.com/app/pay/payNotify
+  refundNotifyUrl: https://api.yjf.runtzh.com/app/pay/refundNotify
+  # 腾讯云IM
+  sdkAppId: 1400693126
+  sdkAppKey: 9afa6e63db943293680e37b3ba032e52cdb238112750806e82e58e9240604b70
+  # 处方接口Test
+#  prescribeUrl: https://yixian-new-test.yixianmedical.com/platform-shenfang/nethosp/webservice/jsonapi
+#  actId:  uporder
+#  appId: 1646204278
+#  manuId:  3981112bfcc64bf68f7744ffec7e3ca7
+#  callbackUrl:  https://api.hospital.ifeiyu100.com/app/prescribe/presribeNotify
+  # 处方接口g
+  prescribeUrl: https://app3.nxk520.com/platform-shenfang/nethosp/webservice/jsonapi
+  actId: uporder
+  appId: 1661496555
+  manuId: 0212af1e742b41b09089afeec98f8276
+  callbackUrl: https://api.yjf.runtzh.com/app/prescribe/presribeNotify
+  commonApi: http://172.21.76.167:7011 #admin后台
+logging:
+  level:
+    org.springframework.web: INFO
+    com.github.binarywang.demo.wx.cp: DEBUG
+    me.chanjar.weixin: DEBUG
+wx:
+  cp:
+    corpId: wwb2a1055fb6c9a7c2
+    appConfigs:
+      - agentId: 1000002
+        secret: bhj3402rPCT0YGcosffyTO3eUMs1G2MFHMspXVBNf-c
+        token: PPKOdAlCoMO
+        aesKey: PKvaxtpSv8NGpfTDm7VUHIK8Wok2ESyYX24qpXJAdMP
+  miniapp:
+    configs:
+      - appid: wx4115995705bb0ea0   #中康智慧
+        secret: 58910ae743005c396012b029c7def579
+        token: Ncbnd7lJvkripVOpyTFAna6NAWCxCrvC
+        aesKey: HlEiBB55eaWUaeBVAQO3cWKWPYv1vOVQSq7nFNICw4E
+        msgDataFormat: JSON
+      - appid: wxedde588767b358b1   #中康未来智慧药房
+        secret: 928d2961c81610d8f64b019597212fcd
+        token: Ncbnd7lJvkripVOpyTFAna6NAWCxCrvC
+        aesKey: HlEiBB55eaWUaeBVAQO3cWKWPYv1vOVQSq7nFNICw4E
+        msgDataFormat: JSON
+      - appid: wxdbaca81abc336277   #虹恺百货店
+        secret: 31b39464bad4549b6c59f79e4e2c3f94
+        token: Ncbnd7lJvkripVOpyTFAna6NAWCxCrvC
+        aesKey: HlEiBB55eaWUaeBVAQO3cWKWPYv1vOVQSq7nFNICw4E
+        msgDataFormat: JSON
+      - appid: wxb025ac4091dbd4b7   #中康智慧店T
+        secret: fa122221b6bf9fd718db6e3cc0f9bc50
+        token: Ncbnd7lJvkripVOpyTFAna6NAWCxCrvC
+        aesKey: HlEiBB55eaWUaeBVAQO3cWKWPYv1vOVQSq7nFNICw4E
+        msgDataFormat: JSON
+      - appid: wxdf9b1a4d3c5b6572   #中康智慧坊
+        secret: 489055ace816380c0fceb53447381704
+        token: Ncbnd7lJvkripVOpyTFAna6NAWCxCrvC
+        aesKey: HlEiBB55eaWUaeBVAQO3cWKWPYv1vOVQSq7nFNICw4E
+        msgDataFormat: JSON
+
+
+
+  pay:
+    appId: wx11a2ce7c2bbc4521 #微信公众号或者小程序等的appid
+    mchId: 1703311381 #微信支付商户号
+    mchKey: FotTIbIzn4AisMW7de712LJQIazSqqAl #微信支付商户密钥
+    v3Key: y5Eo99q93qzdQRAs6E2BDKIF7f3EnS3G
+    subAppId:  #服务商模式下的子商户公众账号ID
+    subMchId:  #服务商模式下的子商户号
+    keyPath: c:\\Tools\\cert\\apiclient_cert.p12 # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
+    notifyUrl:  https://userapp.bly.ylrztop.com/app/wxpay/wxPayNotify
+  mp:
+    useRedis: false
+    redisConfig:
+      host: 127.0.0.1
+      port: 6379
+      timeout: 2000
+    configs:
+      - appId: wx3de90a39feb8107a # 第一个公众号的appid  //公众号名称:中康未来健康服务
+        secret: 473a992e28d5c524b4ff3783559026cb
+        token: PPKOdAlCoMO # 接口配置里的Token值
+        aesKey: Eswa6VjwtVMCcw03qZy6fWllgrv5aytIA1SZPEU0kU2 # 接口配置里的EncodingAESKey值
+jpush:
+  appKey: cc9a0120a3e4270c9cba340d
+  masterSecret: cfc2575d3cd7470d584c990c
+  liveTime: 1000
+  apnsProduction: true
+aifabu:  #爱链接
+  appKey: 7b471be905ab17e00f3b858c6710dd117601d008
+
+tencent_cloud_config:
+  secret_id: AKIDiMq9lDf2EOM9lIfqqfKo7FNgM5meD0sT
+  secret_key: u5SuS80342xzx8FRBukza9lVNHKNMSaB
+  bucket: zkzh-1323137866
+  app_id: 1323137866
+  region: chongqing
+  proxy: zkzh
+cloud_host:
+  company_name: 中康
+headerImg:
+  imgUrl: https://zkzh-2025.oss-cn-beijing.aliyuncs.com/fs/20250619/e31b5e051a474a7a9b4ad02575b46196.png
+
+baidu:
+  token: 1231321232
+  back-domain: admin.muyi88.com
+watch:
+  watchUrl: watch.ylrzcloud.com/prod-api
+  #  account: tcloud
+  #  password: mdf-m2h_6yw2$hq
+  account1: ccif #866655060138751
+  password1: cp-t5or_6xw7$mt
+  account2: tcloud #rt500台
+  password2: mdf-m2h_6yw2$hq
+  account3: whr
+  password3: v9xsKuqn_$d2y
+
+fs:
+  commonApi: http://172.27.0.7:8010
+nuonuo:
+  key: 10924508
+  secret: A2EB20764D304D16
+ipad:
+  ipadUrl: http://qwipad.muyi88.com
+  aiApi: http://152.136.202.157:3000/api
+wx_miniapp_temp:
+  pay_order_temp_id: VXEvKaGNPFuJmhWK9O_QPrTZxe9umDCukq-maI8Vdek
+  inquiry_temp_id: 9POPYeqhI48LOPvq-Rfoklze7H-9SlunJKh10Qt4_2I
+

+ 142 - 0
fs-service/src/main/resources/application-druid-zkzh.yml

@@ -0,0 +1,142 @@
+# 数据源配置
+spring:
+    profiles:
+        include: config-zkzh,common
+    # redis 配置
+    redis:
+        # 地址
+        host: r-bp1lfyvfmjkz7jrs0m.redis.rds.aliyuncs.com
+        # 端口,默认为6379
+        port: 6379
+        # 密码
+        password: Zkhj951753@#
+        # 连接超时时间
+        timeout: 30s
+        lettuce:
+            pool:
+                # 连接池中的最小空闲连接
+                min-idle: 0
+                # 连接池中的最大空闲连接
+                max-idle: 8
+                # 连接池的最大数据库连接数
+                max-active: 8
+                # #连接池最大阻塞等待时间(使用负值表示没有限制)
+                max-wait: -1ms
+        database: 0
+    datasource:
+        mysql:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                    url: jdbc:mysql://rm-bp1l45210q9m4m83u.mysql.rds.aliyuncs.com:3306/jz_store?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: Zkhj951753@#
+                # 从库数据源
+                slave:
+                    # 从数据源开关/默认关闭
+                    enabled: false
+                    url:
+                    username:
+                    password:
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true
+        sop:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                    url: jdbc:mysql://rm-bp1l45210q9m4m83u.mysql.rds.aliyuncs.com:3306/sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: Zkhj951753@#
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true
+rocketmq:
+    name-server: rmq-1243b25nj.rocketmq.gz.public.tencenttdmq.com:8080 # RocketMQ NameServer 地址
+    producer:
+        group: my-producer-group
+        access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
+        secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+    consumer:
+        group: test-group
+        access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
+        secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+cloud_host:
+    company_name: 中康智慧
+

+ 12 - 0
fs-user-app/src/main/java/com/fs/app/controller/H5Controller.java

@@ -64,4 +64,16 @@ public class H5Controller
     }
 
 
+    @GetMapping("/vipAutomaticService")
+    public ModelAndView vipAutomaticService( )
+    {
+        String json=configService.selectConfigByKey("his.agreementConfig");
+        AgreementConfig config= JSONUtil.toBean(json, AgreementConfig.class);
+        ModelAndView mv=new ModelAndView();
+        mv.addObject("vipAutomaticService", config.getVipAutomaticService());
+        mv.setViewName("vipAutomaticService");
+        return mv;
+    }
+
+
 }

+ 19 - 22
fs-user-app/src/main/java/com/fs/app/controller/WxH5MpController.java

@@ -43,7 +43,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
-@Api("会员-h5-微信相关接口(后面不需要这个接口了,再删除))")
+@Api("会员-h5-微信相关接口")
 @RestController
 @RequestMapping("/app/wx/h5/mp")
 @Slf4j
@@ -101,10 +101,7 @@ public class WxH5MpController {
             WxOAuth2UserInfo wxMpUser = wxMpService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null);
 
             // 处理用户信息
-            FsUser user = processUserInfo(wxMpUser, company,companyUser);
-
-            // 处理用户与公司的关系
-            processUserCompanyRelationship(user, param, companyUser, company);
+            FsUser user = processUserInfo(wxMpUser, company,companyUser,param);
 
             // 检查用户是否已绑定其他销售
             FsUserCompanyUser userCompanyUser = userCompanyUserService.selectByUserIdAndProjectId(user.getUserId(), param.getProjectId());
@@ -112,6 +109,11 @@ public class WxH5MpController {
                 return R.error(500, "该用户("+user.getUserId() + ")已成为其他销售会员");
             }
 
+//            // 处理用户与公司的关系
+//            processUserCompanyRelationship(user, param, companyUser, company);
+
+
+
             // 生成token并返回结果
             return generateLoginResult(user);
         } catch (WxErrorException e) {
@@ -120,7 +122,7 @@ public class WxH5MpController {
         }
     }
 
-    private FsUser processUserInfo(WxOAuth2UserInfo wxMpUser, Company company,CompanyUser companyUser) {
+    private FsUser processUserInfo(WxOAuth2UserInfo wxMpUser, Company company,CompanyUser companyUser,FsUserLoginByMpParam param) {
         FsUser user = userService.selectFsUserByUnionId(wxMpUser.getUnionId());
 
         if (user != null) {
@@ -130,23 +132,28 @@ public class WxH5MpController {
             userUpdate.setMpOpenId(wxMpUser.getOpenid());
             userUpdate.setUnionId(wxMpUser.getUnionId());
             userUpdate.setUpdateTime(new DateTime());
-            userUpdate.setNickName(wxMpUser.getNickname());
+            userUpdate.setNickname(wxMpUser.getNickname());
             userUpdate.setAvatar(wxMpUser.getHeadImgUrl());
             userService.updateFsUser(userUpdate);
             return userUpdate;
         } else {
             // 创建新用户
             FsUser newUser = new FsUser();
-            newUser.setNickName(wxMpUser.getNickname());
+            newUser.setNickname(wxMpUser.getNickname());
             newUser.setAvatar(wxMpUser.getHeadImgUrl());
             newUser.setStatus(1);
             newUser.setMpOpenId(wxMpUser.getOpenid());
-            newUser.setCompanyId(company.getCompanyId());
-            newUser.setCompanyUserId(companyUser.getUserId());
+//            newUser.setCompanyId(company.getCompanyId());
+//            newUser.setCompanyUserId(companyUser.getUserId());
             newUser.setUnionId(wxMpUser.getUnionId());
             newUser.setCreateTime(new Date());
             newUser.setStatus(company != null && company.getFsUserIsDefaultBlack() == 1 ? 0 : 1);
             userService.insertFsUser(newUser);
+            if((companyUser.getIsAllowedAllRegister() == null || companyUser.getIsAllowedAllRegister() == 1)
+                    && companyUser.getIsNeedRegisterMember() != null && companyUser.getIsNeedRegisterMember() != 1){
+                int defaultStatus = (company != null ? company.getFsUserIsDefaultBlack() : 0) == 1 ? 0 : 1;
+                userCompanyUserService.bindRelationship(newUser.getUserId(), param.getProjectId(), companyUser.getCompanyId(), companyUser.getUserId(), defaultStatus);
+            }
             return newUser;
         }
     }
@@ -167,7 +174,6 @@ public class WxH5MpController {
     }
 
     private R generateLoginResult(FsUser user) {
-        log.info("打印用户信息--------------------》{}",user);
         String token = jwtUtils.generateToken(user.getUserId());
         redisCache.setCacheObject("token:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
 
@@ -177,14 +183,6 @@ public class WxH5MpController {
         return R.ok(result);
     }
 
-    private R handleWxErrorException(WxErrorException e) {
-        if (e.getError().getErrorCode() == 40163) {
-            return R.error(40163, e.getError().getErrorMsg());
-        }
-        return R.error("授权失败," + e.getMessage());
-    }
-
-
     @ApiOperation("处理用户与小程序的绑定")
     @PostMapping("/handleFsUserWx")
     public R handleFsUserWx(@RequestBody FsUserLoginByMpParam param) {
@@ -203,7 +201,6 @@ public class WxH5MpController {
                 return R.error("获取用户信息失败," + e.getMessage());
             }
         }
-
     }
     private void handleFsUserWx(FsUser user, FsUserLoginByMpParam param, WxMaJscode2SessionResult session) {
         if (user == null) return;
@@ -212,7 +209,7 @@ public class WxH5MpController {
                 .eq(FsUserWx::getFsUserId, user.getUserId())
                 .eq(FsUserWx::getAppId, param.getAppId())
                 .eq(FsUserWx::getOpenId, session.getOpenid())
-                .set(FsUserWx::getCompanyId, user.getCompanyId())
+//                .set(FsUserWx::getCompanyId, user.getCompanyId())
                 .set(FsUserWx::getUnionId, session.getUnionid() == null ? "" : session.getUnionid())
                 .set(FsUserWx::getUpdateTime, new Date())
                 .update();
@@ -222,7 +219,7 @@ public class WxH5MpController {
             FsUserWx fsUserWx = new FsUserWx();
             fsUserWx.setType(1);
             fsUserWx.setFsUserId(user.getUserId());
-            fsUserWx.setCompanyId(user.getCompanyId());
+//            fsUserWx.setCompanyId(user.getCompanyId());
             fsUserWx.setAppId(param.getAppId());
             fsUserWx.setOpenId(session.getOpenid());
             fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());

+ 21 - 0
fs-user-app/src/main/resources/templates/vipAutomaticService.html

@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+    <title >会员自动续费服务协议</title>
+    <link  rel="stylesheet"/>
+    <style>
+        body{
+            background-color:#F8F8F8;
+        }
+    </style>
+<body>
+<div th:utext="${vipAutomaticService}" ></div>
+<script th:inline="javascript">
+
+</script>
+
+</body>
+</html>