Explorar o código

Merge remote-tracking branch 'origin/master'

小杜 hai 3 meses
pai
achega
e245c952a3

+ 6 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/AppMapper.java

@@ -1,6 +1,8 @@
 package com.ytpm.dao;
 
 import com.ytpm.agent.model.YtApp;
+import com.ytpm.middle.param.AppListParam;
+import com.ytpm.middle.view.AppListVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -34,4 +36,8 @@ public interface AppMapper {
      * 查询用户的应用列表
      */
     List<YtApp> queryAll(@Param("userId") String userId);
+    /**
+     *  应用列表
+     */
+    List<AppListVO> getAppList(AppListParam param);
 }

+ 41 - 2
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/AgentAppServiceImpl.java

@@ -20,17 +20,22 @@ import com.ytpm.agent.param.AppListParam;
 import com.ytpm.agent.param.AppParam;
 import com.ytpm.agent.view.AgentAppView;
 import com.ytpm.agent.view.AgentEnableAppView;
+import com.ytpm.app.model.YtAppDefaultConfig;
 import com.ytpm.dao.AgentAppMapper;
 import com.ytpm.dao.AppChannelRelativeMapper;
 import com.ytpm.dao.AppMapper;
 import com.ytpm.feign.AdvertiseFeign;
+import com.ytpm.feign.AppFeign;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
+import com.ytpm.handle.CustomerException;
+import com.ytpm.middle.view.AppListVO;
 import com.ytpm.service.AgentAppService;
 import com.ytpm.util.DateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.time.LocalDate;
@@ -51,9 +56,9 @@ public class AgentAppServiceImpl implements AgentAppService {
     @Resource
     private AgentAppMapper agentAppMapper;
     @Resource
-    private AdvertiseFeign advertiseFeign;
-    @Resource
     private AppMapper appMapper;
+    @Resource
+    private AppFeign appFeign;
 
     @Resource
     private AppChannelRelativeMapper appChannelRelativeMapper;
@@ -91,6 +96,7 @@ public class AgentAppServiceImpl implements AgentAppService {
      * 新增应用
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Result<?> saveApp(AppParam param, String userId) {
         //数据库操作,有appId为修改, 没有时为新增
         changeDataAction(param,userId);
@@ -110,6 +116,39 @@ public class AgentAppServiceImpl implements AgentAppService {
             app.setUserId(userId);
             app.setEnabled(1);
             appMapper.insertOne(app);
+            //新增APP时要生成 app_default_config
+            generateDefaultConfig(param,app);
+        }
+    }
+
+    /**
+     * 新增APP时生成 应用的默认配置
+     */
+    private void generateDefaultConfig(AppParam param, YtApp app) {
+        //查询所有app应用
+        com.ytpm.middle.param.AppListParam appListParam = new com.ytpm.middle.param.AppListParam();
+        appListParam.setPage(1);
+        appListParam.setLimit(Integer.MAX_VALUE);
+        List<AppListVO> appList = appMapper.getAppList(appListParam);
+        //判断当前应用是否存在于列表,取出用来生成app默认配置
+        List<AppListVO> vos = appList.stream().filter(s->s.getAppId().equals(param.getSuperiorId())).collect(Collectors.toList());
+        if(CollUtil.isEmpty(vos)){
+            throw new CustomerException("上架的APP应用包不存在!");
+        }
+        AppListVO vo = vos.get(0);
+        if(CharSequenceUtil.isBlank(vo.getWxSecret())){
+            throw new CustomerException("APP应用包未绑定微信开放平台应用,请与ADS管理员联系!");
+        }
+        //拿到下标值用来组合 appType
+        int index = appList.indexOf(vo)+1;
+        //判断当前应用的渠道 截取最后5位数
+        String ditchId = param.getDitchId().toString();
+        String substr = ditchId.substring(ditchId.length() - 5);
+        int appType = Integer.parseInt(index + substr);
+        //将所有app按照上架时间排序
+        Result<String> result = appFeign.saveAppConfig(new YtAppDefaultConfig(null,param.getAppName(),vo.getWxAppId(),vo.getWxSecret(),app.getAppId(),app.getAppId(),appType));
+        if(200!=result.getCode()){
+            throw new CustomerException(result.getMessage());
         }
     }
 

+ 30 - 0
yt-agent/agent-service/src/main/resources/mapper/AppMapper.xml

@@ -147,4 +147,34 @@
         from yt_app
         where ditch_id = #{ditchId}
     </select>
+    <select id="getAppList" resultType="com.ytpm.middle.view.AppListVO">
+        select
+        pua.app_id,
+        pua.app_name,
+        pua.user_id,
+        pua.app_type,
+        pua.detail_url,
+        pua.package_name,
+        pua.domain,
+        pua.issued_time,
+        pua.wx_app_id,
+        pua.wx_secret,
+        me.enterprise_name,
+        me.legal,
+        me.concat_phone,
+        me.credit_code
+        from yt_platform_user_app pua
+        left join yt_middle_enterprise me on pua.user_id = me.user_id
+        <where>
+            pua.available = 1
+            <if test="appType != null">
+                and pua.app_type = #{appType}
+            </if>
+            <if test="appName != null and appName!=''">
+                and pua.app_name like concat('%', #{appName} ,'%')
+            </if>
+        </where>
+        order by
+        pua.issued_time
+    </select>
 </mapper>

+ 3 - 0
yt-app/app-feign/src/main/java/com/ytpm/feign/AppFeign.java

@@ -7,6 +7,7 @@ import com.ytpm.app.param.AppQueryUserTodayTimeParam;
 import com.ytpm.app.param.AppUserParam;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.param.AppUserQueryParam;
+import com.ytpm.app.view.WxDefaultConfig;
 import com.ytpm.app.view.YtAppUserListView;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
@@ -49,4 +50,6 @@ public interface AppFeign {
 
     @PostMapping("/wx/saveAppConfig")
     Result<String> saveAppConfig(@RequestBody YtAppDefaultConfig defaultConfig);
+    @GetMapping("/wx/getConfigs")
+    List<WxDefaultConfig> getConfigs(@RequestParam(name = "appIds")String appIds);
 }

+ 7 - 10
yt-app/app-service/src/main/java/com/ytpm/controller/WxController.java

@@ -4,32 +4,24 @@ import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
-import com.ytpm.agent.enums.UserStatusEnum;
-
 import com.ytpm.app.enums.AppTypeEnums;
 import com.ytpm.app.model.YtAppDefaultConfig;
 import com.ytpm.app.param.WxLoginParam;
 import com.ytpm.app.view.WxDefaultConfig;
 import com.ytpm.app.view.WxLoginResult;
 import com.ytpm.app.view.WxUserInfo;
-import com.ytpm.constant.StrConstant;
 import com.ytpm.dao.AppUserMapper;
-import com.ytpm.dao.LoginRecordMapper;
-import com.ytpm.dao.QuestionMapper;
 import com.ytpm.feign.RiskFeign;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
 import com.ytpm.handle.CustomerException;
-import com.ytpm.app.model.YtDyzLoginRecord;
 import com.ytpm.app.model.YtDyzPowerRecord;
 import com.ytpm.app.model.YtDyzUser;
 import com.ytpm.service.AppUserService;
-import com.ytpm.util.RedisService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -38,10 +30,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 import java.util.Objects;
 
 
@@ -158,4 +149,10 @@ public class WxController {
         appUserMapper.saveAppConfig(defaultConfig);
         return Result.resultOk(RepMessage.SAVE_SUCCESS);
     }
+
+    @ApiOperation("根据APP_ID获取配置")
+    @GetMapping("/getConfigs")
+    public List<WxDefaultConfig> getConfigs(@RequestParam(name = "appIds")String appIds){
+        return appUserMapper.getConfigByIds(appIds);
+    }
 }

+ 5 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/AppUserMapper.java

@@ -100,4 +100,9 @@ public interface AppUserMapper {
      * 保存应用配置
      */
     void saveAppConfig(YtAppDefaultConfig defaultConfig);
+
+    /**
+     * 根据APP_ID获取配置
+     */
+    List<WxDefaultConfig> getConfigByIds(@Param("appIds") String appIds);
 }

+ 9 - 0
yt-app/app-service/src/main/resources/mapper/AppUserMapper.xml

@@ -317,4 +317,13 @@
         and wx_open_id = #{openid}
         limit 1
     </select>
+    <select id="getConfigByIds" resultType="com.ytpm.app.view.WxDefaultConfig">
+        select
+            config_id, config_name, open_id, secret, app_id, app_key, app_type
+        from yt_app_default_config
+        where app_id in
+        <foreach collection="appIds.split(',')" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

+ 2 - 0
yt-common/src/main/java/com/ytpm/agent/view/AgentAppView.java

@@ -121,4 +121,6 @@ public class AgentAppView {
     private String superiorId;
     @ApiModelProperty("上级应用名称")
     private String superiorName;
+    @ApiModelProperty("出包码")
+    private Integer appCode;
 }

+ 1 - 0
yt-common/src/main/java/com/ytpm/app/view/WxDefaultConfig.java

@@ -14,4 +14,5 @@ public class WxDefaultConfig {
     private String secret;
     private String platformAppId;
     private String platformAppSecret;
+    private int appType;
 }

+ 6 - 0
yt-middle/middle-platform/src/main/java/com/ytpm/middle/dao/RiskMapper.java

@@ -3,6 +3,7 @@ package com.ytpm.middle.dao;
 import com.ytpm.risk.model.YtRiskConfig;
 import com.ytpm.risk.model.YtRiskTemplate;
 import com.ytpm.risk.model.YtRiskTemplateConfig;
+import org.apache.ibatis.annotations.Param;
 import org.mapstruct.Mapper;
 
 @Mapper
@@ -21,4 +22,9 @@ public interface RiskMapper {
      * 新增风控配置
      */
     void insertTemplate(YtRiskTemplate template);
+
+    /**
+     * 根据应用查询风控配置
+     */
+    YtRiskTemplate getTemplateByAppId(@Param("appId") String appId);
 }

+ 21 - 4
yt-middle/middle-platform/src/main/java/com/ytpm/middle/service/impl/ApkServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ytpm.middle.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.IdUtil;
 import com.github.pagehelper.PageHelper;
@@ -12,6 +13,7 @@ import com.ytpm.agent.param.AppParam;
 import com.ytpm.agent.view.AgentAppView;
 import com.ytpm.app.enums.AppTypeEnums;
 import com.ytpm.app.model.YtAppDefaultConfig;
+import com.ytpm.app.view.WxDefaultConfig;
 import com.ytpm.feign.AppFeign;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
@@ -20,6 +22,7 @@ import com.ytpm.middle.dao.ApkMapper;
 import com.ytpm.middle.dao.AppMapper;
 import com.ytpm.middle.dao.RiskMapper;
 import com.ytpm.middle.service.ApkService;
+import com.ytpm.middle.view.AppListVO;
 import com.ytpm.middle.view.MiddleUserInfo;
 import com.ytpm.risk.model.YtRiskConfig;
 import com.ytpm.risk.model.YtRiskTemplate;
@@ -29,8 +32,12 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Service
 public class ApkServiceImpl implements ApkService {
@@ -50,7 +57,15 @@ public class ApkServiceImpl implements ApkService {
     @Override
     public ResultTable<AgentAppView> searchAppList(AppListParam appListParam) {
         PageHelper.startPage(appListParam.getPage(), appListParam.getLimit());
-        return ResultTable.resultTableOk(new PageInfo<>(apkMapper.searchAppList(appListParam)));
+        List<AgentAppView> views = apkMapper.searchAppList(appListParam);
+        String appIds = views.stream().map(AgentAppView::getAppId).collect(Collectors.joining(","));
+        List<WxDefaultConfig> configs = appFeign.getConfigs(appIds);
+        Map<String, Integer> appTypeMap = configs.stream().collect(Collectors.toMap(WxDefaultConfig::getAppId, WxDefaultConfig::getAppType));
+        for (AgentAppView view : views) {
+            if(!appTypeMap.containsKey(view.getAppId()))continue;
+            view.setAppCode(appTypeMap.get(view.getAppId()));
+        }
+        return ResultTable.resultTableOk(new PageInfo<>(views));
     }
 
     /**
@@ -62,9 +77,11 @@ public class ApkServiceImpl implements ApkService {
         //数据库操作,有appId为修改, 没有时为新增
         changeDataAction(param,loginUser.getUserId());
         if(CharSequenceUtil.isNotBlank(param.getAppId())){
-            generateRiskDefaultConfig(param.getAppId(),param.getUserId(),loginUser);
-            YtPlatformUserApp platformApp = appMapper.getByPrimary(param.getSuperiorId());
-            appFeign.saveAppConfig(new YtAppDefaultConfig(null,param.getAppName(),platformApp.getWxAppId(),platformApp.getWxSecret(),param.getAppId(),param.getAppId(),1));
+            //若已生成风控配置,则说明出过包,仅需更换即可
+            YtRiskTemplate template =  riskMapper.getTemplateByAppId(param.getAppId());
+            if(Objects.isNull(template)){
+                generateRiskDefaultConfig(param.getAppId(),param.getUserId(),loginUser);
+            }
         }
         return Result.resultOk(RepMessage.SAVE_SUCCESS);
     }

+ 35 - 0
yt-middle/middle-platform/src/main/resources/bootstrap.yml

@@ -0,0 +1,35 @@
+spring:
+  profiles:
+    active: dev
+---
+spring:
+  profiles: local
+  main:
+    allow-bean-definition-overriding: true
+  application:
+    name: yt-middle
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+        namespace: 52439154-ea03-4121-9759-44d0cacc4765
+      config:
+        server-addr: 127.0.0.1:8848
+        file-extension: yml
+        namespace: 52439154-ea03-4121-9759-44d0cacc4765
+---
+spring:
+  profiles: dev
+  main:
+    allow-bean-definition-overriding: true
+  application:
+    name: yt-middle
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+        namespace: ad14a1aa-fe06-473a-9050-9afa26ec0020
+      config:
+        server-addr: 127.0.0.1:8848
+        file-extension: yml
+        namespace: ad14a1aa-fe06-473a-9050-9afa26ec0020

+ 2 - 0
yt-middle/middle-platform/src/main/resources/mapper/AppMapper.xml

@@ -108,6 +108,8 @@
                 and pua.app_name like concat('%', #{appName} ,'%')
             </if>
         </where>
+        order by
+        pua.issued_time
     </select>
     <select id="getByPackName" resultType="com.ytpm.agent.model.YtPlatformUserApp">
         select

+ 6 - 0
yt-middle/middle-platform/src/main/resources/mapper/RiskMapper.xml

@@ -74,4 +74,10 @@
          #{canModify}
         );
     </insert>
+    <select id="getTemplateByAppId" resultType="com.ytpm.risk.model.YtRiskTemplate">
+        select
+            template_id, template_name, template_content, template_code, channel_id, effect_node, app_id, all_satisfy, create_time, create_user_id, update_time, update_user_id, enabled, can_modify
+        from yt_risk_template
+        where app_id = #{appId}
+    </select>
 </mapper>