---
# System prepended metadata

title: 研華交接項目清單

---

# 研華交接項目清單

## 新後台

### 登入權限管理
  - 如何新增後台登入權限
在 **WISE_PaaS_Management_User** 資料表新增一筆登入權限
Email : 登入帳號
RoleID : 登入權限層級，可參考 **WISE_PaaS_Management_Role** 權限
Active : 是否啟用
時間 : 建立當下時間
新增方式 : 確認要新增 Email 是否已被加入至 WISE_PaaS_Management_User 此表內，如果已被加入，則確認權限層級是否需要調整，只會有一個Email

  - 如何新增後台產品權限
在 **WISE_PaaS_PackageUser** 資料表新增一筆產品權限
Email : 登入帳號
PackageID : 產品編號
UserRole : 陣列string，EX : [1] or [1,2]。
0 : Admin (不會顯示在編輯產品用戶下拉選單內)
1 : Editor (如果有設定登入權限後，可編輯此產品，購買時收到通知信)
2 : Shipper(出貨時收到通知信)

  - 新增後台API後，如何設定後台 API 權限
  1. Step 1 : 在 API Router 上方掛上 Authorize，並如下圖命名
**[Authorize(Policy = "api_partNumber_get-special-price")]**
api_功能名稱(partNumber, product)_API方法(get, post)-細節名稱
![](https://hackmd.io/_uploads/rJu0Qm3Rn.png)
  2. Step 2 : 在 **WISE_PaaS_Management_Permission** 資料表增加一筆 API 權限
Code : 權限唯一是別名，請看此 API 的 Authorize 命名為一名稱是甚麼
Name : 名稱，新增 API 權限時可以給空值
ParentID : 父編號，新增 API 權限時設為NULL即可
Type : 類型，新增 API 權限時為4即可
Path : 路徑，新增 API 權限時設為NULL即可
Level : 層級，新增 API 權限時為1即可
SeqNumber : 層級，新增 API 權限時為1即可
  3. Step 3 : 在 **WISE_PaaS_Management_RoleDefaultPermission** 資料表根據預設Role使用權限增加資料
PermissionID : 權限編號，Step 2 新增後的ID
ControlType : 控制權限，1 : Full Control, 2 :Partial Control，此設1即可
RoleID : 登入權限

### Swagger API 測試
Step1 : 註解以下程式碼後運行(在本機端使用 Swagger 測試API時)，但要Commit程式碼時，記得將註解復原，可使用 **Git Stash** 暫存留下次測試使用
![](https://hackmd.io/_uploads/rJbtFDC03.png)

Step2 : 登入取得token(loginId隨便打，email 打後台登入email)
{
  "loginId": "string",
  "email": "george81.hsu@advantech.com.tw"
}
![](https://hackmd.io/_uploads/rJ8VqDAC3.png)
![](https://hackmd.io/_uploads/rJvicDAR3.png)

Step3 : 複製token至下圖區塊輸入框(前面不用加bearer)，即可進行測試
![](https://hackmd.io/_uploads/Bk5pcvC0h.png)

### 產品管理建立時檔案建立方式
 如果是一個已上線的產品，草稿建立當下，就會將該產品所有檔案拷貝到新的 blob 資料夾內，如果有 CN 語系，也會一併拷貝至 CN blob Server 底下。目前以下三種類型檔案會同時在 global 與 cn blob server 建立 icon, pricebook, banner(product)，其餘檔案看語系新增。
**可參考 : ProductDraftService.cs 1268行**
![](https://hackmd.io/_uploads/SJbi6DC0h.png)

### 檔案管理注意事項
現在table內的檔案路徑都改為cdn cache路徑，故每次建立草稿時，會先轉成 blob server 的路徑將檔案重新建立後，再轉回 cdn cache 存回 table
 
### 料號特殊價管理
目前使用 Query String 方式新增特殊價, 程式碼已推到 dev site
 
### Page管理 (banner)更換
Banner 目前在table中不會進行刪除動作，因為每個語系只有四張圖，然後 table 內所有語系的banner也都有四筆，如果要下架banner，前端會將 url 清空，後端則是判斷 url 為空讓 active 為false
![](https://hackmd.io/_uploads/HymBJdR02.png)

### 後台DB整理
目前在 feature_db_adjust 分支，有清除一些table關聯，但目前還沒 merge 到 dev 分支
![](https://hackmd.io/_uploads/rkpvZ9RAh.png)

### 後台 Lead 加密
之前推過 dev site 一次，後續要進行加密的話，在 feature_backend-data-encryption 分支可直接使用
![](https://hackmd.io/_uploads/S1R9b9AA2.png)



## 新前台

### WebService License　使用
  - 使用 Fox Web Service 建立與更新 License
1.WebService 取得 Scada License param(可用postman)
[POST]https://download.advantech.com/Webservice/DownloadWS.asmx

#### request body(xml)
 ``` 參數說明
 LicenseSN : string(傳入License 的 SerialNumber) 
 Fileinformation : string(License param，為 webService 回傳參考欄位，給default值即可)
 FilePath : string(License url，為 webService 回傳參考欄位，給default值即可)
 Message : string(webService回傳訊息，回傳參考欄位，給default值即可) 
  ``` 

``` xml
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GetLicenseFileInfo xmlns="http://tempuri.org/">
      <LicenseSN>IAATEST105</LicenseSN>
      <Fileinformation>string</Fileinformation>
      <FilePath>string</FilePath>
      <Message>string</Message>
    </GetLicenseFileInfo>
  </soap12:Body>
</soap12:Envelope>
```
#### response (xml)
 ``` 參數說明
 Fileinformation : string(License param)
 FilePath : string(License url)
 Message : string(webService回傳訊息) 
  ``` 

``` xml
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <GetLicenseFileInfoResponse xmlns="http://tempuri.org/">
            <GetLicenseFileInfoResult>true</GetLicenseFileInfoResult>
            <Fileinformation>bw_key /S=IAATEST105 /M1=9 /M2=0 /T=0 /P=25153 /D=0 /R=0 /N=0 /O=0 /K=0 /NET=1 /SCHOOL=1 /ALARM=1 /RTDB=1 /EN=0 /RD=1 /DASH=1 /CNC=0 /BR=27 /BEMS=0 /SPMS=0 /LNC=0 /GD=1 /SC=1 /WAQ=1 /WPQ=1 /OEE=1 /MX=1</Fileinformation>
            <FilePath>https://downloadt.advantech.com/productfile/WebAccess/Upload/IAATEST105.zip</FilePath>
            <Message>string</Message>
        </GetLicenseFileInfoResponse>
    </soap:Body>
</soap:Envelope>
```
 - License Param (比較重要)

| Param | Desc | 
| -------- | -------- | 
| P     | Tag 數    |
| K     | 是否為 USB License     |
| NET     | 是否為 Internal License     |
| SC     | Saas Composer    |
| GD=1    | Dashboard Professional upgrade    |
| GD=2    | Dashboard Professional Full data source upgrade   |
| OEE    | OEE/UTE upgrade    |
| MX    | Millisecond upgrade    |
| BR    | WebAccesss/CNC Driver upgrade   |

如果 K 為 1 P > 0 (則為匯入 150 tag USB License)
如果 K 為 1 P = 0 (則為匯入 無限 tag USB License)
如果 NET 為 1 P > 0 (則為匯入 150 tag Internal License)
如果 NET 為 1 P = 0 (則為匯入 無限 tag Internal License)

response 中 Fileinformation 為 License 的 param，從 /M1=9 到底複製整串字串
response 中 FilePath 為 License 的 url

2.WebService 生成 Scada License(可用postman)
[POST]https://download.advantech.com/Webservice/DownloadWS.asmx

#### request body(xml)
 ``` 參數說明
 TID : string(傳入License 的 SerialNumber) 
 EncFile : string or 空字串(一般訂閱升級時，傳入此 License EncFile blobServer 的路徑) 
 Paramenters : string(傳入 Scada License param，從/M1=9 到底複製整串字串)
 KeyFilePath : string(License url，為 webService 回傳參考欄位，給default值即可) 
 Message : string(webService回傳訊息，回傳參考欄位，給default值即可) 
 ReturnCode : int(webService回傳代號，回傳參考欄位，給0即可) 
 UpdateFile : bool(有enc檔案，傳入false, 為License匯入後升級，傳入true) 
  ``` 
``` xml
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GeneratorLicenseV3 xmlns="http://tempuri.org/">
      <TID>IAATEST105</TID>
      <EncFile></EncFile>
      <Paramenters>/M1=9 /M2=0 /T=0 /P=25153 /D=0 /R=0 /N=0 /O=0 /K=0 /NET=1 /SCHOOL=1 /ALARM=1 /RTDB=1 /EN=0 /RD=1 /DASH=1 /CNC=0 /BR=27 /BEMS=0 /SPMS=0 /LNC=0 /GD=1 /SC=1 /WAQ=1 /WPQ=1 /OEE=1 /MX=1</Paramenters>
      <KeyFilePath>string</KeyFilePath>
      <Message>string</Message>
      <ReturnCode>0</ReturnCode>
      <UpdateFile>true</UpdateFile>
    </GeneratorLicenseV3>
  </soap12:Body>
</soap12:Envelope>
```
#### response (xml)
 ``` 參數說明
 KeyFilePath : string(License url，此處為http，如果要手動更新回table時，需要改為https) 
 Message : string(webService回傳訊息) 
 ReturnCode : int(webService回傳代號) 
  ``` 
``` xml
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <GeneratorLicenseV3Response xmlns="http://tempuri.org/">
            <GeneratorLicenseV3Result>true</GeneratorLicenseV3Result>
            <KeyFilePath>http://advantechfiles.blob.core.windows.net/wise-paas-marketplace/ActivatedLicense/IAATEST105.zip</KeyFilePath>
            <Message>Upload file IAATEST105.zip Success</Message>
            <ReturnCode>0</ReturnCode>
        </GeneratorLicenseV3Response>
    </soap:Body>
</soap:Envelope>
```
### 會員累積升等 API
- Reference
   - [SQL Reference](https://drive.google.com/drive/folders/1oo265EtSENZEYOnu_Lhu79_mlRxykez7?usp=sharing)

   - [Alick 提供資訊 Reference](https://steel-okapi-541.notion.site/32da0e85620b4291877bf11dd01ca09d?pvs=4
) 

- Table
   - 如下圖紅線標註所示（資料表目前只在測試站資料庫）
![](https://hackmd.io/_uploads/B1Br5sCCh.png)

- API
  - 取得即將過期點數資訊 [[GET] Expiration Point Info](https://advantech-curation.visualstudio.com/Marketplace/_wiki/wikis/Marketplace.wiki/621/-GET-Expiration-Point-Info) : 目前只完成API殼，底層 SQL 語法與處理邏輯待　Alick　提供
  
  - 取得累積金額資訊 [[GET] Accumulated Amount Info](https://advantech-curation.visualstudio.com/Marketplace/_wiki/wikis/Marketplace.wiki/605/-GET-Accumulated-Amount-Info) : API已完成
  
  - 取得儲值金兌換歷史紀錄 [[GET] Gift Value History](https://advantech-curation.visualstudio.com/Marketplace/_wiki/wikis/Marketplace.wiki/600/-GET-Gift-Value-History) : API已完成

  - 取得產品訂單歷史紀錄 [[GET] Billing History](https://advantech-curation.visualstudio.com/Marketplace/_wiki/wikis/Marketplace.wiki/470/-GET-Billing-History) : API已完成

  - 下載儲值金兌換歷史紀錄 [[GET] Download Gift Value History](https://advantech-curation.visualstudio.com/Marketplace/_wiki/wikis/Marketplace.wiki/600/-GET-Gift-Value-History) : API已完成

  - 下載產品訂單歷史紀錄 [[GET] Download Billing History](https://advantech-curation.visualstudio.com/Marketplace/_wiki/wikis/Marketplace.wiki/472/-GET-Download-Billing-History) : API已完成

**需要測試與 codeReview**，如下圖為分支
![](https://hackmd.io/_uploads/BJkFJ0CCn.png)

- 需要請　Alick　確認與後續要處理事情
   - 2024 年後過期的客戶會籍資訊，需要寫入主表 **WISE_PaaS_Member** 與**WISE_PaaS_MemberTransactionHistory**，目前　Alick　說會在 Siebel Reporting　開一張 View 表，然後就可以規劃轉資料的　SQL　與轉資料
 
   - 儲值金過期的 SQL Query 語法與程式處理邏輯，實作至　[[GET] Expiration Point Info] API 的底層　 

### Payment Notification API

  - 於 Payment Center 付款後回呼叫的 API，寄送訂單通知信 [[POST] Order Notification](https://advantech-curation.visualstudio.com/Marketplace/_wiki/wikis/Marketplace.wiki/623/-POST-Order-Notification) 

**需要測試與 codeReview**，如下圖為分支
![](https://hackmd.io/_uploads/Bkb-KjRRh.png)




