新老平台过渡方案

新老平台过渡方案

老服务之窗

/mnt1t/JAVA_HOME/super_service/src/main/java/com/palmnest/webapp/filter/LocaleFilter.java

package com.palmnest.webapp.filter;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Locale;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.jstl.core.Config;

import org.apache.commons.lang.StringUtils;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.web.filter.OncePerRequestFilter;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import com.alibaba.fastjson.JSONObject;
import com.palmnest.application.AppConstants;
import com.palmnest.application.Constants;
import com.palmnest.application.bean.AppResultDto;
import com.palmnest.application.core.util.AppResultUtil;
import com.palmnest.service.redis.BaseRedisService;

/**
 * Filter to wrap request with a request including user preferred locale.
 */
public class LocaleFilter extends OncePerRequestFilter {
    /**
     * This method looks for a "locale" request parameter. If it finds one, it sets it as the preferred locale
     * and also configures it to work with JSTL.
     * 
     * @param request the current request
     * @param response the current response
     * @param chain the chain
     * @throws IOException when something goes wrong
     * @throws ServletException when a communication failure happens
     */
    public void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
                                 FilterChain chain)
            throws IOException, ServletException {
        //response.setHeader("Access-Control-Allow-Origin","*");   
        //response.setHeader("Access-Control-Allow-Methods","GET,POST,OPTIONS"); 
        String uri=request.getRequestURI();// 请求相对路径带项目路径  /super_service/admin/list
        String locale = request.getParameter("locale");
        Locale preferredLocale = null;
        //对客户端api接口进行过滤验证 排除登录
        FilterConfig config = getFilterConfig();
        String[] excludedPageArray = null;
        String excludedPages = config.getInitParameter("excludedPages");
        if (StringUtils.isNotEmpty(excludedPages)) {
            excludedPageArray = excludedPages.split(",");
        }
        
        boolean isExcludedPage = false;    
        for (String page : excludedPageArray) {//判断是否在过滤url之外    
            if(request.getServletPath().equals(page)){ // 相对路径,不带项目路径  /admin/list
                isExcludedPage = true;
                break;
            }
            if(request.getServletPath().indexOf("/api/userdata")!=-1){
                 isExcludedPage = true;
                 break;
            }    
        }   
        if(uri.indexOf("super_service/api")!=-1 && !isExcludedPage){
            String token = request.getHeader("token");
            WebApplicationContext web = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
            BaseRedisService baseRedisService = web.getBean(BaseRedisService.class);
            try {
                if(StringUtils.isNotEmpty(token) && JwtUtil.checkToken(token)) {//验证是否合法
                    if(baseRedisService.get(token) == null) {//验证是否在有效期内
                        AppResultDto rt = AppResultUtil.createErrorDto(AppConstants.TOKEN_EXPIRED, "token已过期");
                            outputJson(response, JSONObject.toJSONString(rt));
                    }else {
                         chain.doFilter(request, response);
                         LocaleContextHolder.setLocaleContext(null);
                    }
                }else{
                     AppResultDto rt = AppResultUtil.createErrorDto(AppConstants.RESULTCODE_ILLEGAL, "非法请求");
                     outputJson(response, JSONObject.toJSONString(rt));
                }
            } catch (Exception e) {
                logger.error("the request params occur null or empty"+e+e.getMessage());
                e.printStackTrace();
            }
        }
        else{
            if (locale != null) {
                int indexOfUnderscore = locale.indexOf('_');
                if (indexOfUnderscore != -1) {
                    String language = locale.substring(0, indexOfUnderscore);
                    String country = locale.substring(indexOfUnderscore + 1);
                    preferredLocale = new Locale(language, country);
                } else {
                    preferredLocale = new Locale(locale);
                }
            }

            HttpSession session = request.getSession(false);

            if (session != null) {
                if (preferredLocale == null) {
                    preferredLocale = (Locale) session.getAttribute(Constants.PREFERRED_LOCALE_KEY);
                } else {
                    session.setAttribute(Constants.PREFERRED_LOCALE_KEY, preferredLocale);
                    Config.set(session, Config.FMT_LOCALE, preferredLocale);
                }

                if (preferredLocale != null && !(request instanceof LocaleRequestWrapper)) {
                    request = new LocaleRequestWrapper(request, preferredLocale);
                    LocaleContextHolder.setLocale(preferredLocale);
                }
            }
            chain.doFilter(request, response);
            // Reset thread-bound LocaleContext.
            LocaleContextHolder.setLocaleContext(null);
        }
    
    }
    
    protected void outputJson(HttpServletResponse response,String json){
        response.setContentType("application/json;charset=utf-8");
        PrintWriter out;
        try {
            out = response.getWriter();
            out.print(json);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
}
package com.palmnest.webapp.filter;

import java.util.Date;

import javax.servlet.ServletException;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

/**
 * @Desc:Jwt相关
 **/
public class JwtUtil {
    final static String base64EncodedSecretKey = "base64EncodedSecretKey";//私钥

    public static String getToken(String userName) {
        return Jwts.builder()
                .setSubject(userName)
                .setIssuedAt(new Date())
                .signWith(SignatureAlgorithm.HS256, base64EncodedSecretKey)
                .compact();
    }

    /**
     * @Desc:检查token,只要不正确就会抛出异常
     **/
    public static boolean checkToken(String token) throws ServletException {
        try {
            final Claims claims = Jwts.parser().setSigningKey(base64EncodedSecretKey).parseClaimsJws(token).getBody();
            return true;
        } catch (ExpiredJwtException e1) {
            throw new ServletException("token expired");
        } catch (Exception e) {
            throw new ServletException("other token exception");
        }
    }
    
}

可以看出:
前端用的是简单jwt,用util方法去验证合法性;
后端用的是session,只会判定有没有;

服务之窗新旧系统融合研究

后端新老整合

主要问题

  1. 这是个已经上线的系统,已经产生了很多后端权限的数据产生了, 怎样达到用户感知是同一套系统;

解决思路

  1. 先把老新系统的菜单按扭级权限想像成一个集合, 比对, 产生一个差集, 然后把这个差集里排除系统类权限, 把差集里边的业务系统类权限以外链形式加入到新系统权限内定义
  2. 在新系统上按旧系统上的角色人工定义, 人工分配权限
  3. 把旧系统上后台用户(管理员与操作员)导到新系统
  4. 在新系统上后台用户(管理员与操作员)按旧系统的关联, 人工重新关联角色(用户<->角色)

解疑答惑 问题略

  1. 大部分后台功能在使用新系统的感知上无缝(除了样式上差异,原样式基于layui);
  2. 系统类功能以新系统为准 ;
  3. 业务类功能还会在旧系统;
  4. 从新系统到旧系统, 权限是怎样过去的, 改造旧系统, 把session从file提到redis, 新系统再造一个放到redis就好了

任务分解

  1. 新建项目,处理过渡需要的功能, 代码地址:https://gogs.superdesk.cn/superdesk-app/superdesk-app-transfer.git 目的:已将老项目数据表Mybatis化,Spring升级了,加入SpringBoot,能提高开发效率

目前进度
项目已建
dao
├── CustomBaseMapper.java
├── entity
│   ├── AboutOrgEntity.java
│   ├── AirconditionerAddtimeEntity.java
│   ├── AirruleEntity.java
│   ├── AnnouncementEntity.java
│   ├── AppBusinessLogEntity.java
│   ├── AppFunctionEntity.java
│   ├── AppMenuEntity.java
│   ├── AppNoticeEntity.java
│   ├── AppRoleEntity.java
│   ├── AppUserEntity.java
│   ├── AppUseversionEntity.java
│   ├── AuditEnterpriseEntity.java
│   ├── BillpushEntity.java
│   ├── BillRecordEntity.java
│   ├── BuildEntity.java
│   ├── CarWashorderEntity.java
│   ├── CompanyEntity.java
│   ├── ConsumerEntity.java
│   ├── ContractiinformationEntity.java
│   ├── ContractiinformationorderEntity.java
│   ├── CustomerEntity.java
│   ├── DateTypeEntity.java
│   ├── DepartmentEntity.java
│   ├── DeposititeminformationformEntity.java
│   ├── DeposititemInformationFormEntity.java
│   ├── DepositRecordEntity.java
│   ├── DeptEntity.java
│   ├── DevicePermGroupEntity.java
│   ├── DictionaryGroupEntity.java
│   ├── DictionaryItemEntity.java
│   ├── DictionaryOrgItemEntity.java
│   ├── DormCheckoutEntity.java
│   ├── DormReleaseEntity.java
│   ├── DormRoomerinfoEntity.java
│   ├── EmailConfigEntity.java
│   ├── EmailSendEntity.java
│   ├── EnterpriseEntity.java
│   ├── EnterSettlementEntity.java
│   ├── ExtraServiceEntity.java
│   ├── FaceprojectinfoEntity.java
│   ├── FloorEntity.java
│   ├── GeneralbillOrdersEntity.java
│   ├── GeneralbillsEntity.java
│   ├── GeneralbillServiceEntity.java
│   ├── GoodsConfigEntity.java
│   ├── GoodsDetailEntity.java
│   ├── GoodsReleaseEntity.java
│   ├── InPuchaseUserEntity.java
│   ├── IntegralRecordEntity.java
│   ├── LinglingCardEntity.java
│   ├── LinglingDeviceEntity.java
│   ├── LinglingLogEntity.java
│   ├── LinglingVisitorInfoEntity.java
│   ├── LinglingVisitorMachineEntity.java
│   ├── MallManagementEntity.java
│   ├── MealCardUserEntity.java
│   ├── MealcarEntity.java
│   ├── MealEntity.java
│   ├── MerchantDetailEntity.java
│   ├── MessagePushEntity.java
│   ├── MethodExecuteLogEntity.java
│   ├── MobileConfigEntity.java
│   ├── ModelEntity.java
│   ├── NeigouorderInfoEntity.java
│   ├── OrderDinnerEntity.java
│   ├── OrderDinnerInfoEntity.java
│   ├── OrderExtraServiceEntity.java
│   ├── OrganizationConfigEntity.java
│   ├── OrganizationEntity.java
│   ├── PhoneMessageEntity.java
│   ├── PicandtextdetailstempEntity.java
│   ├── ProductCategoriesEntity.java
│   ├── ProductEntity.java
│   ├── ProductSignEntity.java
│   ├── ProjectconfigEntity.java
│   ├── ProSetEntity.java
│   ├── ProvincecityEntity.java
│   ├── PushmodelEntity.java
│   ├── RechargeEntity.java
│   ├── RechargeRecordEntity.java
│   ├── RechargeSetEntity.java
│   ├── RenovationManageEntity.java
│   ├── RepairBillCommentsEntity.java
│   ├── RepairBillMaterialsEntity.java
│   ├── RepairBillsEntity.java
│   ├── RepairBillSupportUsersEntity.java
│   ├── RepairOperateRecordsEntity.java
│   ├── RepairReturnVisitsEntity.java
│   ├── RepairServiceEntity.java
│   ├── RepairtypeEntity.java
│   ├── ReplykeywordsEntity.java
│   ├── ReserverecordEntity.java
│   ├── RoomnoEntity.java
│   ├── SeqEntity.java
│   ├── ServicePackDetailsEntity.java
│   ├── ServiceprojectallocationEntity.java
│   ├── ServicetypeinfoChildEntity.java
│   ├── ServicetypeinfoEntity.java
│   ├── SignBasicsEntity.java
│   ├── SignContractEntity.java
│   ├── SignServiceInvoiceEntity.java
│   ├── SmsAuthcodeEntity.java
│   ├── StaffEntity.java
│   ├── SyncOrgEntity.java
│   ├── TemplateLibraryEntity.java
│   ├── TempViewDatEntity.java
│   ├── TempViewSettingsEntity.java
│   ├── TextpicvoicetempEntity.java
│   ├── UserAccountEntity.java
│   ├── UserActiveCountEntity.java
│   ├── UserDateActivecountEntity.java
│   ├── UserEntity.java
│   ├── UserEvaluateEntity.java
│   ├── UserimageinfoEntity.java
│   ├── UserRepairEntity.java
│   ├── UserRepairTypeEntity.java
│   ├── VirAccountEntity.java
│   ├── VirPermConfigEntity.java
│   ├── VirtFoodConfigEntity.java
│   ├── VirtFoodEntity.java
│   ├── VirtFoodOrgEntity.java
│   ├── VirtFoodPersonEntity.java
│   ├── VirtualarchitectureAgentEntity.java
│   ├── VirtualarchitectureEntity.java
│   ├── VirtualarchitectureRangeEntity.java
│   ├── VirtuserEntity.java
│   ├── VisitorcodeEntity.java
│   ├── VisitorinfoEntity.java
│   ├── VisitororderEntity.java
│   ├── WatermeterEntity.java
│   ├── WeixinNotifyInfoEntity.java
│   ├── WxfocuseventEntity.java
│   ├── WxlocationeventEntity.java
│   ├── WxmenueventEntity.java
│   ├── WxpublicnoEntity.java
│   ├── WxreceivelocationEntity.java
│   ├── WxreceivepicEntity.java
│   ├── WxreceiverecordEntity.java
│   ├── WxreceivetextEntity.java
│   ├── WxreceiveurlEntity.java
│   ├── WxreceivevedioEntity.java
│   ├── WxreceivevoiceEntity.java
│   ├── WxtemplateConfigParaEntity.java
│   ├── WxtemplateMessageConfigEntity.java
│   ├── WxtemplateMessageEntity.java
│   ├── WxtemplateMessageTypeEntity.java
│   ├── WxtwoeventEntity.java
│   └── WxuserEntity.java
└── mapper

├── AboutOrgEntityMapper.java
├── AirconditionerAddtimeEntityMapper.java
├── AirruleEntityMapper.java
├── AnnouncementEntityMapper.java
├── AppBusinessLogEntityMapper.java
├── AppFunctionEntityMapper.java
├── AppMenuEntityMapper.java
├── AppNoticeEntityMapper.java
├── AppRoleEntityMapper.java
├── AppUserEntityMapper.java
├── AppUseversionEntityMapper.java
├── AuditEnterpriseEntityMapper.java
├── BillpushEntityMapper.java
├── BillRecordEntityMapper.java
├── BuildEntityMapper.java
├── CarWashorderEntityMapper.java
├── CompanyEntityMapper.java
├── ConsumerEntityMapper.java
├── ContractiinformationEntityMapper.java
├── ContractiinformationorderEntityMapper.java
├── CustomerEntityMapper.java
├── DateTypeEntityMapper.java
├── DepartmentEntityMapper.java
├── DeposititeminformationformEntityMapper.java
├── DeposititemInformationFormEntityMapper.java
├── DepositRecordEntityMapper.java
├── DeptEntityMapper.java
├── DevicePermGroupEntityMapper.java
├── DictionaryGroupEntityMapper.java
├── DictionaryItemEntityMapper.java
├── DictionaryOrgItemEntityMapper.java
├── DormCheckoutEntityMapper.java
├── DormReleaseEntityMapper.java
├── DormRoomerinfoEntityMapper.java
├── EmailConfigEntityMapper.java
├── EmailSendEntityMapper.java
├── EnterpriseEntityMapper.java
├── EnterSettlementEntityMapper.java
├── ExtraServiceEntityMapper.java
├── FaceprojectinfoEntityMapper.java
├── FloorEntityMapper.java
├── GeneralbillOrdersEntityMapper.java
├── GeneralbillsEntityMapper.java
├── GeneralbillServiceEntityMapper.java
├── GoodsConfigEntityMapper.java
├── GoodsDetailEntityMapper.java
├── GoodsReleaseEntityMapper.java
├── InPuchaseUserEntityMapper.java
├── IntegralRecordEntityMapper.java
├── LinglingCardEntityMapper.java
├── LinglingDeviceEntityMapper.java
├── LinglingLogEntityMapper.java
├── LinglingVisitorInfoEntityMapper.java
├── LinglingVisitorMachineEntityMapper.java
├── MallManagementEntityMapper.java
├── MealCardUserEntityMapper.java
├── MealcarEntityMapper.java
├── MealEntityMapper.java
├── MerchantDetailEntityMapper.java
├── MessagePushEntityMapper.java
├── MethodExecuteLogEntityMapper.java
├── MobileConfigEntityMapper.java
├── ModelEntityMapper.java
├── NeigouorderInfoEntityMapper.java
├── OrderDinnerEntityMapper.java
├── OrderDinnerInfoEntityMapper.java
├── OrderExtraServiceEntityMapper.java
├── OrganizationConfigEntityMapper.java
├── OrganizationEntityMapper.java
├── PhoneMessageEntityMapper.java
├── PicandtextdetailstempEntityMapper.java
├── ProductCategoriesEntityMapper.java
├── ProductEntityMapper.java
├── ProductSignEntityMapper.java
├── ProjectconfigEntityMapper.java
├── ProSetEntityMapper.java
├── ProvincecityEntityMapper.java
├── PushmodelEntityMapper.java
├── RechargeEntityMapper.java
├── RechargeRecordEntityMapper.java
├── RechargeSetEntityMapper.java
├── RenovationManageEntityMapper.java
├── RepairBillCommentsEntityMapper.java
├── RepairBillMaterialsEntityMapper.java
├── RepairBillsEntityMapper.java
├── RepairBillSupportUsersEntityMapper.java
├── RepairOperateRecordsEntityMapper.java
├── RepairReturnVisitsEntityMapper.java
├── RepairServiceEntityMapper.java
├── RepairtypeEntityMapper.java
├── ReplykeywordsEntityMapper.java
├── ReserverecordEntityMapper.java
├── RoomnoEntityMapper.java
├── SeqEntityMapper.java
├── ServicePackDetailsEntityMapper.java
├── ServiceprojectallocationEntityMapper.java
├── ServicetypeinfoChildEntityMapper.java
├── ServicetypeinfoEntityMapper.java
├── SignBasicsEntityMapper.java
├── SignContractEntityMapper.java
├── SignServiceInvoiceEntityMapper.java
├── SmsAuthcodeEntityMapper.java
├── StaffEntityMapper.java
├── SyncOrgEntityMapper.java
├── TemplateLibraryEntityMapper.java
├── TempViewDatEntityMapper.java
├── TempViewSettingsEntityMapper.java
├── TextpicvoicetempEntityMapper.java
├── UserAccountEntityMapper.java
├── UserActiveCountEntityMapper.java
├── UserDateActivecountEntityMapper.java
├── UserEntityMapper.java
├── UserEvaluateEntityMapper.java
├── UserimageinfoEntityMapper.java
├── UserRepairEntityMapper.java
├── UserRepairTypeEntityMapper.java
├── VirAccountEntityMapper.java
├── VirPermConfigEntityMapper.java
├── VirtFoodConfigEntityMapper.java
├── VirtFoodEntityMapper.java
├── VirtFoodOrgEntityMapper.java
├── VirtFoodPersonEntityMapper.java
├── VirtualarchitectureAgentEntityMapper.java
├── VirtualarchitectureEntityMapper.java
├── VirtualarchitectureRangeEntityMapper.java
├── VirtuserEntityMapper.java
├── VisitorcodeEntityMapper.java
├── VisitorinfoEntityMapper.java
├── VisitororderEntityMapper.java
├── WatermeterEntityMapper.java
├── WeixinNotifyInfoEntityMapper.java
├── WxfocuseventEntityMapper.java
├── WxlocationeventEntityMapper.java
├── WxmenueventEntityMapper.java
├── WxpublicnoEntityMapper.java
├── WxreceivelocationEntityMapper.java
├── WxreceivepicEntityMapper.java
├── WxreceiverecordEntityMapper.java
├── WxreceivetextEntityMapper.java
├── WxreceiveurlEntityMapper.java
├── WxreceivevedioEntityMapper.java
├── WxreceivevoiceEntityMapper.java
├── WxtemplateConfigParaEntityMapper.java
├── WxtemplateMessageConfigEntityMapper.java
├── WxtemplateMessageEntityMapper.java
├── WxtemplateMessageTypeEntityMapper.java
├── WxtwoeventEntityMapper.java
└── WxuserEntityMapper.java

dto
└── param

├── AboutOrgParam.java
├── AirconditionerAddtimeParam.java
├── AirruleParam.java
├── AnnouncementParam.java
├── AppBusinessLogParam.java
├── AppFunctionParam.java
├── AppMenuParam.java
├── AppNoticeParam.java
├── AppRoleParam.java
├── AppUserParam.java
├── AppUseversionParam.java
├── AuditEnterpriseParam.java
├── BillpushParam.java
├── BillRecordParam.java
├── BuildParam.java
├── CarWashorderParam.java
├── CompanyParam.java
├── ConsumerParam.java
├── ContractiinformationorderParam.java
├── ContractiinformationParam.java
├── CustomerParam.java
├── DateTypeParam.java
├── DepartmentParam.java
├── DeposititeminformationformParam.java
├── DeposititemInformationFormParam.java
├── DepositRecordParam.java
├── DeptParam.java
├── DevicePermGroupParam.java
├── DictionaryGroupParam.java
├── DictionaryItemParam.java
├── DictionaryOrgItemParam.java
├── DormCheckoutParam.java
├── DormReleaseParam.java
├── DormRoomerinfoParam.java
├── EmailConfigParam.java
├── EmailSendParam.java
├── EnterpriseParam.java
├── EnterSettlementParam.java
├── ExtraServiceParam.java
├── FaceprojectinfoParam.java
├── FloorParam.java
├── GeneralbillOrdersParam.java
├── GeneralbillServiceParam.java
├── GeneralbillsParam.java
├── GoodsConfigParam.java
├── GoodsDetailParam.java
├── GoodsReleaseParam.java
├── InPuchaseUserParam.java
├── IntegralRecordParam.java
├── LinglingCardParam.java
├── LinglingDeviceParam.java
├── LinglingLogParam.java
├── LinglingVisitorInfoParam.java
├── LinglingVisitorMachineParam.java
├── MallManagementParam.java
├── MealCardUserParam.java
├── MealcarParam.java
├── MealParam.java
├── MerchantDetailParam.java
├── MessagePushParam.java
├── MethodExecuteLogParam.java
├── MobileConfigParam.java
├── ModelParam.java
├── NeigouorderInfoParam.java
├── OrderDinnerInfoParam.java
├── OrderDinnerParam.java
├── OrderExtraServiceParam.java
├── OrganizationConfigParam.java
├── OrganizationParam.java
├── PhoneMessageParam.java
├── PicandtextdetailstempParam.java
├── ProductCategoriesParam.java
├── ProductParam.java
├── ProductSignParam.java
├── ProjectconfigParam.java
├── ProSetParam.java
├── ProvincecityParam.java
├── PushmodelParam.java
├── RechargeParam.java
├── RechargeRecordParam.java
├── RechargeSetParam.java
├── RenovationManageParam.java
├── RepairBillCommentsParam.java
├── RepairBillMaterialsParam.java
├── RepairBillsParam.java
├── RepairBillSupportUsersParam.java
├── RepairOperateRecordsParam.java
├── RepairReturnVisitsParam.java
├── RepairServiceParam.java
├── RepairtypeParam.java
├── ReplykeywordsParam.java
├── ReserverecordParam.java
├── RoomnoParam.java
├── SeqParam.java
├── ServicePackDetailsParam.java
├── ServiceprojectallocationParam.java
├── ServicetypeinfoChildParam.java
├── ServicetypeinfoParam.java
├── SignBasicsParam.java
├── SignContractParam.java
├── SignServiceInvoiceParam.java
├── SmsAuthcodeParam.java
├── StaffParam.java
├── SyncOrgParam.java
├── TemplateLibraryParam.java
├── TempViewDatParam.java
├── TempViewSettingsParam.java
├── TextpicvoicetempParam.java
├── UserAccountParam.java
├── UserActiveCountParam.java
├── UserDateActivecountParam.java
├── UserEvaluateParam.java
├── UserimageinfoParam.java
├── UserParam.java
├── UserRepairParam.java
├── UserRepairTypeParam.java
├── VirAccountParam.java
├── VirPermConfigParam.java
├── VirtFoodConfigParam.java
├── VirtFoodOrgParam.java
├── VirtFoodParam.java
├── VirtFoodPersonParam.java
├── VirtualarchitectureAgentParam.java
├── VirtualarchitectureParam.java
├── VirtualarchitectureRangeParam.java
├── VirtuserParam.java
├── VisitorcodeParam.java
├── VisitorinfoParam.java
├── VisitororderParam.java
├── WatermeterParam.java
├── WeixinNotifyInfoParam.java
├── WxfocuseventParam.java
├── WxlocationeventParam.java
├── WxmenueventParam.java
├── WxpublicnoParam.java
├── WxreceivelocationParam.java
├── WxreceivepicParam.java
├── WxreceiverecordParam.java
├── WxreceivetextParam.java
├── WxreceiveurlParam.java
├── WxreceivevedioParam.java
├── WxreceivevoiceParam.java
├── WxtemplateConfigParaParam.java
├── WxtemplateMessageConfigParam.java
├── WxtemplateMessageParam.java
├── WxtemplateMessageTypeParam.java
├── WxtwoeventParam.java
└── WxuserParam.java

service
├── AboutOrgService.java
├── AirconditionerAddtimeService.java
├── AirruleService.java
├── AnnouncementService.java
├── AppBusinessLogService.java
├── AppFunctionService.java
├── AppMenuService.java
├── AppNoticeService.java
├── AppRoleService.java
├── AppUserService.java
├── AppUseversionService.java
├── AuditEnterpriseService.java
├── backend
├── BillpushService.java
├── BillRecordService.java
├── BuildService.java
├── CarWashorderService.java
├── CompanyService.java
├── ConsumerService.java
├── ContractiinformationorderService.java
├── ContractiinformationService.java
├── CustomerService.java
├── DateTypeService.java
├── DepartmentService.java
├── DeposititeminformationformService.java
├── DeposititemInformationFormService.java
├── DepositRecordService.java
├── DeptService.java
├── DevicePermGroupService.java
├── DictionaryGroupService.java
├── DictionaryItemService.java
├── DictionaryOrgItemService.java
├── DormCheckoutService.java
├── DormReleaseService.java
├── DormRoomerinfoService.java
├── EmailConfigService.java
├── EmailSendService.java
├── EnterpriseService.java
├── EnterSettlementService.java
├── ExtraServiceService.java
├── FaceprojectinfoService.java
├── FloorService.java
├── front
├── GeneralbillOrdersService.java
├── GeneralbillServiceService.java
├── GeneralbillsService.java
├── GoodsConfigService.java
├── GoodsDetailService.java
├── GoodsReleaseService.java
├── InPuchaseUserService.java
├── IntegralRecordService.java
├── LinglingCardService.java
├── LinglingDeviceService.java
├── LinglingLogService.java
├── LinglingVisitorInfoService.java
├── LinglingVisitorMachineService.java
├── MallManagementService.java
├── MealCardUserService.java
├── MealcarService.java
├── MealService.java
├── MerchantDetailService.java
├── MessagePushService.java
├── MethodExecuteLogService.java
├── MobileConfigService.java
├── ModelService.java
├── NeigouorderInfoService.java
├── OrderDinnerInfoService.java
├── OrderDinnerService.java
├── OrderExtraServiceService.java
├── OrganizationConfigService.java
├── OrganizationService.java
├── PhoneMessageService.java
├── PicandtextdetailstempService.java
├── ProductCategoriesService.java
├── ProductService.java
├── ProductSignService.java
├── ProjectconfigService.java
├── ProSetService.java
├── ProvincecityService.java
├── PushmodelService.java
├── RechargeRecordService.java
├── RechargeService.java
├── RechargeSetService.java
├── remote
├── RenovationManageService.java
├── RepairBillCommentsService.java
├── RepairBillMaterialsService.java
├── RepairBillsService.java
├── RepairBillSupportUsersService.java
├── RepairOperateRecordsService.java
├── RepairReturnVisitsService.java
├── RepairServiceService.java
├── RepairtypeService.java
├── ReplykeywordsService.java
├── ReserverecordService.java
├── RoomnoService.java
├── SeqService.java
├── ServicePackDetailsService.java
├── ServiceprojectallocationService.java
├── ServicetypeinfoChildService.java
├── ServicetypeinfoService.java
├── SignBasicsService.java
├── SignContractService.java
├── SignServiceInvoiceService.java
├── SmsAuthcodeService.java
├── StaffService.java
├── SyncOrgService.java
├── TemplateLibraryService.java
├── TempViewDatService.java
├── TempViewSettingsService.java
├── TextpicvoicetempService.java
├── UserAccountService.java
├── UserActiveCountService.java
├── UserDateActivecountService.java
├── UserEvaluateService.java
├── UserimageinfoService.java
├── UserRepairService.java
├── UserRepairTypeService.java
├── UserService.java
├── VirAccountService.java
├── VirPermConfigService.java
├── VirtFoodConfigService.java
├── VirtFoodOrgService.java
├── VirtFoodPersonService.java
├── VirtFoodService.java
├── VirtualarchitectureAgentService.java
├── VirtualarchitectureRangeService.java
├── VirtualarchitectureService.java
├── VirtuserService.java
├── VisitorcodeService.java
├── VisitorinfoService.java
├── VisitororderService.java
├── WatermeterService.java
├── WeixinNotifyInfoService.java
├── WxfocuseventService.java
├── WxlocationeventService.java
├── WxmenueventService.java
├── WxpublicnoService.java
├── WxreceivelocationService.java
├── WxreceivepicService.java
├── WxreceiverecordService.java
├── WxreceivetextService.java
├── WxreceiveurlService.java
├── WxreceivevedioService.java
├── WxreceivevoiceService.java
├── WxtemplateConfigParaService.java
├── WxtemplateMessageConfigService.java
├── WxtemplateMessageService.java
├── WxtemplateMessageTypeService.java
├── WxtwoeventService.java
└── WxuserService.java

resources
├── application.properties
├── mapper
│   ├── AboutOrgEntityMapper.xml
│   ├── AirconditionerAddtimeEntityMapper.xml
│   ├── AirruleEntityMapper.xml
│   ├── AnnouncementEntityMapper.xml
│   ├── AppBusinessLogEntityMapper.xml
│   ├── AppFunctionEntityMapper.xml
│   ├── AppMenuEntityMapper.xml
│   ├── AppNoticeEntityMapper.xml
│   ├── AppRoleEntityMapper.xml
│   ├── AppUserEntityMapper.xml
│   ├── AppUseversionEntityMapper.xml
│   ├── AuditEnterpriseEntityMapper.xml
│   ├── BillpushEntityMapper.xml
│   ├── BillRecordEntityMapper.xml
│   ├── BuildEntityMapper.xml
│   ├── CarWashorderEntityMapper.xml
│   ├── CompanyEntityMapper.xml
│   ├── ConsumerEntityMapper.xml
│   ├── ContractiinformationEntityMapper.xml
│   ├── ContractiinformationorderEntityMapper.xml
│   ├── CustomerEntityMapper.xml
│   ├── DateTypeEntityMapper.xml
│   ├── DepartmentEntityMapper.xml
│   ├── DeposititemInformationFormEntityMapper.xml
│   ├── DepositRecordEntityMapper.xml
│   ├── DeptEntityMapper.xml
│   ├── DevicePermGroupEntityMapper.xml
│   ├── DictionaryGroupEntityMapper.xml
│   ├── DictionaryItemEntityMapper.xml
│   ├── DictionaryOrgItemEntityMapper.xml
│   ├── DormCheckoutEntityMapper.xml
│   ├── DormReleaseEntityMapper.xml
│   ├── DormRoomerinfoEntityMapper.xml
│   ├── EmailConfigEntityMapper.xml
│   ├── EmailSendEntityMapper.xml
│   ├── EnterpriseEntityMapper.xml
│   ├── EnterSettlementEntityMapper.xml
│   ├── ExtraServiceEntityMapper.xml
│   ├── FaceprojectinfoEntityMapper.xml
│   ├── FloorEntityMapper.xml
│   ├── GeneralbillOrdersEntityMapper.xml
│   ├── GeneralbillsEntityMapper.xml
│   ├── GeneralbillServiceEntityMapper.xml
│   ├── GoodsConfigEntityMapper.xml
│   ├── GoodsDetailEntityMapper.xml
│   ├── GoodsReleaseEntityMapper.xml
│   ├── InPuchaseUserEntityMapper.xml
│   ├── IntegralRecordEntityMapper.xml
│   ├── LinglingCardEntityMapper.xml
│   ├── LinglingDeviceEntityMapper.xml
│   ├── LinglingLogEntityMapper.xml
│   ├── LinglingVisitorInfoEntityMapper.xml
│   ├── LinglingVisitorMachineEntityMapper.xml
│   ├── MallManagementEntityMapper.xml
│   ├── MealCardUserEntityMapper.xml
│   ├── MealcarEntityMapper.xml
│   ├── MealEntityMapper.xml
│   ├── MerchantDetailEntityMapper.xml
│   ├── MessagePushEntityMapper.xml
│   ├── MethodExecuteLogEntityMapper.xml
│   ├── MobileConfigEntityMapper.xml
│   ├── ModelEntityMapper.xml
│   ├── NeigouorderInfoEntityMapper.xml
│   ├── OrderDinnerEntityMapper.xml
│   ├── OrderDinnerInfoEntityMapper.xml
│   ├── OrderExtraServiceEntityMapper.xml
│   ├── OrganizationConfigEntityMapper.xml
│   ├── OrganizationEntityMapper.xml
│   ├── PhoneMessageEntityMapper.xml
│   ├── ProductCategoriesEntityMapper.xml
│   ├── ProductEntityMapper.xml
│   ├── ProductSignEntityMapper.xml
│   ├── ProjectconfigEntityMapper.xml
│   ├── ProSetEntityMapper.xml
│   ├── ProvincecityEntityMapper.xml
│   ├── PushmodelEntityMapper.xml
│   ├── RechargeEntityMapper.xml
│   ├── RechargeRecordEntityMapper.xml
│   ├── RechargeSetEntityMapper.xml
│   ├── RenovationManageEntityMapper.xml
│   ├── RepairBillCommentsEntityMapper.xml
│   ├── RepairBillMaterialsEntityMapper.xml
│   ├── RepairBillsEntityMapper.xml
│   ├── RepairOperateRecordsEntityMapper.xml
│   ├── RepairReturnVisitsEntityMapper.xml
│   ├── RepairServiceEntityMapper.xml
│   ├── RepairtypeEntityMapper.xml
│   ├── ReserverecordEntityMapper.xml
│   ├── RoomnoEntityMapper.xml
│   ├── ServicePackDetailsEntityMapper.xml
│   ├── ServiceprojectallocationEntityMapper.xml
│   ├── ServicetypeinfoChildEntityMapper.xml
│   ├── ServicetypeinfoEntityMapper.xml
│   ├── SignBasicsEntityMapper.xml
│   ├── SignContractEntityMapper.xml
│   ├── SignServiceInvoiceEntityMapper.xml
│   ├── SmsAuthcodeEntityMapper.xml
│   ├── StaffEntityMapper.xml
│   ├── SyncOrgEntityMapper.xml
│   ├── TemplateLibraryEntityMapper.xml
│   ├── UserAccountEntityMapper.xml
│   ├── UserActiveCountEntityMapper.xml
│   ├── UserDateActivecountEntityMapper.xml
│   ├── UserEntityMapper.xml
│   ├── UserEvaluateEntityMapper.xml
│   ├── UserRepairEntityMapper.xml
│   ├── UserRepairTypeEntityMapper.xml
│   ├── VirAccountEntityMapper.xml
│   ├── VirPermConfigEntityMapper.xml
│   ├── VirtFoodConfigEntityMapper.xml
│   ├── VirtFoodEntityMapper.xml
│   ├── VirtFoodOrgEntityMapper.xml
│   ├── VirtFoodPersonEntityMapper.xml
│   ├── VirtualarchitectureAgentEntityMapper.xml
│   ├── VirtualarchitectureEntityMapper.xml
│   ├── VirtualarchitectureRangeEntityMapper.xml
│   ├── VirtuserEntityMapper.xml
│   ├── WatermeterEntityMapper.xml
│   ├── WeixinNotifyInfoEntityMapper.xml
│   ├── WxfocuseventEntityMapper.xml
│   ├── WxlocationeventEntityMapper.xml
│   ├── WxmenueventEntityMapper.xml
│   ├── WxpublicnoEntityMapper.xml
│   ├── WxreceivelocationEntityMapper.xml
│   ├── WxreceivepicEntityMapper.xml
│   ├── WxreceiverecordEntityMapper.xml
│   ├── WxreceivetextEntityMapper.xml
│   ├── WxreceiveurlEntityMapper.xml
│   ├── WxreceivevedioEntityMapper.xml
│   ├── WxreceivevoiceEntityMapper.xml
│   ├── WxtemplateConfigParaEntityMapper.xml
│   ├── WxtemplateMessageConfigEntityMapper.xml
│   ├── WxtemplateMessageEntityMapper.xml
│   ├── WxtemplateMessageTypeEntityMapper.xml
│   ├── WxtwoeventEntityMapper.xml
│   └── WxuserEntityMapper.xml
├── mapper-bak
│   ├── DeposititeminformationformEntityMapper.xml
│   ├── PicandtextdetailstempEntityMapper.xml
│   ├── RepairBillSupportUsersEntityMapper.xml
│   ├── ReplykeywordsEntityMapper.xml
│   ├── SeqEntityMapper.xml
│   ├── TempViewDatEntityMapper.xml
│   ├── TempViewSettingsEntityMapper.xml
│   ├── TextpicvoicetempEntityMapper.xml
│   ├── UserimageinfoEntityMapper.xml
│   ├── VisitorcodeEntityMapper.xml
│   ├── VisitorinfoEntityMapper.xml
│   └── VisitororderEntityMapper.xml
├── static
└── templates

前端新老整合

解决思路

  1. 通过kafka实时同步用户体系数据(项目,企业,用户...)
  2. 把旧系统的服务包配置到新系统
  3. 微信端套用新系统的外框;
  4. 停止用户体系数据从旧系统产生
  5. 开启用户体系数据从新系统产生

解疑答惑 问题略

  1. 这个做法对业务前端 前后端分离的 (主是是用vue写的) 业务模块很适用 (本来这种模块走的就是api,走jwt,如果在权限上过不来, 造个token就好了)
  2. 业务模块产生的数据还会流到旧系统

已上线微信公众号

人工整改公众号设置

  1. 修改开发者接入链接(如果是接入客户公众号开发者模式);
  2. 修改网页授权链接;
  3. 修改或添加IP地址白名单,新系统根目录添加验证MP文件;

问题来了

上线的公众号40个之多,一个晚上可能搞不好,如果分批时上的话,要去较验新旧系统微信外框会不会产生数据问题,然后目前也没把公众号是怎样一个接入情况记录下来,还有就是客户的公众号我们是不是要客户的管理员去扫码我们才能进入等等的问题点

详细的整改细节,还要去细看代码才能得出

TODO

请先后发表评论
  • 最新评论
  • 总共0条评论