足力健后端,使用.netcore版本,合并1个项目使用

OrderController.cs 117KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488
  1. /* =============================================
  2. -- Author: <Author,,zhangkun>
  3. -- Create date: <Create Date,,20200618>
  4. -- Description: <Description,,订单相关操作)>
  5. -- ============================================*/
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Common;
  9. using System.Common.Helpers;
  10. using System.Data;
  11. using System.IRepositories;
  12. using System.IRepositories.Bus;
  13. using System.Linq;
  14. using System.Linq.Expressions;
  15. using System.Model;
  16. using System.Model.Bus;
  17. using System.Repositories;
  18. using System.Security.Claims;
  19. using System.Threading.Tasks;
  20. using System.Utility.Http;
  21. using Microsoft.AspNetCore.Mvc;
  22. using Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure;
  23. using Microsoft.Extensions.Configuration;
  24. using SqlSugar;
  25. using TVShoppingCallCenter_ZLJ.Models.Inputs;
  26. namespace TVShoppingCallCenter_ZLJ.Controllers.Order
  27. {
  28. [Route("api/[controller]")]
  29. public class OrderController : BaseController
  30. {
  31. private readonly IBus_OrderDetailRepository bus_OrderDetailRepository;
  32. private readonly IBus_OrderRepository bus_OrderRepository;
  33. private readonly ISys_MarketingRepository bus_MarketingRepository;
  34. private readonly IBus_ProductRepository bus_productRepository;
  35. private readonly ICus_VipInfoRepository cus_vip_infoRepository;
  36. private readonly IBus_StockLogRepository bus_StockLogRepository;
  37. private readonly ICus_ScoreSetRepository cus_score_setRepository;
  38. private readonly IBus_OrderMoneyRepository busOrderMoneyRepository;
  39. private readonly IConfiguration config;
  40. private readonly IBus_AfterSaleRepository busAfterSaleRepository;
  41. private readonly IBus_OrderlogsRepository busOrderlogsRepository;
  42. private readonly OrderFunctionController busOrderFunctionController;
  43. public OrderController(IBus_OrderMoneyRepository _busOrderMoneyRepository,OrderFunctionController _OrderFunctionController,ICus_ScoreSetRepository _cus_score_setRepository, IBus_StockLogRepository _bus_StockLogRepository, IBus_OrderRepository _bus_OrderRepository, IBus_OrderDetailRepository _bus_OrderDetailRepository, ISys_MarketingRepository _bus_MarketingRepository, IBus_ProductRepository _productRepository, ICus_VipInfoRepository _cus_vip_infoRepository, IConfiguration _configuration, IBus_AfterSaleRepository _busAfterSaleRepository, IBus_OrderlogsRepository _busOrderlogsRepository)
  44. {
  45. bus_OrderDetailRepository = _bus_OrderDetailRepository;
  46. bus_OrderRepository = _bus_OrderRepository;
  47. bus_MarketingRepository = _bus_MarketingRepository;
  48. bus_productRepository = _productRepository;
  49. cus_vip_infoRepository = _cus_vip_infoRepository;
  50. bus_StockLogRepository = _bus_StockLogRepository;
  51. cus_score_setRepository = _cus_score_setRepository;
  52. config = _configuration;
  53. busOrderFunctionController = _OrderFunctionController;
  54. busOrderMoneyRepository = _busOrderMoneyRepository;
  55. busAfterSaleRepository = _busAfterSaleRepository;
  56. busOrderlogsRepository = _busOrderlogsRepository;
  57. }
  58. #region
  59. /// <summary>
  60. /// 创建订单
  61. /// </summary>
  62. /// <param name="input"></param>
  63. /// <returns></returns>
  64. // [HttpPost("addorder")]
  65. /**public async Task<IActionResult> AddOrder([FromBody]OrderInput input)
  66. {
  67. try {
  68. T_Cus_VipInfo modelvip = new T_Cus_VipInfo();
  69. #region 验证参数 必填项
  70. if (string.IsNullOrEmpty(input.F_ADFrom))
  71. return Error("请输入选择广告来源");
  72. if (string.IsNullOrEmpty(input.F_Type))
  73. return Error("请输入选择订单类型");
  74. if (string.IsNullOrEmpty(input.F_Id))
  75. return Error("请输入订单编号");
  76. if (string.IsNullOrEmpty(input.F_Customer))
  77. return Error("请输入客户姓名");
  78. if (string.IsNullOrEmpty(input.F_CustomerPhone))
  79. return Error("请输入客户电话");
  80. if (input.F_Type=="售后订单")
  81. return Error("售后订单只能根据售后单自动创建");
  82. #endregion
  83. int exist = await bus_OrderRepository.GetCount(q => q.F_Id == input.F_Id);
  84. if (exist > 0)
  85. {
  86. return Error("此订单号已存在");
  87. }
  88. T_Bus_Order modelOrder = new T_Bus_Order();
  89. #region 订单属性
  90. //必填
  91. modelOrder.F_ADFrom = input.F_ADFrom;
  92. modelOrder.F_Type = input.F_Type;
  93. modelOrder.F_Id = input.F_Id;
  94. modelOrder.F_Customer = input.F_Customer;
  95. modelOrder.F_CustomerPhone = input.F_CustomerPhone;
  96. if (input.F_RecommendId>0)
  97. {
  98. modelOrder.F_RecommendId = input.F_RecommendId;
  99. modelOrder.F_RecommendName = input.F_RecommendName;
  100. }
  101. if (input.F_CustomerType > 0)
  102. { modelOrder.F_CustomerType = input.F_CustomerType; }
  103. if (!string.IsNullOrEmpty(input.F_CustomerTel))
  104. { modelOrder.F_CustomerTel = input.F_CustomerTel; }
  105. //选填 快递属性
  106. modelOrder.F_TrackingNo = "";
  107. if (!string.IsNullOrEmpty(input.F_Addressee))
  108. { modelOrder.F_Addressee = input.F_Addressee; }
  109. if (!string.IsNullOrEmpty(input.F_AddPhone))
  110. { modelOrder.F_AddPhone = input.F_AddPhone; }
  111. if (!string.IsNullOrEmpty(input.F_AddProvince))
  112. { modelOrder.F_AddProvince = input.F_AddProvince; }
  113. if (!string.IsNullOrEmpty(input.F_AddCity))
  114. { modelOrder.F_AddCity = input.F_AddCity; }
  115. if (!string.IsNullOrEmpty(input.F_AddArea))
  116. { modelOrder.F_AddArea = input.F_AddArea; }
  117. if (!string.IsNullOrEmpty(input.F_AddTown))
  118. { modelOrder.F_AddTown = input.F_AddTown; }
  119. if (!string.IsNullOrEmpty(input.F_AddDes))
  120. { modelOrder.F_AddDes = input.F_AddDes; }
  121. if (!string.IsNullOrEmpty(input.F_Address))
  122. { modelOrder.F_Address = input.F_Address; }
  123. if (!string.IsNullOrEmpty(input.F_PostalCode))
  124. { modelOrder.F_PostalCode = input.F_PostalCode; }
  125. if (!string.IsNullOrEmpty(input.F_Express))
  126. { modelOrder.F_Express = input.F_Express; }
  127. if (!string.IsNullOrEmpty(input.F_Remark))
  128. { modelOrder.F_Remark = input.F_Remark; }
  129. if (!string.IsNullOrEmpty(input.F_PayType))
  130. { modelOrder.F_PayType = input.F_PayType; }
  131. if
  132. (input.F_VipId > 0)
  133. { modelOrder.F_VipId = input.F_VipId; }
  134. else
  135. {
  136. var vip = await cus_vip_infoRepository.GetListALL(x => x.F_Phone == input.F_CustomerPhone
  137. && x.F_State == 1);
  138. if (vip != null && vip.Count > 0)
  139. modelOrder.F_VipId = vip.FirstOrDefault().F_ID;
  140. else
  141. modelOrder.F_VipId = 0;
  142. }
  143. if (input.F_Belong > 0)
  144. {
  145. modelOrder.F_Belong = input.F_Belong;
  146. modelOrder.F_BelongName = input.F_BelongName;
  147. }
  148. else
  149. {
  150. modelOrder.F_Belong = UserLogin.UserId.ObjToInt();
  151. modelOrder.F_BelongName = UserLogin.UserName;
  152. }
  153. modelOrder.F_ExpressFee = input.F_ExpressFee;
  154. modelOrder.F_Stock = input.F_Stock;
  155. modelOrder.F_RealPrice = input.F_RealPrice;
  156. modelOrder.F_UseScore = input.F_UseScore;
  157. //选填 关联属性
  158. modelOrder.F_State = input.F_State;
  159. modelOrder.F_Status = 0;
  160. //必须属性 系统生成
  161. modelOrder.F_AddTime = DateTime.Now;
  162. modelOrder.F_AddUser = UserLogin.UserId.ObjToInt();
  163. modelOrder.F_AddUserName = UserLogin.UserName;
  164. #endregion
  165. if (input.F_State == 1)
  166. {
  167. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  168. { }
  169. else
  170. { return Error("请选择订购商品"); }
  171. if (string.IsNullOrEmpty(input.F_Stock))
  172. {
  173. return Error("请选择出库货仓");
  174. }
  175. if (string.IsNullOrEmpty(modelOrder.F_Express))
  176. {
  177. return Error("快递不能为空");
  178. }
  179. if (string.IsNullOrEmpty(modelOrder.F_AddPhone))
  180. {
  181. return Error("收件人电话不能为空");
  182. }
  183. if (string.IsNullOrEmpty(modelOrder.F_AddTown))
  184. {
  185. return Error("收件人地址不能为空");
  186. }
  187. if (string.IsNullOrEmpty(modelOrder.F_Address))
  188. {
  189. return Error("收件人详细地址不能为空");
  190. }
  191. }
  192. decimal totle = 0.00M;
  193. decimal ActivityMoney = 0.00M;
  194. string UseActivity = "";
  195. string UseActivity4 = ",";
  196. string UseActivity2 = ",";
  197. List<T_Bus_OrderDetail> modelDetailList = new List<T_Bus_OrderDetail>();
  198. #region 订单详情列表核算
  199. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  200. {
  201. int n = 1;
  202. int n2 = input.OrderDetailList.Count + 1;
  203. #region 活动核算
  204. if (input.UseActList != null && input.UseActList.Count > 0)
  205. {
  206. //遍历所有选中的活动
  207. foreach (UseActInput act in input.UseActList)
  208. {
  209. UseActivity += act.id + ",";
  210. //满赠
  211. if (act.type == 1)
  212. {
  213. string[] productidlist = act.gift.Split(',');
  214. foreach (string giftid in productidlist)
  215. {
  216. T_Bus_Product m = await bus_productRepository.GetSingle(b => ("," + giftid + ",").Contains("," + b.F_ProductId + ",") && b.F_IsSale == 0);
  217. if (m != null)
  218. {
  219. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  220. modelDetail.F_ProductName = m.F_ProductName;
  221. modelDetail.F_ProductId = m.F_ProductId;
  222. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  223. modelDetail.F_OrderId = input.F_Id;
  224. modelDetail.F_Count = 1;
  225. modelDetail.F_Price = 0.00M;
  226. modelDetail.F_DealPrice = 0.00M;
  227. modelDetail.F_Sort = n2;
  228. modelDetail.F_Remark = "赠品-活动:" + act.id;
  229. modelDetail.F_AddUser = modelOrder.F_AddUser;
  230. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  231. modelDetail.F_TotlePrice = 0.00M;
  232. modelDetail.F_Activity = act.id;
  233. modelDetail.F_AddTime = DateTime.Now;
  234. modelDetailList.Add(modelDetail);
  235. n2++;
  236. }
  237. }
  238. }
  239. //生日赠
  240. else if (act.type == 2)
  241. {
  242. UseActivity2 += act.gift + ",";
  243. }
  244. //满减
  245. else if (act.type == 3)
  246. {
  247. ActivityMoney += act.money;
  248. }
  249. else if (act.type == 4)
  250. {
  251. UseActivity4 += act.gift + ",";
  252. }
  253. }
  254. UseActivity = UseActivity.Trim(',');
  255. }
  256. #endregion
  257. #region 商品核算
  258. foreach (OrderDetailInput m in input.OrderDetailList)
  259. {
  260. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  261. if (modelProduct == null)
  262. return Error("商品不存在:" + m.F_ProductId);
  263. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  264. modelDetail.F_ProductName = modelProduct.F_ProductName;
  265. modelDetail.F_ProductId = modelProduct.F_ProductId;
  266. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  267. modelDetail.F_OrderId = input.F_Id;
  268. modelDetail.F_Count = m.F_Count;
  269. modelDetail.F_Price = modelProduct.F_MemberPrice;
  270. //参加活动特价
  271. if (UseActivity4.Contains("," + modelProduct.F_ProductId + ","))
  272. modelDetail.F_DealPrice = modelProduct.F_SpecialPrice;
  273. else
  274. modelDetail.F_DealPrice = modelProduct.F_MemberPrice;
  275. //参加生日
  276. if (UseActivity2.Contains("," + modelProduct.F_ProductId + ","))
  277. {
  278. modelDetail.F_DealPrice = 0.00M;
  279. modelDetail.F_Remark = "生日赠品-活动:";
  280. }
  281. modelDetail.F_Sort = n;
  282. modelDetail.F_AddTime = DateTime.Now;
  283. modelDetail.F_AddUser = modelOrder.F_AddUser;
  284. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  285. modelDetail.F_TotlePrice = modelDetail.F_DealPrice * modelDetail.F_Count;
  286. modelDetail.F_Activity = 0;
  287. if (modelProduct.F_Tag.IndexOf(".") > -1&& !string.IsNullOrEmpty(UseActivity))
  288. {
  289. string[] tagarry = modelProduct.F_Tag.Split(',');
  290. string[] actlist = UseActivity.Split(',');
  291. string tag = tagarry.First(a => a.StartsWith(".")).ToString();
  292. T_Sys_Marketing modelactive = await bus_MarketingRepository.GetFirst(b => actlist.Contains(b.F_ID.ToString())&& b.F_EndTime >= DateTime.Now && b.F_StartTime <= DateTime.Now && b.F_IsDelete == 0 && ("," + b.F_Commodity + ",").Contains(("," + tag + ",")));
  293. //此商品参加活动
  294. if (modelactive != null)
  295. {
  296. modelDetail.F_Activity = modelactive.F_ID;
  297. }
  298. }
  299. else { modelDetail.F_Activity = 0; }
  300. totle += modelDetail.F_TotlePrice;
  301. modelDetailList.Add(modelDetail);
  302. n++;
  303. }
  304. #endregion
  305. modelOrder.F_TotlePrice = totle;
  306. modelOrder.F_ActivityMoney = ActivityMoney;
  307. modelOrder.F_UseActivity = UseActivity;
  308. }
  309. else
  310. {
  311. //不改变订单
  312. }
  313. #endregion
  314. //订单完成后也不计算积分
  315. modelOrder.F_Score = 0.00M;
  316. T_Cus_ScoreSet modelscore = await cus_score_setRepository.GetSingle(x => x.F_State == 1);
  317. if (modelscore == null)
  318. {
  319. modelscore = new T_Cus_ScoreSet();
  320. modelscore.F_Start = 0;
  321. modelscore.F_StartDebit = 1;
  322. modelscore.F_DebitPercent = 1000;
  323. }
  324. #region 直接提交 锁库存log 锁积分log
  325. if (input.F_State == 1)
  326. {
  327. if (modelscore.F_StartDebit == 0 || modelOrder.F_VipId == 0)
  328. {
  329. modelOrder.F_UseScore = 0;
  330. }
  331. modelOrder.F_FlowNum = DateTime.Now.ToString("yyMMddHHmmss")+"U" + UserLogin.UserId +"R"+ new Random().Next(9);
  332. string strStock = await busOrderFunctionController.ChangeStockOne(modelOrder, 1, modelDetailList);
  333. if (strStock != "1")
  334. { return Error(strStock); }
  335. if (modelscore.F_Start == 1)
  336. {
  337. //订单完成后计算积分
  338. modelOrder.F_Score = -0.01M;
  339. }
  340. modelOrder.F_SubmitTime = DateTime.Now;
  341. }
  342. #endregion
  343. //计算结果 积分有规则
  344. modelOrder.F_ShouldPrice = modelOrder.F_TotlePrice - ActivityMoney + modelOrder.F_ExpressFee- modelOrder.F_UseScore / modelscore.F_DebitPercent;
  345. modelOrder.F_PayState = 0;
  346. if (await bus_OrderRepository.AddReturnCount(modelOrder))
  347. {
  348. if (modelDetailList != null && modelDetailList.Count > 0)
  349. {
  350. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  351. return Success("订单添加成功2");
  352. else
  353. return Error("订单添加失败,请重试!1");
  354. }
  355. return Success("订单添加成功1");
  356. }
  357. else
  358. {
  359. return Error("订单添加失败,请重试!2");
  360. }
  361. }
  362. catch (Exception ex)
  363. { return Error(ex.Message); }
  364. }**/
  365. #endregion
  366. /// <summary>
  367. /// 创建订单
  368. /// </summary>
  369. /// <param name="input"></param>
  370. /// <returns></returns>
  371. [HttpPost("addorder")]
  372. public async Task<IActionResult> AddOrder([FromBody]OrderInput input)
  373. {
  374. try
  375. {
  376. T_Cus_VipInfo modelvip = new T_Cus_VipInfo();
  377. #region 验证参数 必填项
  378. if (string.IsNullOrEmpty(input.F_ADFrom))
  379. return Error("请输入选择广告来源");
  380. if (string.IsNullOrEmpty(input.F_Type))
  381. return Error("请输入选择订单类型");
  382. if (string.IsNullOrEmpty(input.F_Id))
  383. return Error("请输入订单编号");
  384. if (string.IsNullOrEmpty(input.F_Customer))
  385. return Error("请输入客户姓名");
  386. if (string.IsNullOrEmpty(input.F_CustomerPhone))
  387. return Error("请输入客户电话");
  388. if (input.F_Type == "售后订单")
  389. return Error("售后订单只能根据售后单自动创建");
  390. #endregion
  391. int exist = await bus_OrderRepository.GetCount(q => q.F_Id == input.F_Id);
  392. if (exist > 0)
  393. {
  394. return Error("此订单号已存在");
  395. }
  396. T_Bus_Order modelOrder = new T_Bus_Order();
  397. #region 订单属性
  398. //必填
  399. modelOrder.F_ADFrom = input.F_ADFrom;
  400. modelOrder.F_Type = input.F_Type;
  401. modelOrder.F_Id = input.F_Id;
  402. modelOrder.F_Customer = input.F_Customer;
  403. modelOrder.F_CustomerPhone = input.F_CustomerPhone;
  404. if (input.F_RecommendId > 0)
  405. {
  406. modelOrder.F_RecommendId = input.F_RecommendId;
  407. modelOrder.F_RecommendName = input.F_RecommendName;
  408. }
  409. if (input.F_CustomerType > 0)
  410. { modelOrder.F_CustomerType = input.F_CustomerType; }
  411. if (!string.IsNullOrEmpty(input.F_CustomerTel))
  412. { modelOrder.F_CustomerTel = input.F_CustomerTel; }
  413. //选填 快递属性
  414. modelOrder.F_TrackingNo = "";
  415. if (!string.IsNullOrEmpty(input.F_Addressee))
  416. { modelOrder.F_Addressee = input.F_Addressee; }
  417. if (!string.IsNullOrEmpty(input.F_AddPhone))
  418. { modelOrder.F_AddPhone = input.F_AddPhone; }
  419. if (!string.IsNullOrEmpty(input.F_AddProvince))
  420. { modelOrder.F_AddProvince = input.F_AddProvince; }
  421. if (!string.IsNullOrEmpty(input.F_AddCity))
  422. { modelOrder.F_AddCity = input.F_AddCity; }
  423. if (!string.IsNullOrEmpty(input.F_AddArea))
  424. { modelOrder.F_AddArea = input.F_AddArea; }
  425. if (!string.IsNullOrEmpty(input.F_AddTown))
  426. { modelOrder.F_AddTown = input.F_AddTown; }
  427. if (!string.IsNullOrEmpty(input.F_AddDes))
  428. { modelOrder.F_AddDes = input.F_AddDes; }
  429. if (!string.IsNullOrEmpty(input.F_Address))
  430. { modelOrder.F_Address = input.F_Address; }
  431. if (!string.IsNullOrEmpty(input.F_PostalCode))
  432. { modelOrder.F_PostalCode = input.F_PostalCode; }
  433. // if (!string.IsNullOrEmpty(input.F_Express))
  434. // { modelOrder.F_Express = input.F_Express; }
  435. if (!string.IsNullOrEmpty(input.F_Remark))
  436. { modelOrder.F_Remark = input.F_Remark; }
  437. if (!string.IsNullOrEmpty(input.F_PayType))
  438. { modelOrder.F_PayType = input.F_PayType; }
  439. if
  440. (input.F_VipId > 0)
  441. { modelOrder.F_VipId = input.F_VipId; }
  442. else
  443. {
  444. var vip = await cus_vip_infoRepository.GetListALL(x => x.F_Phone == input.F_CustomerPhone
  445. && x.F_State == 1);
  446. if (vip != null && vip.Count > 0)
  447. modelOrder.F_VipId = vip.FirstOrDefault().F_ID;
  448. else
  449. modelOrder.F_VipId = 0;
  450. }
  451. if (input.F_Belong > 0)
  452. {
  453. modelOrder.F_Belong = input.F_Belong;
  454. modelOrder.F_BelongName = input.F_BelongName;
  455. }
  456. else
  457. {
  458. modelOrder.F_Belong = UserLogin.UserId.ObjToInt();
  459. modelOrder.F_BelongName = UserLogin.UserName;
  460. }
  461. modelOrder.F_ExpressFee = input.F_ExpressFee;
  462. // modelOrder.F_Stock = input.F_Stock;
  463. modelOrder.F_IsExpress = 0;
  464. modelOrder.F_RealPrice = input.F_RealPrice;
  465. modelOrder.F_MemberNotes = input.F_MemberNotes;//会员备注
  466. modelOrder.F_UseScore = input.F_UseScore;
  467. if (input.F_IsPayment > 0)
  468. {
  469. try
  470. {
  471. #region 验证参数 必填项
  472. if (string.IsNullOrEmpty(input.F_Id))
  473. return Error("请输入订单号");
  474. if (string.IsNullOrEmpty(input.OrderMoney.F_PayUser))
  475. return Error("请输入打款人");
  476. if (string.IsNullOrEmpty(input.F_PayType))
  477. return Error("请选择付款方式");
  478. // if (string.IsNullOrEmpty(input.OrderMoney.F_RemarkKF))
  479. // input.OrderMoney.F_RemarkKF = "";
  480. if (string.IsNullOrEmpty(input.OrderMoney.F_RemarkXS))
  481. input.OrderMoney.F_RemarkXS = "";
  482. if (input.OrderMoney.F_PayTime == null)
  483. return Error("请选择打款时间");
  484. if (input.OrderMoney.F_Money <= 0)
  485. return Error("请输入金额");
  486. #endregion
  487. T_Bus_OrderMoney modelOrderMoeny = new T_Bus_OrderMoney();
  488. ModelConvertHelper<T_Bus_OrderMoney, OrderMoneyInput>.ModeToModelDefault(modelOrderMoeny, input.OrderMoney);
  489. modelOrderMoeny.F_AddUserId = UserLogin.UserId.ObjToInt();
  490. modelOrderMoeny.F_UserName = UserLogin.UserName;
  491. modelOrderMoeny.F_MoneyBak = modelOrderMoeny.F_Money;
  492. modelOrderMoeny.F_State = 0;
  493. modelOrderMoeny.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  494. if (!await busOrderMoneyRepository.AddReturnCount(modelOrderMoeny))
  495. return Error("付款失败");
  496. }
  497. catch (Exception ex)
  498. { return Error(ex.Message); }
  499. }
  500. modelOrder.F_State = 0;
  501. //选填 关联属性
  502. modelOrder.F_Status = 0;
  503. modelOrder.F_IsPayment = input.F_IsPayment;
  504. //必须属性 系统生成
  505. modelOrder.F_AddTime = DateTime.Now;
  506. modelOrder.F_AddUser = UserLogin.UserId.ObjToInt();
  507. modelOrder.F_AddUserName = UserLogin.UserName;
  508. #endregion
  509. decimal totle = 0.00M;
  510. decimal ActivityMoney = 0.00M;
  511. string UseActivity = "";
  512. string UseActivity4 = ",";
  513. string UseActivity2 = ",";
  514. List<T_Bus_OrderDetail> modelDetailList = new List<T_Bus_OrderDetail>();
  515. #region 订单详情列表核算
  516. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  517. {
  518. int n = 1;
  519. int n2 = input.OrderDetailList.Count + 1;
  520. #region 活动核算
  521. if (input.UseActList != null && input.UseActList.Count > 0)
  522. {
  523. //遍历所有选中的活动
  524. foreach (UseActInput act in input.UseActList)
  525. {
  526. UseActivity += act.id + ",";
  527. //满赠
  528. if (act.type == 1)
  529. {
  530. string[] productidlist = act.gift.Split(',');
  531. foreach (string giftid in productidlist)
  532. {
  533. T_Bus_Product m = await bus_productRepository.GetSingle(b => ("," + giftid + ",").Contains("," + b.F_ProductId + ",") && b.F_IsSale == 0);
  534. if (m != null)
  535. {
  536. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  537. modelDetail.F_ProductName = m.F_ProductName;
  538. modelDetail.F_ProductId = m.F_ProductId;
  539. modelDetail.F_Specifications = m.F_Specifications;
  540. modelDetail.F_ProductShortName = m.F_ProductShortName;
  541. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  542. modelDetail.F_OrderId = input.F_Id;
  543. modelDetail.F_Count = 1;
  544. modelDetail.F_Price = 0.00M;
  545. modelDetail.F_DealPrice = 0.00M;
  546. modelDetail.F_Sort = n2;
  547. modelDetail.F_Remark = "赠品-活动:" + act.id;
  548. modelDetail.F_AddUser = modelOrder.F_AddUser;
  549. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  550. modelDetail.F_TotlePrice = 0.00M;
  551. modelDetail.F_Activity = act.id;
  552. modelDetail.F_AddTime = DateTime.Now;
  553. modelDetailList.Add(modelDetail);
  554. n2++;
  555. }
  556. }
  557. }
  558. //生日赠
  559. else if (act.type == 2)
  560. {
  561. UseActivity2 += act.gift + ",";
  562. }
  563. //满减
  564. else if (act.type == 3)
  565. {
  566. ActivityMoney += act.money;
  567. }
  568. else if (act.type == 4)
  569. {
  570. UseActivity4 += act.gift + ",";
  571. }
  572. }
  573. UseActivity = UseActivity.Trim(',');
  574. }
  575. #endregion
  576. #region 商品核算
  577. foreach (OrderDetailInput m in input.OrderDetailList)
  578. {
  579. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  580. if (modelProduct == null)
  581. return Error("商品不存在:" + m.F_ProductId);
  582. if (modelProduct.F_OnSaleEnd<DateTime .Now &&UserLogin.RoleCode != "SH")
  583. {
  584. return Error ("商品已下架:" + m.F_ProductId);
  585. }
  586. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  587. modelDetail.F_ProductName = modelProduct.F_ProductName;
  588. modelDetail.F_ProductId = modelProduct.F_ProductId;
  589. modelDetail.F_Specifications = modelProduct.F_Specifications;
  590. modelDetail.F_ProductShortName = modelProduct.F_ProductShortName;
  591. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  592. modelDetail.F_OrderId = input.F_Id;
  593. modelDetail.F_Count = m.F_Count;
  594. modelDetail.F_Price = modelProduct.F_MemberPrice;
  595. //参加活动特价
  596. if (UseActivity4.Contains("," + modelProduct.F_ProductId + ","))
  597. modelDetail.F_DealPrice = modelProduct.F_SpecialPrice;
  598. else
  599. modelDetail.F_DealPrice = modelProduct.F_MemberPrice;
  600. //参加生日
  601. if (UseActivity2.Contains("," + modelProduct.F_ProductId + ","))
  602. {
  603. modelDetail.F_DealPrice = 0.00M;
  604. modelDetail.F_Remark = "生日赠品-活动:";
  605. }
  606. modelDetail.F_Sort = n;
  607. modelDetail.F_AddTime = DateTime.Now;
  608. modelDetail.F_AddUser = modelOrder.F_AddUser;
  609. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  610. modelDetail.F_TotlePrice = modelDetail.F_DealPrice * modelDetail.F_Count;
  611. modelDetail.F_Activity = 0;
  612. if (modelProduct.F_Tag.IndexOf(".") > -1 && !string.IsNullOrEmpty(UseActivity))
  613. {
  614. string[] tagarry = modelProduct.F_Tag.Split(',');
  615. string[] actlist = UseActivity.Split(',');
  616. string tag = tagarry.First(a => a.StartsWith(".")).ToString();
  617. T_Sys_Marketing modelactive = await bus_MarketingRepository.GetFirst(b => actlist.Contains(b.F_ID.ToString()) && b.F_EndTime >= DateTime.Now && b.F_StartTime <= DateTime.Now && b.F_IsDelete == 0 && ("," + b.F_Commodity + ",").Contains(("," + tag + ",")));
  618. //此商品参加活动
  619. if (modelactive != null)
  620. {
  621. modelDetail.F_Activity = modelactive.F_ID;
  622. }
  623. }
  624. else { modelDetail.F_Activity = 0; }
  625. totle += modelDetail.F_TotlePrice;
  626. modelDetailList.Add(modelDetail);
  627. n++;
  628. }
  629. #endregion
  630. modelOrder.F_TotlePrice = totle;
  631. modelOrder.F_ActivityMoney = ActivityMoney;
  632. modelOrder.F_UseActivity = UseActivity;
  633. }
  634. else
  635. {
  636. //不改变订单
  637. }
  638. #endregion
  639. //订单完成后也不计算积分
  640. modelOrder.F_TotlePrice += input.F_ExpressFee;//订单总额(包括快递费)
  641. modelOrder.F_RecommenderTel = input.F_RecommenderTel;
  642. modelOrder.F_PayState = 0;
  643. if (input .F_State ==1)
  644. {
  645. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  646. { }
  647. else
  648. { return Error("请选择订购商品"); }
  649. if (string.IsNullOrEmpty(modelOrder.F_AddPhone))
  650. {
  651. return Error("收件人电话不能为空");
  652. }
  653. if (string.IsNullOrEmpty(modelOrder.F_AddTown))
  654. {
  655. return Error("收件人地址不能为空");
  656. }
  657. if (string.IsNullOrEmpty(modelOrder.F_Address))
  658. {
  659. return Error("收件人详细地址不能为空");
  660. }
  661. List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
  662. if (modelDetailList != null && modelDetailList.Count > 0)
  663. {
  664. foreach (var it in modelDetailList)
  665. {
  666. T_Bus_Product t_Bus_Product = await bus_productRepository.GetSingle(x => x.F_ProductId == it.F_ProductId);
  667. if (t_Bus_Product != null)
  668. {
  669. List<EBossStock> listStock = await busOrderFunctionController.GetStock(it.F_ProductId, "山西仓");
  670. List<EBossStock> listStock1 = await busOrderFunctionController.GetStock(it.F_ProductId, "新乡仓");
  671. t_Bus_Product.F_UseNumber += it.F_Count;
  672. if (t_Bus_Product.F_UseNumber > listStock[0].qty && t_Bus_Product.F_UseNumber > listStock1[0].qty)
  673. {
  674. return Error ( "提交失败,可配量不足.");
  675. }
  676. else
  677. {
  678. Productlist.Add(t_Bus_Product);
  679. }
  680. }
  681. else
  682. {
  683. return Error("提交失败,商品不存在");
  684. }
  685. }
  686. }
  687. modelOrder.F_SubmitTime = DateTime.Now;
  688. if (modelOrder.F_IsPayment > 0)
  689. modelOrder.F_State = 7;
  690. else
  691. modelOrder.F_State = 0;
  692. modelOrder.F_FlowNum = DateTime.Now.ToString("yyMMddHHmmss") + "U" + UserLogin.UserId + "R" + new Random().Next(9);
  693. }
  694. string count = UserLogin.UserName + "创建订单";
  695. int t = await AddLog(modelOrder.F_Id, count, UserLogin.UserId, modelOrder.F_State);
  696. if (t >0)
  697. {
  698. if (await bus_OrderRepository.AddReturnCount(modelOrder))
  699. {
  700. if (modelDetailList != null && modelDetailList.Count > 0)
  701. {
  702. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  703. {
  704. return Success("订单添加成功2");
  705. }
  706. else
  707. return Error("订单添加失败,请重试!1");
  708. }
  709. return Success("订单添加成功1");
  710. }
  711. }
  712. return Error("订单添加失败,请重试!2");
  713. }
  714. catch (Exception ex)
  715. { return Error(ex.Message); }
  716. }
  717. /// <summary>
  718. /// 获取总金额
  719. /// </summary>
  720. /// <param name="OrderDetailList"></param>
  721. /// <param name="UseActList"></param>
  722. /// <returns></returns>
  723. [HttpPost("getPrice")]
  724. public async Task<IActionResult> GetPrice(List<OrderDetailInput> OrderDetailList
  725. , List<UseActInput> UseActList, decimal F_ExpressFee =0)
  726. {
  727. decimal totle = 0.00M;
  728. decimal ActivityMoney = 0.00M;
  729. string UseActivity = "";
  730. string UseActivity4 = ",";
  731. string UseActivity2 = ",";
  732. if (OrderDetailList != null && OrderDetailList.Count > 0)
  733. {
  734. int n = 1;
  735. int n2 = OrderDetailList.Count + 1;
  736. #region 活动核算
  737. if (UseActList != null && UseActList.Count > 0)
  738. {
  739. //遍历所有选中的活动
  740. foreach (UseActInput act in UseActList)
  741. {
  742. UseActivity += act.id + ",";
  743. if (act.type == 2)
  744. {
  745. UseActivity2 += act.gift + ",";
  746. }
  747. //满减
  748. else if (act.type == 3)
  749. {
  750. ActivityMoney += act.money;
  751. }
  752. else if (act.type == 4)
  753. {
  754. UseActivity4 += act.gift + ",";
  755. }
  756. }
  757. UseActivity = UseActivity.Trim(',');
  758. }
  759. #endregion
  760. #region 商品核算
  761. foreach (OrderDetailInput m in OrderDetailList)
  762. {
  763. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  764. if (modelProduct == null)
  765. return Error("商品不存在:" + m.F_ProductId);
  766. if (modelProduct.F_OnSaleEnd < DateTime.Now && UserLogin.RoleCode != "SH")
  767. {
  768. return Error("商品已下架:" + m.F_ProductId);
  769. }
  770. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  771. //参加活动特价
  772. if (UseActivity4.Contains("," + modelProduct.F_ProductId + ","))
  773. modelDetail.F_DealPrice = modelProduct.F_SpecialPrice;
  774. else
  775. modelDetail.F_DealPrice = modelProduct.F_MemberPrice;
  776. //参加生日
  777. if (UseActivity2.Contains("," + modelProduct.F_ProductId + ","))
  778. {
  779. modelDetail.F_DealPrice = 0.00M;
  780. modelDetail.F_Remark = "生日赠品-活动:";
  781. }
  782. modelDetail.F_Count = m.F_Count;
  783. modelDetail.F_TotlePrice = modelDetail.F_DealPrice * modelDetail.F_Count;
  784. totle += modelDetail.F_TotlePrice;
  785. n++;
  786. }
  787. #endregion
  788. }
  789. else
  790. {
  791. //不改变订单
  792. }
  793. totle += F_ExpressFee;
  794. return Success("获取成功", totle);
  795. }
  796. /// <summary>
  797. /// 提交订单 Audit payment
  798. /// </summary>
  799. /// <param name="input"></param>
  800. /// <returns></returns>
  801. [HttpPost("submit")]
  802. public async Task<IActionResult> Submit(string orderids)
  803. {
  804. string msg = "";
  805. if (string.IsNullOrEmpty(orderids))
  806. return Error("请选择订单号");
  807. string[] ids = orderids.Split(',');
  808. List<T_Bus_Orderlogs> logs = new List<T_Bus_Orderlogs>();
  809. List<T_Bus_Order> orderLIst = new List<T_Bus_Order>();
  810. foreach (var item in ids)
  811. {
  812. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == item);
  813. T_Bus_Orderlogs t_Bus_Orderlogs = new T_Bus_Orderlogs();
  814. List<T_Bus_OrderDetail> detaillist = await bus_OrderDetailRepository.GetListALL(q => q.F_OrderId == modelOrder.F_Id, o => o.F_Sort, OrderByType.Asc);
  815. if (detaillist != null && detaillist.Count > 0)
  816. { }
  817. else
  818. { msg += "订单" + modelOrder.F_Id + "请选择订购商品"; continue; }
  819. if (string.IsNullOrEmpty(modelOrder.F_AddPhone))
  820. {
  821. msg += "订单" + modelOrder.F_Id + "收件人电话不能为空";
  822. continue;
  823. }
  824. if (string.IsNullOrEmpty(modelOrder.F_AddTown))
  825. {
  826. msg += "订单" + modelOrder.F_Id + "收件人地址不能为空";
  827. continue;
  828. }
  829. if (string.IsNullOrEmpty(modelOrder.F_Address))
  830. {
  831. msg += "订单" + modelOrder.F_Id + "收件人详细地址不能为空";
  832. continue;
  833. }
  834. List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
  835. if (detaillist!=null && detaillist.Count >0)
  836. {
  837. foreach (var it in detaillist)
  838. {
  839. T_Bus_Product t_Bus_Product = await bus_productRepository.GetSingle(x => x.F_ProductId == it.F_ProductId);
  840. if (t_Bus_Product.F_OnSaleEnd < DateTime.Now && UserLogin.RoleCode != "SH")
  841. {
  842. return Error("商品已下架:" + t_Bus_Product.F_ProductId);
  843. }
  844. if (t_Bus_Product!=null )
  845. {
  846. List<EBossStock> listStock = await busOrderFunctionController.GetStock(it.F_ProductId, "山西仓");
  847. List<EBossStock> listStock1 = await busOrderFunctionController.GetStock(it.F_ProductId, "新乡仓");
  848. t_Bus_Product.F_UseNumber += it.F_Count;
  849. if (t_Bus_Product.F_UseNumber> listStock[0].qty&& t_Bus_Product.F_UseNumber > listStock1[0].qty)
  850. {
  851. msg += "订单" + modelOrder.F_Id + "提交失败,可配量不足.";
  852. continue;
  853. }
  854. else
  855. {
  856. Productlist.Add(t_Bus_Product);
  857. }
  858. }
  859. else
  860. {
  861. msg += "订单" + modelOrder.F_Id + "提交失败,商品不存在.";
  862. continue;
  863. }
  864. }
  865. }
  866. if (msg=="")
  867. {
  868. if (Productlist!=null && Productlist.Count >0)
  869. {
  870. if (!await bus_productRepository.UpdateList(Productlist))
  871. msg += "订单" + modelOrder.F_Id + "提交失败";
  872. continue;
  873. }
  874. else
  875. msg += "订单" + modelOrder.F_Id + "提交失败,请选择商品";
  876. continue;
  877. }
  878. /**
  879. string strStock = await busOrderFunctionController.ChangeStockOne(modelOrder, 1, detaillist);
  880. if (strStock == "1")
  881. {
  882. if (modelscore.F_Start == 1)
  883. {
  884. //订单完成后计算积分
  885. modelOrder.F_Score = -0.01M;
  886. }
  887. #endregion
  888. //计算结果 积分有规则
  889. modelOrder.F_ShouldPrice = modelOrder.F_TotlePrice - modelOrder.F_ActivityMoney + modelOrder.F_ExpressFee - modelOrder.F_UseScore / modelscore.F_DebitPercent;
  890. if (! await bus_OrderRepository.Update(modelOrder))
  891. {
  892. msg += "订单" + modelOrder.F_Id + "提交失败";
  893. }
  894. }
  895. else
  896. {
  897. msg += "订单" + modelOrder.F_Id + strStock;
  898. }
  899. **/
  900. modelOrder.F_SubmitTime = DateTime.Now;
  901. if (modelOrder.F_IsPayment > 0)
  902. modelOrder.F_State = 7;
  903. else
  904. modelOrder.F_State = 1;
  905. modelOrder.F_FlowNum = DateTime.Now.ToString("yyMMddHHmmss") + "U" + UserLogin.UserId + "R" + new Random().Next(9);
  906. orderLIst.Add(modelOrder);
  907. t_Bus_Orderlogs.F_WoID = modelOrder.F_Id;
  908. t_Bus_Orderlogs.F_OptContent = UserLogin.UserName + "提交订单";
  909. t_Bus_Orderlogs.F_CreateUser = UserLogin.UserCode;
  910. t_Bus_Orderlogs.F_CreateTime = DateTime.Now;
  911. t_Bus_Orderlogs.F_WoState = modelOrder.F_State;
  912. logs.Add(t_Bus_Orderlogs);
  913. }
  914. if (msg =="")
  915. {
  916. await busOrderlogsRepository.AddAndUpdateList(logs);
  917. if (await bus_OrderRepository.UpdateList(orderLIst))
  918. return Success("提交成功");
  919. else
  920. return Error("提交失败");
  921. }
  922. else
  923. return Error(msg);
  924. }
  925. /// <summary>
  926. /// 审核订单金额
  927. /// </summary>
  928. /// <param name="input"></param>
  929. /// <returns></returns>
  930. [HttpPost("checkordermoney")]
  931. public async Task<IActionResult> CheckOrderMoney(string orderids,int state)
  932. {
  933. try
  934. {
  935. #region 验证参数 必填项
  936. if (string.IsNullOrEmpty(orderids))
  937. return Error("请选择订单号");
  938. string[] ids = orderids.Split(',');
  939. List<T_Bus_Order> _Orders = new List<T_Bus_Order>();
  940. List<T_Bus_OrderMoney> orderMoney = new List<T_Bus_OrderMoney>();
  941. List<T_Bus_Orderlogs> logs = new List<T_Bus_Orderlogs>();
  942. string msg = "";
  943. foreach (var it in ids)
  944. {
  945. #endregion
  946. T_Bus_Orderlogs t_Bus_Orderlogs = new T_Bus_Orderlogs();
  947. Expression<Func<T_Bus_OrderMoney, bool>> eq = a => a.F_OrderId == it;
  948. T_Bus_OrderMoney modelOrderMoeny = busOrderMoneyRepository.GetListALL(eq, o => o.F_AddTime, OrderByType.Asc).Result .FirstOrDefault ();
  949. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == modelOrderMoeny.F_OrderId);
  950. modelOrderMoeny.F_State = state;
  951. if (modelOrderMoeny.F_State == 1)
  952. {
  953. if (modelOrder.F_PayState == 1 || modelOrder.F_PayState == 3)
  954. {
  955. msg += "订单" + it+ "此单已结算";
  956. continue;
  957. }
  958. modelOrder.F_RealPrice = modelOrder.F_RealPrice + modelOrderMoeny.F_Money;
  959. if (modelOrder.F_PayState == 0)
  960. {
  961. if (modelOrder.F_ShouldPrice <= modelOrder.F_RealPrice)
  962. {
  963. //0待回款1已支付 2待退款3已退款
  964. modelOrder.F_PayState = 1;
  965. }
  966. }
  967. else if (modelOrder.F_PayState == 2)
  968. {
  969. if (modelOrder.F_ShouldPrice <= modelOrder.F_RealPrice)
  970. {
  971. //0待回款1已支付 2待退款3已退款
  972. modelOrder.F_PayState = 3;
  973. }
  974. }
  975. modelOrder.F_State = 1;
  976. t_Bus_Orderlogs.F_OptContent = UserLogin.UserName + "审核付款金额,审核通过";
  977. _Orders.Add(modelOrder);
  978. }
  979. else
  980. {
  981. List<T_Bus_OrderDetail> detaillist = await bus_OrderDetailRepository.GetListALL(q => q.F_OrderId == modelOrder.F_Id, o => o.F_Sort, OrderByType.Asc);
  982. List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
  983. if (detaillist != null && detaillist.Count > 0)
  984. {
  985. foreach (var iv in detaillist)
  986. {
  987. T_Bus_Product t_Bus_Product = await bus_productRepository.GetSingle(x => x.F_ProductId == iv.F_ProductId);
  988. if (t_Bus_Product != null)
  989. {
  990. if (t_Bus_Product.F_OnSaleEnd < DateTime.Now && UserLogin.RoleCode != "SH")
  991. {
  992. return Error("商品已下架:" + t_Bus_Product.F_ProductId);
  993. }
  994. t_Bus_Product.F_UseNumber -= iv.F_Count;
  995. Productlist.Add(t_Bus_Product);
  996. }
  997. else
  998. {
  999. msg += "订单" + modelOrder.F_Id + "提交失败,商品不存在.";
  1000. continue;
  1001. }
  1002. }
  1003. }
  1004. if (msg == "")
  1005. {
  1006. if (Productlist != null && Productlist.Count > 0)
  1007. {
  1008. if (!await bus_productRepository.UpdateList(Productlist))
  1009. {
  1010. msg += "订单" + modelOrder.F_Id + "提交失败";
  1011. continue;
  1012. }
  1013. }
  1014. else
  1015. {
  1016. msg += "订单" + modelOrder.F_Id + "提交失败,请选择商品";
  1017. continue;
  1018. }
  1019. }
  1020. t_Bus_Orderlogs.F_OptContent = UserLogin.UserName + "审核付款金额,审核不通过";
  1021. modelOrder.F_State = 0;
  1022. _Orders.Add(modelOrder);
  1023. }
  1024. orderMoney.Add(modelOrderMoeny);
  1025. t_Bus_Orderlogs.F_WoID = modelOrder.F_Id;
  1026. t_Bus_Orderlogs.F_CreateUser = UserLogin.UserCode;
  1027. t_Bus_Orderlogs.F_CreateTime = DateTime.Now;
  1028. t_Bus_Orderlogs.F_WoState = modelOrder.F_State;
  1029. logs.Add(t_Bus_Orderlogs);
  1030. }
  1031. if (msg == "")
  1032. {
  1033. await busOrderlogsRepository.AddAndUpdateList(logs);
  1034. if (await busOrderMoneyRepository.UpdateList(orderMoney))
  1035. {
  1036. if (await bus_OrderRepository.UpdateList(_Orders))
  1037. return Success("成功");
  1038. }
  1039. }
  1040. else
  1041. return Error(msg);
  1042. return Error("失败!");
  1043. }
  1044. catch (Exception ex)
  1045. { return Error(ex.Message); }
  1046. }
  1047. #region
  1048. /// <summary>
  1049. /// 修改订单
  1050. /// </summary>
  1051. /// <param name="input"></param>
  1052. /// <returns></returns>
  1053. /**
  1054. [HttpPost("editorder")]
  1055. public async Task<IActionResult> EditOrder([FromBody]OrderInput input)
  1056. {
  1057. T_Cus_VipInfo modelvip = new T_Cus_VipInfo();
  1058. #region 验证参数 必填项
  1059. if (string.IsNullOrEmpty(input.F_ADFrom))
  1060. return Error("请输入选择广告来源");
  1061. if (string.IsNullOrEmpty(input.F_Type))
  1062. return Error("请输入选择订单类型");
  1063. if (string.IsNullOrEmpty(input.F_Id))
  1064. return Error("请输入订单编号");
  1065. if (string.IsNullOrEmpty(input.F_Customer))
  1066. return Error("请输入客户姓名");
  1067. if (string.IsNullOrEmpty(input.F_CustomerPhone))
  1068. return Error("请输入客户电话");
  1069. if (input.F_Type == "售后订单")
  1070. return Error("售后订单销售不能修改");
  1071. #endregion
  1072. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == input.F_Id);
  1073. if (modelOrder == null)
  1074. {
  1075. return Error("此订单号不存在");
  1076. }
  1077. //保存 审退回 仓退回
  1078. if (!(new int[] { 0, 2 }.Contains(modelOrder.F_State)))
  1079. {
  1080. return Error("已提交订单不允许修改,先撤回订单");
  1081. }
  1082. #region 数据绑定
  1083. //必填
  1084. modelOrder.F_ADFrom = input.F_ADFrom;
  1085. modelOrder.F_Type = input.F_Type;
  1086. modelOrder.F_Customer = input.F_Customer;
  1087. modelOrder.F_CustomerPhone = input.F_CustomerPhone;
  1088. if (input.F_RecommendId > 0)
  1089. {
  1090. modelOrder.F_RecommendId = input.F_RecommendId;
  1091. modelOrder.F_RecommendName = input.F_RecommendName;
  1092. }
  1093. if (input.F_CustomerType > 0)
  1094. { modelOrder.F_CustomerType = input.F_CustomerType; }
  1095. if (!string.IsNullOrEmpty(input.F_CustomerTel))
  1096. { modelOrder.F_CustomerTel = input.F_CustomerTel; }
  1097. //选填 快递属性
  1098. modelOrder.F_TrackingNo = "";
  1099. if (!string.IsNullOrEmpty(input.F_Addressee))
  1100. { modelOrder.F_Addressee = input.F_Addressee; }
  1101. if (!string.IsNullOrEmpty(input.F_AddPhone))
  1102. { modelOrder.F_AddPhone = input.F_AddPhone; }
  1103. if (!string.IsNullOrEmpty(input.F_AddProvince))
  1104. { modelOrder.F_AddProvince = input.F_AddProvince; }
  1105. if (!string.IsNullOrEmpty(input.F_AddCity))
  1106. { modelOrder.F_AddCity = input.F_AddCity; }
  1107. if (!string.IsNullOrEmpty(input.F_AddArea))
  1108. { modelOrder.F_AddArea = input.F_AddArea; }
  1109. if (!string.IsNullOrEmpty(input.F_AddTown))
  1110. { modelOrder.F_AddTown = input.F_AddTown; }
  1111. if (!string.IsNullOrEmpty(input.F_AddDes))
  1112. { modelOrder.F_AddDes = input.F_AddDes; }
  1113. if (!string.IsNullOrEmpty(input.F_Address))
  1114. { modelOrder.F_Address = input.F_Address; }
  1115. if (!string.IsNullOrEmpty(input.F_PostalCode))
  1116. { modelOrder.F_PostalCode = input.F_PostalCode; }
  1117. if (!string.IsNullOrEmpty(input.F_Express))
  1118. { modelOrder.F_Express = input.F_Express; }
  1119. if (!string.IsNullOrEmpty(input.F_Remark))
  1120. { modelOrder.F_Remark = input.F_Remark; }
  1121. if (!string.IsNullOrEmpty(input.F_PayType))
  1122. { modelOrder.F_PayType = input.F_PayType; }
  1123. if (input.F_Belong > 0)
  1124. {
  1125. modelOrder.F_Belong = input.F_Belong;
  1126. modelOrder.F_BelongName = input.F_BelongName;
  1127. }
  1128. else
  1129. {
  1130. modelOrder.F_Belong = UserLogin.UserId.ObjToInt();
  1131. modelOrder.F_BelongName = UserLogin.UserName;
  1132. }
  1133. modelOrder.F_ExpressFee = input.F_ExpressFee;
  1134. modelOrder.F_Stock = input.F_Stock;
  1135. modelOrder.F_RealPrice = input.F_RealPrice;
  1136. modelOrder.F_UseScore = input.F_UseScore;
  1137. //选填 关联属性
  1138. if (input.F_VipId>0)
  1139. modelOrder.F_VipId = input.F_VipId;
  1140. else
  1141. {
  1142. var vip = await cus_vip_infoRepository.GetListALL(x => x.F_Phone == input.F_CustomerPhone
  1143. && x.F_State == 1);
  1144. if (vip != null && vip.Count > 0)
  1145. modelOrder.F_VipId = vip.FirstOrDefault().F_ID;
  1146. else
  1147. modelOrder.F_VipId = 0;
  1148. }
  1149. modelOrder.F_State = input.F_State;
  1150. modelOrder.F_Status = 0;
  1151. modelOrder.F_IsPayment = input.F_IsPayment;
  1152. if (input.F_IsPayment > 0 && input.F_PaymentMoney <= 0)
  1153. return Error("付款金额不能小于0");
  1154. //必须属性 系统生成
  1155. modelOrder.F_AddTime = DateTime.Now;
  1156. modelOrder.F_AddUser = UserLogin.UserId.ObjToInt();
  1157. modelOrder.F_AddUserName = UserLogin.UserName;
  1158. #endregion
  1159. //计算属性 商品计算
  1160. decimal totle = 0.00M;
  1161. decimal ActivityMoney = 0.00M;
  1162. string UseActivity = "";
  1163. string UseActivity4 = ",";
  1164. string UseActivity2 = ",";
  1165. List<T_Bus_OrderDetail> modelDetailList = new List<T_Bus_OrderDetail>();
  1166. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  1167. {
  1168. #region 核算活动
  1169. int n2 = input.OrderDetailList.Count + 1;
  1170. if (input.UseActList != null && input.UseActList.Count > 0)
  1171. {
  1172. //遍历所有选中的活动
  1173. foreach (UseActInput act in input.UseActList)
  1174. {
  1175. UseActivity += act.id + ",";
  1176. //满赠
  1177. if (act.type == 1)
  1178. {
  1179. string[] productidlist = act.gift.Split(',');
  1180. foreach (string giftid in productidlist)
  1181. {
  1182. T_Bus_Product m = await bus_productRepository.GetSingle(b => ("," + giftid + ",").Contains("," + b.F_ProductId + ",") && b.F_IsSale == 0);
  1183. if (m != null)
  1184. {
  1185. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  1186. modelDetail.F_ProductName = m.F_ProductName;
  1187. modelDetail.F_ProductId = m.F_ProductId;
  1188. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  1189. modelDetail.F_OrderId = input.F_Id;
  1190. modelDetail.F_Count = 1;
  1191. modelDetail.F_Price = 0.00M;
  1192. modelDetail.F_DealPrice = 0.00M;
  1193. modelDetail.F_Sort = n2;
  1194. modelDetail.F_Remark = "赠品-活动:" + act.id;
  1195. modelDetail.F_AddUser = modelOrder.F_AddUser;
  1196. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  1197. modelDetail.F_TotlePrice = 0.00M;
  1198. modelDetail.F_Activity = act.id;
  1199. modelDetail.F_AddTime = DateTime.Now.AddSeconds(30);
  1200. modelDetailList.Add(modelDetail);
  1201. n2++;
  1202. }
  1203. }
  1204. }
  1205. //生日赠
  1206. else if (act.type == 2)
  1207. {
  1208. UseActivity2 += act.gift + ",";
  1209. }
  1210. //满减
  1211. else if (act.type == 3)
  1212. {
  1213. ActivityMoney += act.money;
  1214. }
  1215. else if (act.type == 4)
  1216. {
  1217. UseActivity4 += act.gift + ",";
  1218. }
  1219. }
  1220. UseActivity = UseActivity.Trim(',');
  1221. }
  1222. #endregion
  1223. #region 核算商品
  1224. int n = 1;
  1225. foreach (OrderDetailInput m in input.OrderDetailList)
  1226. {
  1227. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  1228. if (modelProduct == null) return Error("在售商品不存在");
  1229. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  1230. modelDetail.F_ProductName = modelProduct.F_ProductName;
  1231. modelDetail.F_ProductId = modelProduct.F_ProductId;
  1232. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  1233. modelDetail.F_OrderId = input.F_Id;
  1234. modelDetail.F_Count = m.F_Count;
  1235. modelDetail.F_Price = modelProduct.F_MemberPrice;
  1236. //参加活动特价
  1237. if (UseActivity4.Contains("," + modelProduct.F_ProductId + ","))
  1238. modelDetail.F_DealPrice = modelProduct.F_SpecialPrice;
  1239. else
  1240. modelDetail.F_DealPrice = modelProduct.F_MemberPrice;
  1241. //参加生日
  1242. if (UseActivity2.Contains("," + modelProduct.F_ProductId + ","))
  1243. {
  1244. modelDetail.F_DealPrice = 0.00M;
  1245. modelDetail.F_Remark = "生日赠品-活动:";
  1246. }
  1247. modelDetail.F_Sort = n;
  1248. modelDetail.F_AddTime = DateTime.Now;
  1249. modelDetail.F_AddUser = modelOrder.F_AddUser;
  1250. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  1251. modelDetail.F_TotlePrice = modelDetail.F_DealPrice * modelDetail.F_Count;
  1252. modelDetail.F_Activity = 0;
  1253. if (modelProduct.F_Tag.IndexOf(".") > -1 && !string.IsNullOrEmpty(UseActivity))
  1254. {
  1255. string[] tagarry = modelProduct.F_Tag.Split(',');
  1256. string[] actlist = UseActivity.Split(',');
  1257. string tag = tagarry.First(a => a.StartsWith(".")).ToString();
  1258. T_Sys_Marketing modelactive = await bus_MarketingRepository.GetFirst(b => actlist.Contains(b.F_ID.ToString()) && b.F_EndTime >= DateTime.Now && b.F_StartTime<=DateTime.Now && b.F_IsDelete==0&&("," + b.F_Commodity + ",").Contains(("," + tag + ",")));
  1259. //此商品参加活动
  1260. if (modelactive != null)
  1261. {
  1262. modelDetail.F_Activity = modelactive.F_ID;
  1263. }
  1264. }
  1265. totle += modelDetail.F_TotlePrice;
  1266. modelDetailList.Add(modelDetail);
  1267. n++;
  1268. }
  1269. #endregion
  1270. modelOrder.F_TotlePrice = totle;
  1271. modelOrder.F_ActivityMoney = ActivityMoney;
  1272. modelOrder.F_UseActivity = UseActivity;
  1273. }
  1274. else
  1275. {
  1276. //不传商品 表明不修改商品信息 不重新计算商品
  1277. }
  1278. //直接提交 锁库存
  1279. T_Cus_ScoreSet modelscore = await cus_score_setRepository.GetSingle(x => x.F_State == 1);
  1280. if (modelscore == null)
  1281. {
  1282. modelscore = new T_Cus_ScoreSet();
  1283. modelscore.F_Start = 0;
  1284. modelscore.F_StartDebit = 1;
  1285. modelscore.F_DebitPercent = 1000;
  1286. }
  1287. #region 提交 更改状态 库存 积分
  1288. if (input.F_State == 1)
  1289. {
  1290. if (string.IsNullOrEmpty(input.F_Stock))
  1291. {
  1292. return Error("请选择出库货仓");
  1293. }
  1294. if (string.IsNullOrEmpty(modelOrder.F_Express))
  1295. {
  1296. return Error("快递不能为空");
  1297. }
  1298. if (string.IsNullOrEmpty(modelOrder.F_AddPhone))
  1299. {
  1300. return Error("收件人电话不能为空");
  1301. }
  1302. if (string.IsNullOrEmpty(modelOrder.F_AddTown))
  1303. {
  1304. return Error("收件人地址不能为空");
  1305. }
  1306. if (string.IsNullOrEmpty(modelOrder.F_Address))
  1307. {
  1308. return Error("收件人详细地址不能为空");
  1309. }
  1310. modelOrder.F_FlowNum = DateTime.Now.ToString("yyMMddHHmmss") + "U" + UserLogin.UserId + "R" + new Random().Next(9);
  1311. if (modelscore.F_Start == 1)
  1312. {
  1313. //订单完成后计算积分
  1314. modelOrder.F_Score = -0.01M;
  1315. }
  1316. else
  1317. { //订单完成后也不计算积分
  1318. modelOrder.F_Score = 0.00M;
  1319. }
  1320. if (modelscore.F_StartDebit == 0 || modelOrder.F_VipId == 0)
  1321. {
  1322. modelOrder.F_UseScore = 0;
  1323. }
  1324. string strStock = await busOrderFunctionController.ChangeStockOne(modelOrder, 1, modelDetailList);
  1325. if (strStock != "1")
  1326. { return Error(strStock); }
  1327. modelOrder.F_SubmitTime = DateTime.Now;
  1328. }
  1329. #endregion
  1330. if (!modelOrder.F_Type.Contains("售后"))
  1331. { modelOrder.F_ShouldPrice = modelOrder.F_TotlePrice - modelOrder.F_ActivityMoney + modelOrder.F_ExpressFee - modelOrder.F_UseScore / modelscore.F_DebitPercent;
  1332. }
  1333. DataTable dt=await busOrderMoneyRepository.GetTableSugar(string.Format("SELECT IFNULL(SUM(F_Money),0) FROM T_Bus_OrderMoney WHERE F_OrderId='{0}' AND F_State=1", modelOrder.F_Id));
  1334. modelOrder.F_RealPrice = dt.Rows[0][0].ObjToDecimal() ;
  1335. if (modelOrder.F_ShouldPrice > 0)
  1336. {
  1337. if (modelOrder.F_ShouldPrice <= modelOrder.F_RealPrice)
  1338. modelOrder.F_PayState = 1;
  1339. else
  1340. modelOrder.F_PayState = 0;
  1341. }
  1342. else
  1343. {
  1344. if (modelOrder.F_ShouldPrice >= modelOrder.F_RealPrice)
  1345. modelOrder.F_PayState = 3;
  1346. else
  1347. modelOrder.F_PayState = 2;
  1348. }
  1349. //待付款 客服审核付款情况后改为已付款
  1350. if (await bus_OrderRepository.Update(modelOrder))
  1351. {
  1352. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  1353. {
  1354. //删除之前订单商品,重新添加
  1355. if (await bus_OrderDetailRepository.Delete(q => q.F_OrderId == modelOrder.F_Id))
  1356. {
  1357. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  1358. return Success("订单生成成功");
  1359. else
  1360. return Error("订单操作失败,请重试1!");
  1361. }
  1362. else {
  1363. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  1364. return Success("订单生成成功2");
  1365. else
  1366. return Error("订单操作失败,请重试2!");
  1367. }
  1368. }
  1369. else { return Success("成功"); }
  1370. }
  1371. return Error("订单添加失败,请重试!");
  1372. }
  1373. **/
  1374. #endregion
  1375. #region
  1376. /// <summary>
  1377. /// 修改订单
  1378. /// </summary>
  1379. /// <param name="input"></param>
  1380. /// <returns></returns>
  1381. [HttpPost("editorder")]
  1382. public async Task<IActionResult> EditOrder([FromBody]OrderInput input)
  1383. {
  1384. T_Cus_VipInfo modelvip = new T_Cus_VipInfo();
  1385. #region 验证参数 必填项
  1386. if (string.IsNullOrEmpty(input.F_ADFrom))
  1387. return Error("请输入选择广告来源");
  1388. if (string.IsNullOrEmpty(input.F_Type))
  1389. return Error("请输入选择订单类型");
  1390. if (string.IsNullOrEmpty(input.F_Id))
  1391. return Error("请输入订单编号");
  1392. if (string.IsNullOrEmpty(input.F_Customer))
  1393. return Error("请输入客户姓名");
  1394. if (string.IsNullOrEmpty(input.F_CustomerPhone))
  1395. return Error("请输入客户电话");
  1396. if (input.F_Type == "售后订单")
  1397. return Error("售后订单销售不能修改");
  1398. #endregion
  1399. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == input.F_Id);
  1400. if (modelOrder == null)
  1401. {
  1402. return Error("此订单号不存在");
  1403. }
  1404. //保存 审退回 仓退回
  1405. if (!(new int[] { 0, 2 }.Contains(modelOrder.F_State)))
  1406. {
  1407. return Error("已提交订单不允许修改,先撤回订单");
  1408. }
  1409. #region 数据绑定
  1410. //必填
  1411. modelOrder.F_ADFrom = input.F_ADFrom;
  1412. modelOrder.F_Type = input.F_Type;
  1413. modelOrder.F_Customer = input.F_Customer;
  1414. modelOrder.F_CustomerPhone = input.F_CustomerPhone;
  1415. if (input.F_RecommendId > 0)
  1416. {
  1417. modelOrder.F_RecommendId = input.F_RecommendId;
  1418. modelOrder.F_RecommendName = input.F_RecommendName;
  1419. }
  1420. if (input.F_CustomerType > 0)
  1421. { modelOrder.F_CustomerType = input.F_CustomerType; }
  1422. if (!string.IsNullOrEmpty(input.F_CustomerTel))
  1423. { modelOrder.F_CustomerTel = input.F_CustomerTel; }
  1424. //选填 快递属性
  1425. modelOrder.F_TrackingNo = "";
  1426. if (!string.IsNullOrEmpty(input.F_Addressee))
  1427. { modelOrder.F_Addressee = input.F_Addressee; }
  1428. if (!string.IsNullOrEmpty(input.F_AddPhone))
  1429. { modelOrder.F_AddPhone = input.F_AddPhone; }
  1430. if (!string.IsNullOrEmpty(input.F_AddProvince))
  1431. { modelOrder.F_AddProvince = input.F_AddProvince; }
  1432. if (!string.IsNullOrEmpty(input.F_AddCity))
  1433. { modelOrder.F_AddCity = input.F_AddCity; }
  1434. if (!string.IsNullOrEmpty(input.F_AddArea))
  1435. { modelOrder.F_AddArea = input.F_AddArea; }
  1436. if (!string.IsNullOrEmpty(input.F_AddTown))
  1437. { modelOrder.F_AddTown = input.F_AddTown; }
  1438. if (!string.IsNullOrEmpty(input.F_AddDes))
  1439. { modelOrder.F_AddDes = input.F_AddDes; }
  1440. if (!string.IsNullOrEmpty(input.F_Address))
  1441. { modelOrder.F_Address = input.F_Address; }
  1442. // if (!string.IsNullOrEmpty(input.F_PostalCode))//快递
  1443. // { modelOrder.F_PostalCode = input.F_PostalCode; }
  1444. if (!string.IsNullOrEmpty(input.F_Express))
  1445. { modelOrder.F_Express = input.F_Express; }
  1446. if (!string.IsNullOrEmpty(input.F_Remark))
  1447. { modelOrder.F_Remark = input.F_Remark; }
  1448. if (!string.IsNullOrEmpty(input.F_PayType))
  1449. { modelOrder.F_PayType = input.F_PayType; }
  1450. if (input.F_Belong > 0)
  1451. {
  1452. modelOrder.F_Belong = input.F_Belong;
  1453. modelOrder.F_BelongName = input.F_BelongName;
  1454. }
  1455. else
  1456. {
  1457. modelOrder.F_Belong = UserLogin.UserId.ObjToInt();
  1458. modelOrder.F_BelongName = UserLogin.UserName;
  1459. }
  1460. modelOrder.F_ExpressFee = input.F_ExpressFee;
  1461. // modelOrder.F_Stock = input.F_Stock;//仓库
  1462. modelOrder.F_IsExpress = 0;
  1463. modelOrder.F_MemberNotes = input.F_MemberNotes;//会员备注
  1464. modelOrder.F_RealPrice = input.F_RealPrice;
  1465. modelOrder.F_UseScore = input.F_UseScore;
  1466. //选填 关联属性
  1467. if (input.F_VipId>0)
  1468. modelOrder.F_VipId = input.F_VipId;
  1469. else
  1470. {
  1471. var vip = await cus_vip_infoRepository.GetListALL(x => x.F_Phone == input.F_CustomerPhone
  1472. && x.F_State == 1);
  1473. if (vip != null && vip.Count > 0)
  1474. modelOrder.F_VipId = vip.FirstOrDefault().F_ID;
  1475. else
  1476. modelOrder.F_VipId = 0;
  1477. }
  1478. if (input .F_IsPayment >0)
  1479. {
  1480. try
  1481. {
  1482. if (string.IsNullOrEmpty(input.OrderMoney.F_PayUser))
  1483. return Error("请输入打款人");
  1484. if (string.IsNullOrEmpty(input.F_PayType))
  1485. return Error("请输入打款方式");
  1486. if (string.IsNullOrEmpty(input.OrderMoney.F_RemarkKF))
  1487. input.OrderMoney.F_RemarkKF = "";
  1488. if (string.IsNullOrEmpty(input.OrderMoney.F_RemarkXS))
  1489. input.OrderMoney.F_RemarkXS = "";
  1490. if (input.OrderMoney.F_PayTime == null)
  1491. return Error("请输入打款时间");
  1492. if (input.OrderMoney.F_Money <= 0)
  1493. return Error("请输入金额");
  1494. #region 验证参数 必填项
  1495. Expression<Func<T_Bus_OrderMoney, bool>> eq = a => a.F_OrderId == input .F_Id ;
  1496. var modelOrderMoen = await busOrderMoneyRepository.GetListALL(eq, o => o.F_AddTime, OrderByType.Asc);
  1497. T_Bus_OrderMoney modelOrderMoeny = new T_Bus_OrderMoney();
  1498. if (modelOrderMoen != null && modelOrderMoen.Count >0)
  1499. {
  1500. modelOrderMoeny = modelOrderMoen.FirstOrDefault();
  1501. }
  1502. #endregion
  1503. ModelConvertHelper<T_Bus_OrderMoney, OrderMoneyInput>.ModeToModelDefault(modelOrderMoeny, input.OrderMoney);
  1504. modelOrderMoeny.F_AddUserId = UserLogin.UserId.ObjToInt();
  1505. modelOrderMoeny.F_UserName = UserLogin.UserName;
  1506. modelOrderMoeny.F_MoneyBak = modelOrderMoeny.F_Money;
  1507. modelOrderMoeny.F_State = 0;
  1508. modelOrderMoeny.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  1509. if (!await busOrderMoneyRepository.AddReturnCount(modelOrderMoeny))
  1510. return Error("付款失败");
  1511. }
  1512. catch (Exception ex)
  1513. { return Error(ex.Message); }
  1514. }
  1515. modelOrder.F_State = input.F_State;
  1516. modelOrder.F_Status = 0;
  1517. modelOrder.F_IsPayment = input.F_IsPayment;
  1518. //必须属性 系统生成
  1519. modelOrder.F_AddTime = DateTime.Now;
  1520. modelOrder.F_AddUser = UserLogin.UserId.ObjToInt();
  1521. modelOrder.F_AddUserName = UserLogin.UserName;
  1522. #endregion
  1523. //计算属性 商品计算
  1524. decimal totle = 0.00M;
  1525. decimal ActivityMoney = 0.00M;
  1526. string UseActivity = "";
  1527. string UseActivity4 = ",";
  1528. string UseActivity2 = ",";
  1529. List<T_Bus_OrderDetail> modelDetailList = new List<T_Bus_OrderDetail>();
  1530. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  1531. {
  1532. #region 核算活动
  1533. int n2 = input.OrderDetailList.Count + 1;
  1534. if (input.UseActList != null && input.UseActList.Count > 0)
  1535. {
  1536. //遍历所有选中的活动
  1537. foreach (UseActInput act in input.UseActList)
  1538. {
  1539. UseActivity += act.id + ",";
  1540. //满赠
  1541. if (act.type == 1)
  1542. {
  1543. string[] productidlist = act.gift.Split(',');
  1544. foreach (string giftid in productidlist)
  1545. {
  1546. T_Bus_Product m = await bus_productRepository.GetSingle(b => ("," + giftid + ",").Contains("," + b.F_ProductId + ",") && b.F_IsSale == 0);
  1547. if (m != null)
  1548. {
  1549. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  1550. modelDetail.F_ProductName = m.F_ProductName;
  1551. modelDetail.F_ProductId = m.F_ProductId;
  1552. modelDetail.F_Specifications = m.F_Specifications;
  1553. modelDetail.F_ProductShortName = m.F_ProductShortName;
  1554. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  1555. modelDetail.F_OrderId = input.F_Id;
  1556. modelDetail.F_Count = 1;
  1557. modelDetail.F_Price = 0.00M;
  1558. modelDetail.F_DealPrice = 0.00M;
  1559. modelDetail.F_Sort = n2;
  1560. modelDetail.F_Remark = "赠品-活动:" + act.id;
  1561. modelDetail.F_AddUser = modelOrder.F_AddUser;
  1562. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  1563. modelDetail.F_TotlePrice = 0.00M;
  1564. modelDetail.F_Activity = act.id;
  1565. modelDetail.F_AddTime = DateTime.Now.AddSeconds(30);
  1566. modelDetailList.Add(modelDetail);
  1567. n2++;
  1568. }
  1569. }
  1570. }
  1571. //生日赠
  1572. else if (act.type == 2)
  1573. {
  1574. UseActivity2 += act.gift + ",";
  1575. }
  1576. //满减
  1577. else if (act.type == 3)
  1578. {
  1579. ActivityMoney += act.money;
  1580. }
  1581. else if (act.type == 4)
  1582. {
  1583. UseActivity4 += act.gift + ",";
  1584. }
  1585. }
  1586. UseActivity = UseActivity.Trim(',');
  1587. }
  1588. #endregion
  1589. #region 核算商品
  1590. int n = 1;
  1591. foreach (OrderDetailInput m in input.OrderDetailList)
  1592. {
  1593. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  1594. if (modelProduct == null) return Error("在售商品不存在");
  1595. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  1596. modelDetail.F_ProductName = modelProduct.F_ProductName;
  1597. modelDetail.F_ProductId = modelProduct.F_ProductId;
  1598. modelDetail.F_Specifications = modelProduct.F_Specifications;
  1599. modelDetail.F_ProductShortName = modelProduct.F_ProductShortName;
  1600. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  1601. modelDetail.F_OrderId = input.F_Id;
  1602. modelDetail.F_Count = m.F_Count;
  1603. modelDetail.F_Price = modelProduct.F_MemberPrice;
  1604. //参加活动特价
  1605. if (UseActivity4.Contains("," + modelProduct.F_ProductId + ","))
  1606. modelDetail.F_DealPrice = modelProduct.F_SpecialPrice;
  1607. else
  1608. modelDetail.F_DealPrice = modelProduct.F_MemberPrice;
  1609. //参加生日
  1610. if (UseActivity2.Contains("," + modelProduct.F_ProductId + ","))
  1611. {
  1612. modelDetail.F_DealPrice = 0.00M;
  1613. modelDetail.F_Remark = "生日赠品-活动:";
  1614. }
  1615. modelDetail.F_Sort = n;
  1616. modelDetail.F_AddTime = DateTime.Now;
  1617. modelDetail.F_AddUser = modelOrder.F_AddUser;
  1618. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  1619. modelDetail.F_TotlePrice = modelDetail.F_DealPrice * modelDetail.F_Count;
  1620. modelDetail.F_Activity = 0;
  1621. if (modelProduct.F_Tag.IndexOf(".") > -1 && !string.IsNullOrEmpty(UseActivity))
  1622. {
  1623. string[] tagarry = modelProduct.F_Tag.Split(',');
  1624. string[] actlist = UseActivity.Split(',');
  1625. string tag = tagarry.First(a => a.StartsWith(".")).ToString();
  1626. T_Sys_Marketing modelactive = await bus_MarketingRepository.GetFirst(b => actlist.Contains(b.F_ID.ToString()) && b.F_EndTime >= DateTime.Now && b.F_StartTime<=DateTime.Now && b.F_IsDelete==0&&("," + b.F_Commodity + ",").Contains(("," + tag + ",")));
  1627. //此商品参加活动
  1628. if (modelactive != null)
  1629. {
  1630. modelDetail.F_Activity = modelactive.F_ID;
  1631. }
  1632. }
  1633. totle += modelDetail.F_TotlePrice;
  1634. modelDetailList.Add(modelDetail);
  1635. n++;
  1636. }
  1637. #endregion
  1638. modelOrder.F_TotlePrice = totle;
  1639. modelOrder.F_ActivityMoney = ActivityMoney;
  1640. modelOrder.F_UseActivity = UseActivity;
  1641. }
  1642. else
  1643. {
  1644. //不传商品 表明不修改商品信息 不重新计算商品
  1645. }
  1646. modelOrder.F_TotlePrice +=input. F_ExpressFee;
  1647. //直接提交 锁库存
  1648. T_Cus_ScoreSet modelscore = await cus_score_setRepository.GetSingle(x => x.F_State == 1);
  1649. if (modelscore == null)
  1650. {
  1651. modelscore = new T_Cus_ScoreSet();
  1652. modelscore.F_Start = 0;
  1653. modelscore.F_StartDebit = 1;
  1654. modelscore.F_DebitPercent = 1000;
  1655. }
  1656. #region 提交 更改状态 库存 积分
  1657. if (input.F_State == 1)
  1658. {
  1659. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  1660. { }
  1661. else
  1662. { return Error("请选择订购商品"); }
  1663. if (string.IsNullOrEmpty(modelOrder.F_AddPhone))
  1664. {
  1665. return Error("收件人电话不能为空");
  1666. }
  1667. if (string.IsNullOrEmpty(modelOrder.F_AddTown))
  1668. {
  1669. return Error("收件人地址不能为空");
  1670. }
  1671. if (string.IsNullOrEmpty(modelOrder.F_Address))
  1672. {
  1673. return Error("收件人详细地址不能为空");
  1674. }
  1675. List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
  1676. if (modelDetailList != null && modelDetailList.Count > 0)
  1677. {
  1678. foreach (var it in modelDetailList)
  1679. {
  1680. T_Bus_Product t_Bus_Product = await bus_productRepository.GetSingle(x => x.F_ProductId == it.F_ProductId);
  1681. if (t_Bus_Product != null)
  1682. {
  1683. List<EBossStock> listStock = await busOrderFunctionController.GetStock(it.F_ProductId, "山西仓");
  1684. List<EBossStock> listStock1 = await busOrderFunctionController.GetStock(it.F_ProductId, "新乡仓");
  1685. t_Bus_Product.F_UseNumber += it.F_Count;
  1686. if (t_Bus_Product.F_UseNumber > listStock[0].qty && t_Bus_Product.F_UseNumber > listStock1[0].qty)
  1687. {
  1688. return Error("提交失败,可配量不足.");
  1689. }
  1690. else
  1691. {
  1692. Productlist.Add(t_Bus_Product);
  1693. }
  1694. }
  1695. else
  1696. {
  1697. return Error("提交失败,商品不存在");
  1698. }
  1699. }
  1700. }
  1701. modelOrder.F_SubmitTime = DateTime.Now;
  1702. if (modelOrder.F_IsPayment > 0)
  1703. modelOrder.F_State = 7;
  1704. else
  1705. modelOrder.F_State = 1;
  1706. modelOrder.F_FlowNum = DateTime.Now.ToString("yyMMddHHmmss") + "U" + UserLogin.UserId + "R" + new Random().Next(9);
  1707. }
  1708. // if (modelscore.F_Start == 1)
  1709. // {
  1710. //订单完成后计算积分
  1711. // modelOrder.F_Score = -0.01M;
  1712. // }
  1713. // else
  1714. // { //订单完成后也不计算积分
  1715. // modelOrder.F_Score = 0.00M;
  1716. // }
  1717. // if (modelscore.F_StartDebit == 0 || modelOrder.F_VipId == 0)
  1718. // {
  1719. // modelOrder.F_UseScore = 0;
  1720. // }
  1721. // string strStock = await busOrderFunctionController.ChangeStockOne(modelOrder, 1, modelDetailList);
  1722. // if (strStock != "1")
  1723. // { return Error(strStock); }
  1724. // modelOrder.F_SubmitTime = DateTime.Now;
  1725. // }
  1726. #endregion
  1727. if (!modelOrder.F_Type.Contains("售后"))
  1728. { modelOrder.F_ShouldPrice = modelOrder.F_TotlePrice - modelOrder.F_ActivityMoney + modelOrder.F_ExpressFee - modelOrder.F_UseScore / modelscore.F_DebitPercent;
  1729. }
  1730. DataTable dt=await busOrderMoneyRepository.GetTableSugar(string.Format("SELECT IFNULL(SUM(F_Money),0) FROM T_Bus_OrderMoney WHERE F_OrderId='{0}' AND F_State=1", modelOrder.F_Id));
  1731. modelOrder.F_RealPrice = dt.Rows[0][0].ObjToDecimal() ;
  1732. if (modelOrder.F_ShouldPrice > 0)
  1733. {
  1734. if (modelOrder.F_ShouldPrice <= modelOrder.F_RealPrice)
  1735. modelOrder.F_PayState = 1;
  1736. else
  1737. modelOrder.F_PayState = 0;
  1738. }
  1739. else
  1740. {
  1741. if (modelOrder.F_ShouldPrice >= modelOrder.F_RealPrice)
  1742. modelOrder.F_PayState = 3;
  1743. else
  1744. modelOrder.F_PayState = 2;
  1745. }
  1746. //待付款 客服审核付款情况后改为已付款
  1747. string count = UserLogin.UserName + "修改订单";
  1748. int t = await AddLog(modelOrder.F_Id, count, UserLogin.UserId, modelOrder.F_State);
  1749. if (t >0)
  1750. {
  1751. if (await bus_OrderRepository.Update(modelOrder))
  1752. {
  1753. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  1754. {
  1755. //删除之前订单商品,重新添加
  1756. if (await bus_OrderDetailRepository.Delete(q => q.F_OrderId == modelOrder.F_Id))
  1757. {
  1758. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  1759. return Success("订单生成成功");
  1760. else
  1761. return Error("订单操作失败,请重试1!");
  1762. }
  1763. else
  1764. {
  1765. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  1766. return Success("订单生成成功2");
  1767. else
  1768. return Error("订单操作失败,请重试2!");
  1769. }
  1770. }
  1771. else { return Success("成功"); }
  1772. }
  1773. }
  1774. return Error("订单添加失败,请重试!");
  1775. }
  1776. #endregion
  1777. /// <summary>
  1778. /// 根据商品组合 获取符合的所有活动
  1779. /// </summary>
  1780. /// <param name="input"></param>
  1781. /// <returns></returns>
  1782. [HttpPost("getact")]
  1783. public async Task<IActionResult> GetAct([FromBody]List<OrderDetailInput> input)
  1784. {
  1785. decimal def = 0.00M;
  1786. if (input.Count < 1)
  1787. return Error("请选择商品/数量");
  1788. //统计活动金额是否符合条件 满减
  1789. Dictionary<int, decimal> acttype3 = new Dictionary<int, decimal>();
  1790. //内部计算
  1791. Dictionary<int, decimal> innerCompute = new Dictionary<int, decimal>();
  1792. //选择活动
  1793. Dictionary<int, string> chooseact = new Dictionary<int, string>();
  1794. List<UseActInput> actlist = new List<UseActInput>();
  1795. foreach (OrderDetailInput m in input)
  1796. {
  1797. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  1798. if (modelProduct != null)
  1799. {
  1800. if (modelProduct.F_OnSaleEnd < DateTime.Now && UserLogin.RoleCode != "SH")
  1801. {
  1802. return Error("商品已下架:" + modelProduct.F_ProductId);
  1803. }
  1804. //是否有活动标签
  1805. if (modelProduct.F_Tag.IndexOf(".") > -1)
  1806. {
  1807. string[] tagarry = modelProduct.F_Tag.Split(',');
  1808. string tag = tagarry.First(a => a.StartsWith(".")).ToString();
  1809. //标签内有效期
  1810. var Marketing = await bus_MarketingRepository.GetListALL(b => ("," + b.F_Commodity + ",").Contains("," + tag + ",") && b.F_StartTime <= DateTime.Now && b.F_EndTime >= DateTime.Now && b.F_IsDelete == 0);
  1811. //此商品参加活动
  1812. if (Marketing != null)
  1813. {
  1814. T_Sys_Marketing modelactive = Marketing.FirstOrDefault();
  1815. if (modelactive.F_Type == 1)
  1816. {
  1817. //满赠
  1818. //判断此人是否有参与活动的资格 默认暂不筛选
  1819. if (chooseact.ContainsKey(modelactive.F_ID))
  1820. continue;
  1821. if (innerCompute.ContainsKey(modelactive.F_ID))
  1822. {
  1823. innerCompute[modelactive.F_ID] = (decimal)modelProduct.F_MemberPrice * m.F_Count + innerCompute[modelactive.F_ID].ObjToDecimal();
  1824. }
  1825. else
  1826. {
  1827. innerCompute.Add(modelactive.F_ID, (decimal)modelProduct.F_MemberPrice * m.F_Count);
  1828. }
  1829. if (modelactive.F_Money.ObjToDecimal() <= (decimal)innerCompute[modelactive.F_ID])
  1830. {
  1831. chooseact.Add(modelactive.F_ID, "1_" + modelactive.F_Gift);
  1832. actlist.Add(new UseActInput { id = modelactive.F_ID, type = 1, gift = modelactive.F_Gift, money = def, actname = modelactive.F_Name, actdes = modelactive.F_PromotionRules });
  1833. }
  1834. }
  1835. else if (modelactive.F_Type == 2)
  1836. {
  1837. // 生日
  1838. //TODO 判断此人是否有参与活动的资格 默认暂不筛选
  1839. if (chooseact.ContainsKey(modelactive.F_ID))
  1840. continue;
  1841. chooseact.Add(modelactive.F_ID, "2_" + modelactive.F_Commodity);
  1842. actlist.Add(new UseActInput { id = modelactive.F_ID, type = 2, gift = modelactive.F_Gift, money = def, actname = modelactive.F_Name, actdes = modelactive.F_PromotionRules });
  1843. }
  1844. else if (modelactive.F_Type == 3)
  1845. {
  1846. //满减
  1847. //判断此人是否有参与活动的资格 默认暂不筛选
  1848. if (innerCompute.ContainsKey(modelactive.F_ID))
  1849. {
  1850. innerCompute[modelactive.F_ID] = (decimal)modelProduct.F_MemberPrice * m.F_Count + innerCompute[modelactive.F_ID];
  1851. }
  1852. else
  1853. {
  1854. innerCompute.Add(modelactive.F_ID, (decimal)modelProduct.F_MemberPrice * m.F_Count);
  1855. }
  1856. string[] AmountRange = modelactive.F_AmountRange.Split(',');
  1857. for (int i = 0; i < AmountRange.Length; i++)
  1858. {
  1859. //符合满减某个条件
  1860. if (innerCompute[modelactive.F_ID] >= AmountRange[i].ObjToDecimal())
  1861. {
  1862. if (acttype3.ContainsKey(modelactive.F_ID))
  1863. {
  1864. //当前减免金额大于之前发赋值,替换掉
  1865. if (modelactive.F_Money.Split(',')[i].ObjToDecimal() > acttype3[modelactive.F_ID])
  1866. {
  1867. acttype3[modelactive.F_ID] = modelactive.F_Money.Split(',')[i].ObjToDecimal();
  1868. actlist.ForEach(q => { if (q.id == modelactive.F_ID) { q.money = modelactive.F_Money.Split(',')[i].ObjToDecimal(); } });
  1869. }
  1870. }
  1871. else
  1872. {
  1873. //满足条件,赋值满减金额 减的金额
  1874. acttype3.Add(modelactive.F_ID, modelactive.F_Money.Split(',')[i].ObjToDecimal());
  1875. actlist.Add(new UseActInput { id = modelactive.F_ID, type = 3, gift = "", money = modelactive.F_Money.Split(',')[i].ObjToDecimal(), actname = modelactive.F_Name, actdes = modelactive.F_PromotionRules });
  1876. }
  1877. }
  1878. }
  1879. }
  1880. else if (modelactive.F_Type == 4)
  1881. {
  1882. //限时特惠
  1883. //判断此人是否有参与活动的资格 默认暂不筛选
  1884. if (chooseact.ContainsKey(modelactive.F_ID))
  1885. {
  1886. chooseact[modelactive.F_ID] = chooseact[modelactive.F_ID] + "," + m.F_ProductId.ToString();
  1887. actlist.ForEach(q => { if (q.id == modelactive.F_ID) { q.gift = q.gift + m.F_ProductId.ToString(); } });
  1888. }
  1889. else
  1890. {
  1891. chooseact.Add(modelactive.F_ID, "4_" + m.F_ProductId.ToString());
  1892. actlist.Add(new UseActInput { id = modelactive.F_ID, type = 4, gift = m.F_ProductId.ToString(), money = modelactive.F_Money.ObjToDecimal(), actname = modelactive.F_Name, actdes = modelactive.F_PromotionRules });
  1893. }
  1894. }
  1895. }
  1896. }
  1897. }
  1898. }
  1899. return Success("参与活动", actlist);
  1900. }
  1901. /// <summary>
  1902. /// 获取订单详情
  1903. /// </summary>
  1904. /// <param name="input"></param>
  1905. /// <returns></returns>
  1906. [HttpPost("getorderdetail")]
  1907. public async Task<IActionResult> GetOrderDetail(string orderid)
  1908. {
  1909. if (string.IsNullOrEmpty(orderid))
  1910. return Error("请输入订单号");
  1911. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == orderid);
  1912. OrderInput modelreturn = new OrderInput();
  1913. if (modelOrder != null)
  1914. {
  1915. ModelConvertHelper<OrderInput, T_Bus_Order>.ModeToModel(modelreturn, modelOrder);
  1916. List<OrderDetailInput> modeldetailreturn = new List<OrderDetailInput>();
  1917. List<T_Bus_OrderDetail> detaillist = await bus_OrderDetailRepository.GetListALL(q => q.F_OrderId == modelOrder.F_Id, o => o.F_Sort, OrderByType.Asc);
  1918. if (detaillist != null)
  1919. {
  1920. foreach (T_Bus_OrderDetail m in detaillist)
  1921. {
  1922. OrderDetailInput model = new OrderDetailInput();
  1923. model.F_ProductName = m.F_ProductName;
  1924. model.F_ProductId = m.F_ProductId;
  1925. model.F_Specifications = m.F_Specifications;
  1926. model.F_ProductShortName = m.F_ProductShortName;
  1927. model.F_Id = m.F_Id;
  1928. model.F_OrderId = m.F_OrderId;
  1929. model.F_Count = m.F_Count;
  1930. model.F_Price = m.F_Price;
  1931. model.F_DealPrice = m.F_DealPrice;
  1932. model.F_Sort = m.F_Sort;
  1933. model.F_AddTime = m.F_AddTime;
  1934. model.F_Remark = m.F_Remark;
  1935. model.F_AddUser = m.F_AddUser;
  1936. model.F_AddUserName = m.F_ProductName;
  1937. model.F_TotlePrice = m.F_TotlePrice;
  1938. model.F_Activity = m.F_Activity;
  1939. modeldetailreturn.Add(model);
  1940. }
  1941. }
  1942. modelreturn.OrderDetailList = modeldetailreturn;
  1943. List<UseActInput> actlist = new List<UseActInput>();
  1944. List<T_Sys_Marketing> modelactiveList = await bus_MarketingRepository.GetListALL(b => ("," + modelOrder.F_UseActivity + ",").Contains(("," + b.F_ID.ToString() + ",")));
  1945. if (modelactiveList != null && modelactiveList.Count > 0)
  1946. {
  1947. foreach (T_Sys_Marketing modelactive in modelactiveList)
  1948. {
  1949. actlist.Add(new UseActInput { id = modelactive.F_ID, type = modelactive.F_Type, gift = modelactive.F_Gift, money = modelactive.F_Money.ObjToDecimal(), actname = modelactive.F_Name, actdes = modelactive.F_PromotionRules });
  1950. }
  1951. }
  1952. modelreturn.UseActList = actlist;
  1953. }
  1954. else
  1955. return Error("订单不存在");
  1956. Expression<Func<T_Bus_Orderlogs , bool>> eq = a => a.F_WoID == orderid;
  1957. var ItemList = await busOrderlogsRepository.GetListALL(eq, o => o.F_CreateTime , OrderByType.Asc);
  1958. var obj = new
  1959. {
  1960. modelreturn,
  1961. ItemList
  1962. };
  1963. return Content(obj.ToJson());
  1964. }
  1965. /// <summary>
  1966. /// 获取订单分页列表
  1967. /// </summary>
  1968. /// <param name="input"></param>
  1969. /// <returns></returns>
  1970. [HttpPost("getorderlistbypage")]
  1971. public async Task<IActionResult> GetXSOrderListByPage(OrderInput input)
  1972. {
  1973. List<IConditionalModel> conModels = new List<IConditionalModel>();
  1974. #region 条件筛选
  1975. conModels.Add(new ConditionalModel() { FieldName = "F_State", ConditionalType = ConditionalType.GreaterThanOrEqual, FieldValue = "0" });
  1976. //状态
  1977. if (input.F_State > -2)
  1978. {
  1979. conModels.Add(new ConditionalModel() { FieldName = "F_State", ConditionalType = ConditionalType.Equal, FieldValue = input.F_State.ToString() });
  1980. }
  1981. //根据角色展示列表
  1982. if (UserLogin.RoleCode == "XS")
  1983. {
  1984. conModels.Add(new ConditionalCollections()
  1985. {
  1986. ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>>()
  1987. {
  1988. new KeyValuePair<WhereType, ConditionalModel>( WhereType.And , new ConditionalModel() { FieldName = "F_AddUser", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId }),
  1989. new KeyValuePair<WhereType, ConditionalModel>( WhereType.Or, new ConditionalModel() { FieldName = "F_Belong", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId })
  1990. }
  1991. } );
  1992. }
  1993. else if (UserLogin.RoleCode == "KF" && input.F_State != 1)
  1994. {
  1995. conModels.Add(new ConditionalModel() { FieldName = "F_CheckUser", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId });
  1996. }
  1997. else if (UserLogin.RoleCode == "KG" && input.F_State != 3)
  1998. {
  1999. conModels.Add(new ConditionalModel() { FieldName = "F_StockUser", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId });
  2000. //OR conModels.Add(new ConditionalModel() { FieldName = "F_SendUser", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId });
  2001. }
  2002. if (!string.IsNullOrEmpty(input.F_ADFrom))
  2003. {
  2004. conModels.Add(new ConditionalModel() { FieldName = "F_ADFrom", ConditionalType = ConditionalType.Equal, FieldValue = input.F_ADFrom });
  2005. }
  2006. if (!string.IsNullOrEmpty(input.F_Type))
  2007. {
  2008. conModels.Add(new ConditionalModel() { FieldName = "F_Type", ConditionalType = ConditionalType.Equal, FieldValue = input.F_Type });
  2009. }
  2010. if (!string.IsNullOrEmpty(input.F_Id))
  2011. {
  2012. conModels.Add(new ConditionalModel() { FieldName = "F_Id", ConditionalType = ConditionalType.Equal, FieldValue = input.F_Id });
  2013. }
  2014. if (!string.IsNullOrEmpty(input.F_Customer))
  2015. {
  2016. conModels.Add(new ConditionalModel() { FieldName = "F_Customer", ConditionalType = ConditionalType.Equal, FieldValue = input.F_Customer });
  2017. }
  2018. if (!string.IsNullOrEmpty(input.F_CustomerPhone))
  2019. {
  2020. conModels.Add(new ConditionalModel() { FieldName = "F_CustomerPhone", ConditionalType = ConditionalType.Equal, FieldValue = input.F_CustomerPhone });
  2021. }
  2022. if (!string.IsNullOrEmpty(input.F_TrackingNo))
  2023. {
  2024. conModels.Add(new ConditionalModel() { FieldName = "F_TrackingNo", ConditionalType = ConditionalType.Equal, FieldValue = input.F_TrackingNo });
  2025. }
  2026. if (!string.IsNullOrEmpty(input.F_AddProvince))
  2027. {
  2028. conModels.Add(new ConditionalModel() { FieldName = "F_AddProvince", ConditionalType = ConditionalType.Equal, FieldValue = input.F_AddProvince });
  2029. }
  2030. if (!string.IsNullOrEmpty(input.F_AddCity))
  2031. {
  2032. conModels.Add(new ConditionalModel() { FieldName = "F_AddCity", ConditionalType = ConditionalType.Equal, FieldValue = input.F_AddCity });
  2033. }
  2034. if (!string.IsNullOrEmpty(input.F_AddArea))
  2035. {
  2036. conModels.Add(new ConditionalModel() { FieldName = "F_AddArea", ConditionalType = ConditionalType.Equal, FieldValue = input.F_AddArea });
  2037. }
  2038. if (!string.IsNullOrEmpty(input.F_AddTown))
  2039. {
  2040. conModels.Add(new ConditionalModel() { FieldName = "F_AddTown", ConditionalType = ConditionalType.Equal, FieldValue = input.F_AddTown });
  2041. }
  2042. if (!string.IsNullOrEmpty(input.F_Express))
  2043. {
  2044. conModels.Add(new ConditionalModel() { FieldName = "F_Express", ConditionalType = ConditionalType.Equal, FieldValue = input.F_Express });
  2045. }
  2046. if (!string.IsNullOrEmpty(input.F_PayType))
  2047. {
  2048. conModels.Add(new ConditionalModel() { FieldName = "F_PayType", ConditionalType = ConditionalType.Equal, FieldValue = input.F_PayType });
  2049. }
  2050. if (!string.IsNullOrEmpty(input.F_Stock))
  2051. {
  2052. conModels.Add(new ConditionalModel() { FieldName = "F_Stock", ConditionalType = ConditionalType.Equal, FieldValue = input.F_Stock });
  2053. }
  2054. if (input.F_PayState > -1)
  2055. {
  2056. conModels.Add(new ConditionalModel() { FieldName = "F_PayState", ConditionalType = ConditionalType.Equal, FieldValue = input.F_PayState.ToString() });
  2057. }
  2058. if (input.SearchEndTime != null)
  2059. {
  2060. conModels.Add(new ConditionalModel() { FieldName = "F_AddTime", ConditionalType = ConditionalType.LessThan, FieldValue = input.SearchEndTime.GetValueOrDefault().ToString("yyyy-MM-dd 23:59:59") });
  2061. }
  2062. if (input.SearchStartTime != null)
  2063. {
  2064. conModels.Add(new ConditionalModel() { FieldName = "F_AddTime", ConditionalType = ConditionalType.GreaterThan, FieldValue = input.SearchStartTime.GetValueOrDefault().ToString("yyyy-MM-dd 00:00:01") });
  2065. }
  2066. #endregion
  2067. RefAsync<int> recordCount = 0;
  2068. PageData<T_Bus_Order> list = await bus_OrderRepository.GetListByPage(conModels, new MyPageModel() { PageIndex = input.pageindex, PageSize = input.pagesize, PageCount = recordCount }, " F_AddTime DESC");
  2069. PageData<OrderInput> returnobj = new PageData<OrderInput>() { Totals = list.Totals };
  2070. List<OrderInput> returnlist = new List<OrderInput>();
  2071. foreach (T_Bus_Order t in list.Rows)
  2072. {
  2073. OrderInput m = new OrderInput();
  2074. ModelConvertHelper<OrderInput, T_Bus_Order>.ModeToModel(m, t);
  2075. List<OrderDetailInput> orderDetailInputs = new List<OrderDetailInput>();
  2076. #region 遍历订单商品
  2077. List<T_Bus_OrderDetail> orderDetails = await bus_OrderDetailRepository.GetListALL(q => q.F_OrderId == t.F_Id);
  2078. if (orderDetails != null)
  2079. {
  2080. foreach (T_Bus_OrderDetail t1 in orderDetails)
  2081. {
  2082. OrderDetailInput m1 = new OrderDetailInput();
  2083. ModelConvertHelper<OrderDetailInput, T_Bus_OrderDetail>.ModeToModel(m1, t1);
  2084. orderDetailInputs.Add(m1);
  2085. }
  2086. }
  2087. #endregion
  2088. m.OrderDetailList = orderDetailInputs;
  2089. m.IsSale = busAfterSaleRepository.GetListALL(x => x.F_OrderId == t.F_Id).Result!=null
  2090. ? busAfterSaleRepository.GetListALL(x => x.F_OrderId == t.F_Id).Result.Count :0;
  2091. returnlist.Add(m);
  2092. }
  2093. returnobj.Rows = returnlist;
  2094. return Success("成功", returnobj);
  2095. }
  2096. /// <summary>
  2097. /// 撤回未审核订单
  2098. /// </summary>
  2099. /// <param name="orderid">订单号</param>
  2100. /// <param name="state">订单状态 -1无效 0暂存 1提交 2KF退回 3通过 4KG退回 5已分拣 6已发货</param>
  2101. /// <param name="remark">客服备注</param>
  2102. /// <returns></returns>
  2103. [HttpPost("cancelorder")]
  2104. public async Task<IActionResult> CancelOrder(string orderids, int state = 0)
  2105. {
  2106. try
  2107. {
  2108. //状态变化 积分变化 处理时间人变化 库存变化 备注
  2109. T_Cus_VipInfo modelvip = new T_Cus_VipInfo();
  2110. #region 验证参数 必填项
  2111. if (string.IsNullOrEmpty(orderids))
  2112. return Error("请选择订单号");
  2113. if (state != 0)
  2114. return Error("请选择操作类型");
  2115. string[] orderid = orderids.Split(',');
  2116. string msg = "";
  2117. #endregion
  2118. List<T_Bus_Orderlogs> logs = new List<T_Bus_Orderlogs>();
  2119. List<T_Bus_Order> orders = new List<T_Bus_Order>();
  2120. foreach (var it in orderid)
  2121. {
  2122. T_Bus_Orderlogs t_Bus_Orderlogs = new T_Bus_Orderlogs();
  2123. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == it && new int[] { 3, 4, 7 }.Contains(q.F_State));
  2124. if (modelOrder == null)
  2125. {
  2126. msg +="订单"+ modelOrder .F_Id + "已审核";
  2127. continue;
  2128. }
  2129. else
  2130. {
  2131. if (modelOrder.F_State ==1)
  2132. {
  2133. List<T_Bus_OrderDetail> detaillist = await bus_OrderDetailRepository.GetListALL(q => q.F_OrderId == modelOrder.F_Id, o => o.F_Sort, OrderByType.Asc);
  2134. List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
  2135. if (detaillist != null && detaillist.Count > 0)
  2136. {
  2137. foreach (var iv in detaillist)
  2138. {
  2139. T_Bus_Product t_Bus_Product = await bus_productRepository.GetSingle(x => x.F_ProductId == iv.F_ProductId);
  2140. if (t_Bus_Product != null)
  2141. {
  2142. t_Bus_Product.F_UseNumber -= iv.F_Count;
  2143. Productlist.Add(t_Bus_Product);
  2144. }
  2145. else
  2146. {
  2147. msg += "订单" + modelOrder.F_Id + "退回失败,商品不存在.";
  2148. continue;
  2149. }
  2150. }
  2151. if (Productlist != null && Productlist.Count > 0)
  2152. {
  2153. if (!await bus_productRepository.UpdateList(Productlist))
  2154. {
  2155. msg += "订单" + modelOrder.F_Id + "退回失败";
  2156. continue;
  2157. }
  2158. }
  2159. else
  2160. {
  2161. msg += "订单" + modelOrder.F_Id + "退回失败,请选择商品";
  2162. continue;
  2163. }
  2164. }
  2165. }
  2166. modelOrder.F_State = state;
  2167. t_Bus_Orderlogs.F_WoID = modelOrder.F_Id;
  2168. t_Bus_Orderlogs.F_CreateUser = UserLogin.UserCode;
  2169. t_Bus_Orderlogs.F_CreateTime = DateTime.Now;
  2170. t_Bus_Orderlogs.F_OptContent = UserLogin.UserName + "撤回订单";
  2171. t_Bus_Orderlogs.F_WoState = modelOrder.F_State;
  2172. logs.Add(t_Bus_Orderlogs);
  2173. orders.Add(modelOrder);
  2174. }
  2175. }
  2176. // string strStock = await busOrderFunctionController.ChangeStockOne(modelOrder, 0, null);
  2177. // if (strStock != "1")
  2178. // return Error(strStock);
  2179. // modelOrder.F_State = 0;
  2180. // modelOrder.F_Score = 0.00M;
  2181. if (msg =="")
  2182. {
  2183. await busOrderlogsRepository.AddAndUpdateList(logs);
  2184. if (await bus_OrderRepository.UpdateList(orders))
  2185. return Success("订单成功审核!");
  2186. }
  2187. else
  2188. return Error(msg);
  2189. return Error("订单审核失败,请汇报技术支持!");
  2190. }
  2191. catch (Exception ex)
  2192. { return Error(ex.Message); }
  2193. }
  2194. [HttpPost("ordermoney")]
  2195. public async Task<IActionResult> OrderMoney(OrderMoneyInput input)
  2196. {
  2197. try
  2198. {
  2199. #region 验证参数 必填项
  2200. if (string.IsNullOrEmpty(input.F_OrderId))
  2201. return Error("请输入订单号");
  2202. if (string.IsNullOrEmpty(input.F_PayUser))
  2203. return Error("请输入打款人");
  2204. if (string.IsNullOrEmpty(input.F_PayType))
  2205. return Error("请输入打款方式");
  2206. if (string.IsNullOrEmpty(input.F_RemarkKF))
  2207. input.F_RemarkKF = "";
  2208. if (string.IsNullOrEmpty(input.F_RemarkXS))
  2209. input.F_RemarkXS = "";
  2210. if (input.F_PayTime==null)
  2211. return Error("请输入打款时间");
  2212. if (input.F_Money <= 0)
  2213. return Error("请输入金额");
  2214. #endregion
  2215. T_Bus_OrderMoney modelOrderMoeny = new T_Bus_OrderMoney();
  2216. ModelConvertHelper<T_Bus_OrderMoney, OrderMoneyInput>.ModeToModelDefault(modelOrderMoeny, input);
  2217. modelOrderMoeny.F_AddUserId =UserLogin.UserId.ObjToInt();
  2218. modelOrderMoeny.F_UserName = UserLogin.UserName;
  2219. modelOrderMoeny.F_MoneyBak= modelOrderMoeny.F_Money;
  2220. modelOrderMoeny.F_State= 0;
  2221. modelOrderMoeny.F_Id = Guid.NewGuid().ToString().Replace("-","");
  2222. if (await busOrderMoneyRepository.AddReturnCount(modelOrderMoeny))
  2223. return Success("成功!");
  2224. return Error("失败!");
  2225. }
  2226. catch (Exception ex)
  2227. { return Error(ex.Message); }
  2228. }
  2229. private async Task<int> AddLog(string WoID,string count,string user,int state)
  2230. {
  2231. T_Bus_Orderlogs logs = new T_Bus_Orderlogs();
  2232. logs.F_WoID = WoID;
  2233. logs.F_WoState = state;
  2234. logs.F_OptContent = count;
  2235. logs.F_CreateUser = user;
  2236. logs.F_CreateTime = DateTime .Now ;
  2237. var res =await busOrderlogsRepository.Add(logs);
  2238. return res;
  2239. }
  2240. }
  2241. }