migrate to new git

This commit is contained in:
yiming committed 2025-08-29 01:27:25 +08:00
1 parent 946eb9961e
commit af2c152ef6
8623 files changed
+1000453 -1

No files matched your search

@@ -0,0 +1,574 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using PagedList;
using Newtonsoft.Json;
using System.Collections;
using DocumentFormat.OpenXml.Office2010.Excel;
using MyWeb;
// api/appfollower
//[ezAuthorize(Roles = "admin")]//群組:*
//[ezAuthorize]
//[RoutePrefix("api/appfollower")]
public class appFollowerController : ApiController
{
private Model.ezEntities _db = new Model.ezEntities();
// GET api/<controller>
public IEnumerable<Model.follower> Get()
{
var list = _db.followers.ToList();
if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
return list;
}
public IEnumerable<Model.follower> Get(int page, int pageSize = 10,
string sortBy="", bool sortDesc=false)
{
var list = _db.followers.OrderBy(o=>o.f_number).ToPagedList(page, pageSize);
if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
return list;
}
// GET api/<controller>/5
public Model.follower Get(int id)
{
var item = _db.followers.Where(q => q.num == id).FirstOrDefault();
//if (item == null) throw new HttpResponseException(HttpStatusCode.NotFound);
return item;
}
// POST api/<controller>
public void Post([FromBody] Model.follower item)
{
}
// PUT api/<controller>/5
public void Put(int id, [FromBody] Model.follower item)
{
}
// DELETE api/<controller>/5
public void Delete(int id)
{
var prod = _db.followers.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
if (prod != null)
{
prod.pro_order_detail.Clear(); // Clear 方法來清除相關聯的 Child 資料,針對選擇性關聯欄位,它就會自動將欄位值更新成 null。
prod.pro_order.Clear();
prod.leader = null;//清空leader
_db.followers.Remove(prod);
_db.SaveChanges();//執行
Model.admin_log admin_log = new Model.admin_log();
MyWeb.admin admin = new MyWeb.admin();//api裡不可以用MyWeb
if (admin.isLoign())
{
admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Follower, (int)Model.admin_log.Status.Delete, prod.f_number+prod.u_name);
}
}
}
[HttpDelete]
[Route("api/appfollower/Delete/{nums}")]
public void Delete(string nums)
{
if (!string.IsNullOrEmpty(nums))
{
var getDelItem = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s));
var prod = _db.followers.AsEnumerable().Where(q => getDelItem.Contains(q.num)).ToList();
if (prod.Count() > 0)
{
foreach (var item in prod)
{
foreach (var item2 in item.pro_order_detail1)
item2.from_id = null; //清空訂單明細的陽上報恩者from_id //f_num設定串聯刪除
foreach (var item2 in item.pro_order)
item2.introducer = null;
item.leader = null;//清空leader
}
_db.followers.RemoveRange(prod);
_db.SaveChanges();
Model.admin_log admin_log = new Model.admin_log();
MyWeb.admin admin = new MyWeb.admin();//api裡不可以用MyWeb
if (admin.isLoign())
{
admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Follower, (int)Model.admin_log.Status.Delete, admin_log.LogViewBtn(prod.Select(x => x.f_number + x.u_name).ToList()));
}
}
}
}
[HttpGet]
[Route("api/appfollower/count")]
public int Count()
{
var count = _db.followers.Count();
return count;
}
[HttpPost]
[Route("api/appfollower/GetList")]
public IHttpActionResult GetList([FromBody] Model.ViewModel.follower q,
int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
{
var qry = _db.followers.AsEnumerable();
if (!string.IsNullOrEmpty(q.f_number))
qry = qry.Where(o => o.f_number.Contains(q.f_number.Trim()));
if (!string.IsNullOrEmpty(q.u_name))
qry = qry.Where(o => o.u_name.Contains(q.u_name.Trim()));
if (q.birthday.HasValue)
qry = qry.Where(o => o.birthday >= q.birthday.Value);
if (q.birthday2.HasValue)
qry = qry.Where(o => o.birthday < Convert.ToDateTime(q.birthday2.Value).AddDays(1));
if (!string.IsNullOrEmpty(q.address))
qry = qry.Where(o => o.address !=null && o.address.Contains(q.address?.Trim()));
//if (q.num.HasValue && q.num.Value>0)
// qry = qry.Where(o => o.num==q.num.Value);
if (q.ept_self.HasValue && q.ept_self.Value )//排除自己
{
qry = qry.Where(o => o.num != q.num.Value);
}
if (!string.IsNullOrEmpty(q.country))
qry = qry.Where(o => o.country== q.country);
if (!string.IsNullOrEmpty(q.country2))
{
if (q.country2 == "1")
{
qry = qry.Where(o => o.country == "158");
}else if (q.country2 == "2")
{
qry = qry.Where(o => o.country != "158");
}
}
if (sortBy.Equals("f_number"))
{
if (sortDesc)
qry = qry.OrderByDescending(o => o.f_number);
else
qry = qry.OrderBy(o => o.f_number);
}
else if (sortBy.Equals("u_name"))
{
if (sortDesc)
qry = qry.OrderByDescending(o => o.u_name);
else
qry = qry.OrderBy(o => o.u_name);
}
else if (sortBy.Equals("identity_type_desc"))
{
if (sortDesc)
qry = qry.OrderByDescending(o => o.identity_type);
else
qry = qry.OrderBy(o => o.identity_type);
}
else if (sortBy.Equals("sex"))
{
if (sortDesc)
qry = qry.OrderByDescending(o => o.sex);
else
qry = qry.OrderBy(o => o.sex);
}
else if (sortBy.Equals("birthday"))
{
if (sortDesc)
qry = qry.OrderByDescending(o => o.birthday);
else
qry = qry.OrderBy(o => o.birthday);
}
else
qry = qry.OrderByDescending(o => o.num);
MyWeb.encrypt encrypt = new MyWeb.encrypt();
var tdesc = publicFun.enum_desc<Model.follower.type>();
var ret = new
{
list = qry.ToPagedList(page, pageSize).Select(x => new
{
num = x.num,
f_number = x.f_number,
u_name = x.u_name,
sex = x.sex,
birthday = x.birthday, //?.ToString("yyyy/MM/dd"),
birthday2 = publicFun.chagenDate(x.birthday), //?.ToString("yyyy/MM/dd"),
sign = Model.follower.chagenSign(x.birthday), //NULL??
sexagenary = Model.follower.sexagenary(x.birthday),
identity_type = x.identity_type,
//identity_type_string = Enum.GetName( typeof(Model.follower.type), x.identity_type),
//identity_type_string1 = ((Model.follower.type)(x.identity_type??0)).ToString(),
identity_type_desc = tdesc[x.identity_type ?? 1] ,//TryGetValue..
phone = x.phone,
phoneDes = encrypt.DecryptAutoKey(x.phone), //--MyWeb.function X
refugedate=x.refugedate,
refuge_name = x.refuge_name,
email = x.email,
address = x.address,
}),
count = qry.Count()
};
//日期轉字串: 如要用VUE做, 傳回date而不要tostring, 用filter + moment.js做
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
return Ok(ret);
}
[HttpPost]
[Route("api/appfollower/GetFamilyList")]
public IHttpActionResult GetFamilyList([FromBody] Model.ViewModel.follower q,
int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
{
int _follower = q.num.HasValue && q.num.Value > 0 ? q.num.Value : 0;
if (_follower > 0)
{
//家族 : 家長是我的人,跟我同家長的人,我的家長本人,我本人
//var cc = _db.followers.AsEnumerable().Where(x => x.num == 103 || x.leader == 103).Select(x => x.num);
//var aa = _db.followers.Where(x => x.num == 103 || x.leader == 103).Select(x => x.num);
//var bb = _db.followers.Where(i => aa.Any(x => x == i.num) || aa.Any(x => x == i.leader)).ToList();
int myLeader = _db.followers.Where(x => x.num == _follower).Select(x => x.leader??0).FirstOrDefault(); //我的家長
var cc = _db.followers.Where(x => x.num == _follower || x.leader == _follower).Select(x => x.num);
//var qry =
//from c in foDt
//where c.leader == _follower ||
// ((from o in foDt
// where o.num == _follower
// select o.leader).Contains(c.leader) && c.leader != null) ||
// (from o in foDt
// where o.num == _follower
// select o.leader).Contains(c.num) ||
// c.num == _follower
//select c;
if (q.ept_self.HasValue && q.ept_self.Value) //排除自己
{
//qry =
//from c in foDt
//where c.leader == _follower ||
// ((from o in foDt
// where o.num == _follower
// select o.leader).Contains(c.leader) && c.leader != null)
// && c.num != _follower
//select c;
if (myLeader > 0)//有家長
{
//跟我同家長的人
cc = _db.followers.Where(x => x.num != _follower && (x.leader == _follower || x.leader == myLeader)).Select(x => x.num);
}
else
{
cc = _db.followers.Where(x => x.num != _follower && x.leader == _follower).Select(x => x.num);
}
}
//int ccc = cc.Count();
var qry = _db.followers.AsEnumerable().Where(f => cc.Any(x => x == f.num) || cc.Any(x => x == f.leader));
if (!string.IsNullOrEmpty(q.f_number))
qry = qry.Where(o => o.f_number.Contains(q.f_number.Trim()));
if (!string.IsNullOrEmpty(q.u_name))
qry = qry.Where(o => o.u_name.Contains(q.u_name.Trim()));
if (q.birthday.HasValue)
qry = qry.Where(o => o.birthday >= q.birthday.Value);
if (q.birthday2.HasValue)
qry = qry.Where(o => o.birthday < Convert.ToDateTime(q.birthday2.Value).AddDays(1));
if (!string.IsNullOrEmpty(q.address))
qry = qry.Where(o => o.address.Contains(q.address.Trim()));
qry = qry.OrderByDescending(o => o.num);
MyWeb.encrypt encrypt = new MyWeb.encrypt();
var tdesc = publicFun.enum_desc<Model.follower.type>();
int i = 1;
var ret = new
{
list = qry.ToPagedList(page, pageSize).Select(x => new
{
id = i++,
num = x.num,
f_number = x.f_number,
u_name = x.u_name,
address = x.address,
birthday = x.birthday,
phone = x.phone,
phoneDes = encrypt.DecryptAutoKey(x.phone),
demo = x.demo,
identity_type_desc = tdesc[x.identity_type ?? 1],
f_num_selected = new
{
text = x.u_name,
val = x.num,
},
//data_tmp = new //tmp 暫存用
//{
// f_num_selected = new
// {
// text = x.u_name,
// val = x.num,
// },
// identity_type_desc = tdesc[x.identity_type ?? 1],
// birthday = x.birthday,
// phoneDes = encrypt.DecryptAutoKey(x.phone),
// demo = x.demo,
//},
appellation_id_selected = new
{
text = x.appellation?.title,
val = x.appellation_id,
},
}),
count = qry.Count()
};
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
return Ok(ret);
}
else
{
return Ok("此訂單沒有姓名/名稱");
}
}
[HttpPost]
[Route("api/appfollower/familySave")]
public IHttpActionResult SaveDetailData([FromBody] Model.ViewModel.follower item)
{
if (item.leader.HasValue && item.leader.Value > 0 && item.f_num.HasValue && item.f_num.Value > 0)
{
if (item.num.HasValue && item.num.Value > 0)
{
//原先就有設定家長 , -> 家人 :不變 or 變更
if (item.num.Value == item.f_num.Value)
{
//變更其家人稱謂
Model.follower _data = _db.followers.Where(q => q.num == item.f_num.Value).FirstOrDefault();//修改
if (_data != null)
{
_data.appellation_id = item.appellation_id.Value;
_db.SaveChanges();
var ret = _data.num;
return Ok(ret);
}
else
return NotFound();
}
else
{
//移除原先的家長設定
Model.follower _data2 = _db.followers.Where(q => q.num == item.num.Value).FirstOrDefault();//修改
if (_data2 != null)
{
_data2.leader = null;
_data2.appellation_id = null;
_db.SaveChanges();
}
//變更其家長設定
Model.follower _data = _db.followers.Where(q => q.num == item.f_num.Value).FirstOrDefault();//修改
if (_data != null)
{
_data.leader = item.leader.Value;
_data.appellation_id = item.appellation_id.Value;
_db.SaveChanges();
var ret = _data.num;
return Ok(ret);
}
else
return NotFound();
}
}
else
{
//新增家人
//變更其家長設定
Model.follower _data = _db.followers.Where(q => q.num == item.f_num.Value).FirstOrDefault();//修改
if (_data != null)
{
_data.leader = item.leader.Value;
_data.appellation_id = item.appellation_id.Value;
_db.SaveChanges();
var ret = _data.num;
return Ok(ret);
}
else
return NotFound();
}
}
else
{
return NotFound();
}
}
[HttpPost]
[Route("api/appfollower/familyDelete")]
public IHttpActionResult familyDelete([FromBody] Model.ViewModel.follower item)
{
if (item.leader.HasValue && item.leader.Value > 0 && item.num.HasValue && item.num.Value > 0)
{
//移除原先的家長設定
Model.follower _data2 = _db.followers.Where(q => q.num == item.num.Value).FirstOrDefault();//修改
if (_data2 != null)
{
_data2.leader = null;
_db.SaveChanges();
return Ok();
}
else
return NotFound();
}
else
{
return NotFound();
}
}
[HttpPost]
[Route("api/appfollower/GetTabletList")]
public IHttpActionResult GetTabletList([FromBody] Model.follower q,
int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
{
int _follower = q.num;
pageSize = (pageSize < 0) ? 0 : pageSize;
if (_follower > 0)
{
var qry = _db.followers_tablet.AsEnumerable().Where(x=>( x.f_num??0) == _follower);
qry = qry.OrderByDescending(o => o.num);
int i = 1;
var ret = new
{
list = qry.ToPagedList(page, pageSize).Select(x => new
{
id = i++,
num = x.num,
f_num = x.f_num,
type = x.type,
title = x.title,
}),
count = qry.Count()
};
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
return Ok(ret);
}
return NotFound();
}
[HttpPost]
[Route("api/appfollower/tabletSave")]
public IHttpActionResult tabletSave([FromBody] Model.ViewModel.followers_tablet item)
{
if (item.num.HasValue && item.num.Value > 0)
{
//變更
Model.followers_tablet _data = _db.followers_tablet.Where(q => q.num == item.num.Value).FirstOrDefault();//修改
if (_data != null)
{
_data.type = item.type;
_data.title = item.title;
_db.SaveChanges();
var ret = _data.num;
return Ok(ret);
}
else
return NotFound();
}
else
{
//新增
Model.followers_tablet _data = new Model.followers_tablet();
_data.f_num = item.f_num;
_data.type = item.type;
_data.title = item.title;
_db.followers_tablet.Add(_data);
_db.SaveChanges();
var ret = _data.num;
return Ok(ret);
}
}
[HttpDelete]
[Route("api/appfollower/tabletDelete/{id}")]
public void tabletDelete(int id)
{
var prod = _db.followers_tablet.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
if (prod != null)
{
_db.followers_tablet.Remove(prod);
_db.SaveChanges();//執行
}
}
[HttpPost]
[Route("api/appfollower/checkHashFollower")]
public IHttpActionResult CheckHashFollower([FromBody] Model.ViewModel.follower q)
{
if (q == null || string.IsNullOrEmpty(q.phone) || string.IsNullOrEmpty(q.id_code))
{
return BadRequest("Invalid input");
}
// Pass phone and idcode to encrypt.cs to get the followerHash
encrypt enc = new encrypt();
string followerHash = enc.followerHash(q.phone, q.id_code);
// Query the database for followers where follower_hash == followerHash
var follower = _db.followers.FirstOrDefault(f => f.follower_hash == followerHash);
// Return the follower or null
return Ok(follower);
}
}
@@ -0,0 +1,237 @@
# appapi/appfollower (信眾管理)
```C#
[RoutePrefix("api/appfollower")]
public class appFollowerController : ApiController
```
## Get()
### 介面
``` C#
public IEnumerable<Model.follower> Get()
```
取得所有信眾資料列表
### 傳回
``` C#
IEnumerable<Model.follower>
```
### 介面
``` C#
public IEnumerable<Model.follower> Get
(int page, int pageSize = 10,
string sortBy="", bool sortDesc=false)
```
取得指定分頁信眾資料列表
### 傳回
``` C#
IEnumerable<Model.follower>
```
### 介面
``` C#
// GET appapi/<controller>/5
public Model.follower Get(int id)
```
依ID取得指定單筆信眾
### 傳回
``` C#
Model.follower
```
## Post()
### 介面
``` C#
// POST appapi/<controller>
public void Post([FromBody] Model.follower item)
```
新增信眾
### 傳回
``` C#
```
## Put()
### 介面
``` C#
// PUT appapi/<controller>/5
public void Put(int id, [FromBody] Model.follower item)
```
修改信眾
### 傳回
``` C#
```
## Delete()
### 介面
``` C#
// DELETE appapi/<controller>/5
public void Delete(int id)
```
刪除指定ID信眾
### 傳回
``` C#
```
## [HttpDelete] api/appfollower/Delete/{nums}
### 介面
``` C#
[HttpDelete]
[Route("api/appfollower/Delete/{nums}")]
public void Delete(string nums)
```
刪除指定信眾編號信眾
### 傳回
``` C#
```
## [HttpGet] api/appfollower/count
### 介面
``` C#
[HttpGet]
[Route("api/appfollower/count")]
public int Count()
```
傳回筆數
### 傳回
``` C#
int
```
## [HttpPost] api/appfollower/GetList
### 介面
``` C#
[HttpPost]
[Route("api/appfollower/GetList")]
public IHttpActionResult GetList(
[FromBody] Model.ViewModel.follower q,
int page, int pageSize = 10,
string sortBy = "", bool sortDesc = false)
```
對信眾資料:分頁查詢, 排序, 傳回列表
### 傳回
``` C#
{
list = IEnumerable<Model.follower>, //分頁列表
count = int //筆數
}
```
<!--
## [HttpPost] api/appfollower/GetFamilyList
### 介面
``` C#
[HttpPost]
[Route("api/appfollower/GetFamilyList")]
public IHttpActionResult GetFamilyList([FromBody] Model.ViewModel.follower q,
qry = qry.OrderByDescending(o => o.num);
MyWeb.encrypt encrypt = new MyWeb.encrypt();
var tdesc = publicFun.enum_desc<Model.follower.type>();
```
取得指定信眾的家人資訊
### 傳回
``` C#
IEnumerable<Model.follower>
```
## [HttpPost] api/appfollower/familySave
### 介面
``` C#
[HttpPost]
[Route("api/appfollower/familySave")]
public IHttpActionResult SaveDetailData([FromBody] Model.ViewModel.follower item)
```
取得指定信眾的家人資訊
### 傳回
``` C#
```
## [HttpPost] api/appfollower/familyDelete
### 介面
``` C#
[HttpPost]
[Route("api/appfollower/familyDelete")]
public IHttpActionResult familyDelete([FromBody] Model.ViewModel.follower item)
```
移陁指定信眾的家人資訊
### 傳回
``` C#
```
-->
## [HttpPost] api/appfollower/GetTabletList
### 介面
``` C#
[HttpPost]
[Route("api/appfollower/GetTabletList")]
public IHttpActionResult GetTabletList([FromBody] Model.follower q,
int page, int pageSize = 10,
string sortBy = "", bool sortDesc = false)
```
取得牌位資訊
### 傳回
``` C#
List of: new
{
id = i++,
num = x.num,
f_num = x.f_num,
type = x.type, //型式
title = x.title, //標題
})
```
## [HttpPost] api/appfollower/tabletSave
### 介面
``` C#
[HttpPost]
[Route("api/appfollower/tabletSave")]
public IHttpActionResult tabletSave([FromBody] Model.ViewModel.followers_tablet item)
```
儲存牌位資訊
### 傳回
``` C#
int //牌位編號
```
## [HttpDelete] api/appfollower/tabletDelete/{id}
### 介面
``` C#
[HttpDelete]
[Route("api/appfollower/tabletDelete/{id}")]
public void tabletDelete(int id)
```
刪除牌位資訊
### 傳回
``` C#
```
## [HttpPost] CheckHashFollower
### 介面
``` C#
[HttpPost]
[Route("api/appfollower/checkHashFollower")]
public IHttpActionResult CheckHashFollower([FromBody] Model.ViewModel.follower q)
```
取得用戶資訊
### 傳回
``` C#
```
### 例:
#### Request:
```
curl --location 'http://<SERVER_URL>/api/appfollower/checkHashFollower' \
--header 'Content-Type: application/json' \
--data '{
"phone":"0987456321",
"id_code":"A123456789"
}'
```
#### Response:
JSON: 用戶資訊, 可討論只要哪些欄位
File diff suppressed because it is too large. Load diff
+366
View File
@@ -0,0 +1,366 @@
# appapi/apporder (報名管理)
### 介面
``` C#
public class apporderController : ApiController
```
## Get()
### 介面
```
// GET appapi/<controller>
public IEnumerable<Model.pro_order> Get()
```
取得全部報名資料列表
### 傳回
``` C#
IEnumerable<Model.pro_order>
```
### 介面
``` C#
public IEnumerable<Model.pro_order> Get(int page, int pageSize = 10,
string sortBy="", bool sortDesc=false)
```
取得指定分頁報名資料列表
### 傳回
``` C#
IEnumerable<Model.pro_order>
```
### 介面
``` C#
// GET appapi/<controller>/5
public Model.pro_order Get(string id)
```
取得指定ID(報名編號)分頁報名
### 傳回
``` C#
Model.pro_order
```
## Post()
### 介面
``` C#
// POST appapi/<controller>
public void Post([FromBody] Model.pro_order item)
```
新增報名資料
### 傳回
``` C#
void
```
## Put()
### 介面
``` C#
// PUT appapi/<controller>/5
public void Put(int id, [FromBody] Model.pro_order item)
```
修改報名資料
### 傳回
``` C#
```
## Delete()
### 介面
``` C#
// DELETE appapi/<controller>/5
public void Delete(string id)
```
刪除指定ID(報名編號)報名資料(主檔)
### 傳回
``` C#
```
## [HttpDelete] api/apporder/DeleteItem/{id}
### 介面
``` C#
[HttpDelete]
[Route("api/apporder/DeleteItem/{id}")]
public void DeleteDetail(int id) //刪除訂單明細
```
刪除指定ID(報名編號)報名資料(明細)
### 傳回
``` C#
```
## [HttpDelete] api/apporder/DeleteAll/{nums}
### 介面
``` C#
[HttpDelete]
[Route("api/apporder/DeleteAll/{nums}")]
public void DeleteAll(string nums)
```
刪除指定ID(報名編號)報名資料(整筆)
### 傳回
``` C#
```
## [HttpGet] api/apporder/count
### 介面
``` C#
[HttpGet]
[Route("api/apporder/count")]
public int Count()
```
傳回筆數
### 傳回
``` C#
int
```
## [HttpPost] api/apporder/GetList
### 介面
``` C#
[HttpPost]
[Route("api/apporder/GetList")]
public IHttpActionResult GetList([FromBody] Model.ViewModel.pro_order q,
int page, int pageSize = 10,
string sortBy = "", bool sortDesc = false)
```
對報名資料:分頁查詢, 排序, 傳回列表
### 傳回
``` C#
{
list = IEnumerable<Model.pro_order>, //分頁列表
count = int //筆數
}
```
## [HttpPost] api/apporder/GetItemList
### 介面
``` C#
[HttpPost]
[Route("api/apporder/GetItemList")]
public IHttpActionResult GetItemList(
[FromBody] Model.ViewModel.pro_order_detail q,
int page, int pageSize = 10,
string sortBy = "", bool sortDesc = false)
```
取得報名明細
### 傳回
``` C#
new{
list = List of pro_order_detail
count = int
}
```
## [HttpPost] api/apporder/SaveDetailData
### 介面
``` C#
[HttpPost]
[Route("api/apporder/SaveDetailData")]
public IHttpActionResult SaveDetailData([FromBody] Model.pro_order_detail item)
```
儲存報名明細
### 傳回
``` C#
new
{
num = order.num,
customize_data = order.customize_data,
}
```
## [HttpPost] api/apporder/GetUnpayList
### 介面
``` C#
[HttpPost]
[Route("api/apporder/GetUnpayList")]
public IHttpActionResult GetUnpayList([FromBody] Model.ViewModel.follower q,
string order_no , int page, int pageSize = 10,
string sortBy = "", bool sortDesc = false)
```
傳回未付款的訂單列表
### 傳回
``` C#
new
{
list = List of new
{
id ,
order_no ,
up_time ,
reg_time ,
f_num ,
u_name ,
totalPrice , //訂單金額
payPrice = , //已收金額
}),
count = orderDt.Count(),
}
```
## [HttpPost] api/apporder/GetUnpayDetail
### 介面
``` C#
[HttpPost]
[Route("api/apporder/GetUnpayDetail")]
public IHttpActionResult GetUnpayDetail([FromBody] Model.ViewModel.pro_order q,
int page, int pageSize = 10,
string sortBy = "", bool sortDesc = false)
```
傳回未付款的訂單明細
### 傳回
``` C#
new {
list = List of new {
id,
order_no,
actItem_num,
actItem_numTxt,
f_num,
u_name,
price, //訂單金額
pay, //已收金額
},
count = unpayDt.Count(),
}
```
##
### 介面
``` C#
[HttpGet]
[Route("api/apporder/printFileLog/{num}/{detail}")]
public IHttpActionResult printFileLog(int num , int detail)
```
更新已列印記錄
### 傳回
``` C#
order.printed_files //已列印記錄
```
## [HttpPost] api/apporder/printMultiFileLog
### 介面
``` C#
[HttpPost]
[Route("api/apporder/printMultiFileLog")]
public IHttpActionResult printMultiFileLog([FromBody] List<int> list,
int item, int file)
```
更新多筆列印記錄
### 傳回
``` C#
```
## [HttpGet] api/apporder/copyDetailData/{num}/{qty}
### 介面
``` C#
[HttpGet]
[Route("api/apporder/copyDetailData/{num}/{qty}")]
public IHttpActionResult copyDetailData(int num, int qty)
```
複製指定的報名項目
### 傳回
``` C#
```
## [HttpPost] api/apporder/GetPastOrderList
### 介面
``` C#
[HttpPost]
[Route("api/apporder/GetPastOrderList")]
public IHttpActionResult GetPastOrderList([FromBody] Model.pro_order q,
int page, int pageSize = 10,
string sortBy = "", bool sortDesc = false)
```
複製以往報名
### 傳回
``` C#
new
{
list = List of new
{
id,
num,
order_no,
up_time,
activity_selected = new
{
text,
val,
},
actitem_num_selected = new
{
text,
val,
},
}),
count = qry.Count(),
}
```
<!--
-->
## [HttpPost] api/apporder/copyMultiPastItem
### 介面
``` C#
[HttpPost]
[Route("api/apporder/copyMultiPastItem")]
public IHttpActionResult copyMultiPastItem([FromBody] List<int> list,
string order_no)
```
複製以往報名(勾選多筆)
### 傳回
``` C#
```
## [HttpPost] api/apporder/GetPayOrderList
### 介面
``` C#
[HttpPost]
[Route("api/apporder/GetPayOrderList")]
public IHttpActionResult GetPayOrderList([FromBody] Model.pro_order_record q,
int page, int pageSize = 10,
string sortBy = "", bool sortDesc = false)
```
收款註記
### 傳回
``` C#
new
{
list = List of new
{
id ,
num ,
order_no ,
pay_date ,
payment_selected = new
{
text,
val ,
},
price,
organization,
bank_code,
}),
count,
}
```
## [HttpDelete] api/apporder/DeleteRecordDetail/{id}")]
刪除收款註記
### 介面
``` C#
[HttpDelete]
[Route("api/apporder/DeleteRecordDetail/{id}")]//刪除收款註記
public void DeleteRecordDetail(int id)
```
### 傳回
``` C#
```
## [HttpPost] api/apporder/SaveRecordDetail
### 介面
``` C#
[HttpPost]
[Route("api/apporder/SaveRecordDetail")]
public IHttpActionResult SaveRecordDetail([FromBody] Model.pro_order_record item)
```
儲存收款紀錄
### 傳回
``` C#
```
+44
View File
@@ -0,0 +1,44 @@
<!DOCTYPE html>
<!-- saved from url=(0082)file:///C:/Users/yiming/AppData/Local/Temp/crossnote202443-15036-1ivgf3z.h1za.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./index_files/katex.min.css">
<style>
code[class*=language-],pre[class*=language-]{color:#333;background:0 0;font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.4;-moz-tab-size:8;-o-tab-size:8;tab-size:8;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:.8em;overflow:auto;border-radius:3px;background:#f5f5f5}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal;background:#f5f5f5}.token.blockquote,.token.comment{color:#969896}.token.cdata{color:#183691}.token.doctype,.token.macro.property,.token.punctuation,.token.variable{color:#333}.token.builtin,.token.important,.token.keyword,.token.operator,.token.rule{color:#a71d5d}.token.attr-value,.token.regex,.token.string,.token.url{color:#183691}.token.atrule,.token.boolean,.token.code,.token.command,.token.constant,.token.entity,.token.number,.token.property,.token.symbol{color:#0086b3}.token.prolog,.token.selector,.token.tag{color:#63a35c}.token.attr-name,.token.class,.token.class-name,.token.function,.token.id,.token.namespace,.token.pseudo-class,.token.pseudo-element,.token.url-reference .token.variable{color:#795da3}.token.entity{cursor:help}.token.title,.token.title .token.punctuation{font-weight:700;color:#1d3e81}.token.list{color:#ed6a43}.token.inserted{background-color:#eaffea;color:#55a532}.token.deleted{background-color:#ffecec;color:#bd2c00}.token.bold{font-weight:700}.token.italic{font-style:italic}.language-json .token.property{color:#183691}.language-markup .token.tag .token.punctuation{color:#333}.language-css .token.function,code.language-css{color:#0086b3}.language-yaml .token.atrule{color:#63a35c}code.language-yaml{color:#183691}.language-ruby .token.function{color:#333}.language-markdown .token.url{color:#795da3}.language-makefile .token.symbol{color:#795da3}.language-makefile .token.variable{color:#183691}.language-makefile .token.builtin{color:#0086b3}.language-bash .token.keyword{color:#0086b3}pre[data-line]{position:relative;padding:1em 0 1em 3em}pre[data-line] .line-highlight-wrapper{position:absolute;top:0;left:0;background-color:transparent;display:block;width:100%}pre[data-line] .line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:hsla(24,20%,50%,.08);background:linear-gradient(to right,hsla(24,20%,50%,.1) 70%,hsla(24,20%,50%,0));pointer-events:none;line-height:inherit;white-space:pre}pre[data-line] .line-highlight:before,pre[data-line] .line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:hsla(24,20%,50%,.4);color:#f4f1ef;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px #fff}pre[data-line] .line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}html body{font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;font-size:16px;line-height:1.6;color:#333;background-color:#fff;overflow:initial;box-sizing:border-box;word-wrap:break-word}html body>:first-child{margin-top:0}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{line-height:1.2;margin-top:1em;margin-bottom:16px;color:#000}html body h1{font-size:2.25em;font-weight:300;padding-bottom:.3em}html body h2{font-size:1.75em;font-weight:400;padding-bottom:.3em}html body h3{font-size:1.5em;font-weight:500}html body h4{font-size:1.25em;font-weight:600}html body h5{font-size:1.1em;font-weight:600}html body h6{font-size:1em;font-weight:600}html body h1,html body h2,html body h3,html body h4,html body h5{font-weight:600}html body h5{font-size:1em}html body h6{color:#5c5c5c}html body strong{color:#000}html body del{color:#5c5c5c}html body a:not([href]){color:inherit;text-decoration:none}html body a{color:#08c;text-decoration:none}html body a:hover{color:#00a3f5;text-decoration:none}html body img{max-width:100%}html body>p{margin-top:0;margin-bottom:16px;word-wrap:break-word}html body>ol,html body>ul{margin-bottom:16px}html body ol,html body ul{padding-left:2em}html body ol.no-list,html body ul.no-list{padding:0;list-style-type:none}html body ol ol,html body ol ul,html body ul ol,html body ul ul{margin-top:0;margin-bottom:0}html body li{margin-bottom:0}html body li.task-list-item{list-style:none}html body li>p{margin-top:0;margin-bottom:0}html body .task-list-item-checkbox{margin:0 .2em .25em -1.8em;vertical-align:middle}html body .task-list-item-checkbox:hover{cursor:pointer}html body blockquote{margin:16px 0;font-size:inherit;padding:0 15px;color:#5c5c5c;background-color:#f0f0f0;border-left:4px solid #d6d6d6}html body blockquote>:first-child{margin-top:0}html body blockquote>:last-child{margin-bottom:0}html body hr{height:4px;margin:32px 0;background-color:#d6d6d6;border:0 none}html body table{margin:10px 0 15px 0;border-collapse:collapse;border-spacing:0;display:block;width:10Line truncated
/* Please visit the URL below for more information: */
/* https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css */
</style>
<!-- The content below will be included at the end of the <head> element. --><script type="text/javascript">
document.addEventListener("DOMContentLoaded", function () {
// your code here
});
</script></head><body for="html-export">
<div class="crossnote markdown-preview ">
<h1 id="17168-api-dooc">17168 API DOOC </h1>
<ul>
<li><a href="file:///D:/dev/ez/17168erp/App_Code/appapi/appFollowerController.html">信眾API</a></li>
<li><a href="file:///D:/dev/ez/17168erp/App_Code/appapi/apporderController.html.html">報名API</a></li>
</ul>
</div>
</body></html>
+4
View File
@@ -0,0 +1,4 @@
# 17168 API DOOC
* [信眾API](./appFollowerController.html)
* [報名API](./apporderController.html.html)
+1
View File
@@ -0,0 +1 @@
@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.9"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1pxLine truncated