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

OrderController.cs 116KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478
  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_Id = Guid.NewGuid().ToString().Replace("-", "");
  540. modelDetail.F_OrderId = input.F_Id;
  541. modelDetail.F_Count = 1;
  542. modelDetail.F_Price = 0.00M;
  543. modelDetail.F_DealPrice = 0.00M;
  544. modelDetail.F_Sort = n2;
  545. modelDetail.F_Remark = "赠品-活动:" + act.id;
  546. modelDetail.F_AddUser = modelOrder.F_AddUser;
  547. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  548. modelDetail.F_TotlePrice = 0.00M;
  549. modelDetail.F_Activity = act.id;
  550. modelDetail.F_AddTime = DateTime.Now;
  551. modelDetailList.Add(modelDetail);
  552. n2++;
  553. }
  554. }
  555. }
  556. //生日赠
  557. else if (act.type == 2)
  558. {
  559. UseActivity2 += act.gift + ",";
  560. }
  561. //满减
  562. else if (act.type == 3)
  563. {
  564. ActivityMoney += act.money;
  565. }
  566. else if (act.type == 4)
  567. {
  568. UseActivity4 += act.gift + ",";
  569. }
  570. }
  571. UseActivity = UseActivity.Trim(',');
  572. }
  573. #endregion
  574. #region 商品核算
  575. foreach (OrderDetailInput m in input.OrderDetailList)
  576. {
  577. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  578. if (modelProduct == null)
  579. return Error("商品不存在:" + m.F_ProductId);
  580. if (modelProduct.F_OnSaleEnd<DateTime .Now &&UserLogin.RoleCode != "SH")
  581. {
  582. return Error ("商品已下架:" + m.F_ProductId);
  583. }
  584. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  585. modelDetail.F_ProductName = modelProduct.F_ProductName;
  586. modelDetail.F_ProductId = modelProduct.F_ProductId;
  587. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  588. modelDetail.F_OrderId = input.F_Id;
  589. modelDetail.F_Count = m.F_Count;
  590. modelDetail.F_Price = modelProduct.F_MemberPrice;
  591. //参加活动特价
  592. if (UseActivity4.Contains("," + modelProduct.F_ProductId + ","))
  593. modelDetail.F_DealPrice = modelProduct.F_SpecialPrice;
  594. else
  595. modelDetail.F_DealPrice = modelProduct.F_MemberPrice;
  596. //参加生日
  597. if (UseActivity2.Contains("," + modelProduct.F_ProductId + ","))
  598. {
  599. modelDetail.F_DealPrice = 0.00M;
  600. modelDetail.F_Remark = "生日赠品-活动:";
  601. }
  602. modelDetail.F_Sort = n;
  603. modelDetail.F_AddTime = DateTime.Now;
  604. modelDetail.F_AddUser = modelOrder.F_AddUser;
  605. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  606. modelDetail.F_TotlePrice = modelDetail.F_DealPrice * modelDetail.F_Count;
  607. modelDetail.F_Activity = 0;
  608. if (modelProduct.F_Tag.IndexOf(".") > -1 && !string.IsNullOrEmpty(UseActivity))
  609. {
  610. string[] tagarry = modelProduct.F_Tag.Split(',');
  611. string[] actlist = UseActivity.Split(',');
  612. string tag = tagarry.First(a => a.StartsWith(".")).ToString();
  613. 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 + ",")));
  614. //此商品参加活动
  615. if (modelactive != null)
  616. {
  617. modelDetail.F_Activity = modelactive.F_ID;
  618. }
  619. }
  620. else { modelDetail.F_Activity = 0; }
  621. totle += modelDetail.F_TotlePrice;
  622. modelDetailList.Add(modelDetail);
  623. n++;
  624. }
  625. #endregion
  626. modelOrder.F_TotlePrice = totle;
  627. modelOrder.F_ActivityMoney = ActivityMoney;
  628. modelOrder.F_UseActivity = UseActivity;
  629. }
  630. else
  631. {
  632. //不改变订单
  633. }
  634. #endregion
  635. //订单完成后也不计算积分
  636. modelOrder.F_TotlePrice += input.F_ExpressFee;//订单总额(包括快递费)
  637. modelOrder.F_RecommenderTel = input.F_RecommenderTel;
  638. modelOrder.F_PayState = 0;
  639. if (input .F_State ==1)
  640. {
  641. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  642. { }
  643. else
  644. { return Error("请选择订购商品"); }
  645. if (string.IsNullOrEmpty(modelOrder.F_AddPhone))
  646. {
  647. return Error("收件人电话不能为空");
  648. }
  649. if (string.IsNullOrEmpty(modelOrder.F_AddTown))
  650. {
  651. return Error("收件人地址不能为空");
  652. }
  653. if (string.IsNullOrEmpty(modelOrder.F_Address))
  654. {
  655. return Error("收件人详细地址不能为空");
  656. }
  657. List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
  658. if (modelDetailList != null && modelDetailList.Count > 0)
  659. {
  660. foreach (var it in modelDetailList)
  661. {
  662. T_Bus_Product t_Bus_Product = await bus_productRepository.GetSingle(x => x.F_ProductId == it.F_ProductId);
  663. if (t_Bus_Product != null)
  664. {
  665. List<EBossStock> listStock = await busOrderFunctionController.GetStock(it.F_ProductId, "山西仓");
  666. List<EBossStock> listStock1 = await busOrderFunctionController.GetStock(it.F_ProductId, "新乡仓");
  667. t_Bus_Product.F_UseNumber += it.F_Count;
  668. if (t_Bus_Product.F_UseNumber > listStock[0].qty && t_Bus_Product.F_UseNumber > listStock1[0].qty)
  669. {
  670. return Error ( "提交失败,可配量不足.");
  671. }
  672. else
  673. {
  674. Productlist.Add(t_Bus_Product);
  675. }
  676. }
  677. else
  678. {
  679. return Error("提交失败,商品不存在");
  680. }
  681. }
  682. }
  683. modelOrder.F_SubmitTime = DateTime.Now;
  684. if (modelOrder.F_IsPayment > 0)
  685. modelOrder.F_State = 7;
  686. else
  687. modelOrder.F_State = 0;
  688. modelOrder.F_FlowNum = DateTime.Now.ToString("yyMMddHHmmss") + "U" + UserLogin.UserId + "R" + new Random().Next(9);
  689. }
  690. string count = UserLogin.UserName + "创建订单";
  691. int t = await AddLog(modelOrder.F_Id, count, UserLogin.UserId, modelOrder.F_State);
  692. if (t >0)
  693. {
  694. if (await bus_OrderRepository.AddReturnCount(modelOrder))
  695. {
  696. if (modelDetailList != null && modelDetailList.Count > 0)
  697. {
  698. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  699. {
  700. return Success("订单添加成功2");
  701. }
  702. else
  703. return Error("订单添加失败,请重试!1");
  704. }
  705. return Success("订单添加成功1");
  706. }
  707. }
  708. return Error("订单添加失败,请重试!2");
  709. }
  710. catch (Exception ex)
  711. { return Error(ex.Message); }
  712. }
  713. /// <summary>
  714. /// 获取总金额
  715. /// </summary>
  716. /// <param name="OrderDetailList"></param>
  717. /// <param name="UseActList"></param>
  718. /// <returns></returns>
  719. [HttpPost("getPrice")]
  720. public async Task<IActionResult> GetPrice(List<OrderDetailInput> OrderDetailList
  721. , List<UseActInput> UseActList, decimal F_ExpressFee =0)
  722. {
  723. decimal totle = 0.00M;
  724. decimal ActivityMoney = 0.00M;
  725. string UseActivity = "";
  726. string UseActivity4 = ",";
  727. string UseActivity2 = ",";
  728. if (OrderDetailList != null && OrderDetailList.Count > 0)
  729. {
  730. int n = 1;
  731. int n2 = OrderDetailList.Count + 1;
  732. #region 活动核算
  733. if (UseActList != null && UseActList.Count > 0)
  734. {
  735. //遍历所有选中的活动
  736. foreach (UseActInput act in UseActList)
  737. {
  738. UseActivity += act.id + ",";
  739. if (act.type == 2)
  740. {
  741. UseActivity2 += act.gift + ",";
  742. }
  743. //满减
  744. else if (act.type == 3)
  745. {
  746. ActivityMoney += act.money;
  747. }
  748. else if (act.type == 4)
  749. {
  750. UseActivity4 += act.gift + ",";
  751. }
  752. }
  753. UseActivity = UseActivity.Trim(',');
  754. }
  755. #endregion
  756. #region 商品核算
  757. foreach (OrderDetailInput m in OrderDetailList)
  758. {
  759. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  760. if (modelProduct == null)
  761. return Error("商品不存在:" + m.F_ProductId);
  762. if (modelProduct.F_OnSaleEnd < DateTime.Now && UserLogin.RoleCode != "SH")
  763. {
  764. return Error("商品已下架:" + m.F_ProductId);
  765. }
  766. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  767. //参加活动特价
  768. if (UseActivity4.Contains("," + modelProduct.F_ProductId + ","))
  769. modelDetail.F_DealPrice = modelProduct.F_SpecialPrice;
  770. else
  771. modelDetail.F_DealPrice = modelProduct.F_MemberPrice;
  772. //参加生日
  773. if (UseActivity2.Contains("," + modelProduct.F_ProductId + ","))
  774. {
  775. modelDetail.F_DealPrice = 0.00M;
  776. modelDetail.F_Remark = "生日赠品-活动:";
  777. }
  778. modelDetail.F_Count = m.F_Count;
  779. modelDetail.F_TotlePrice = modelDetail.F_DealPrice * modelDetail.F_Count;
  780. totle += modelDetail.F_TotlePrice;
  781. n++;
  782. }
  783. #endregion
  784. }
  785. else
  786. {
  787. //不改变订单
  788. }
  789. totle += F_ExpressFee;
  790. return Success("获取成功", totle);
  791. }
  792. /// <summary>
  793. /// 提交订单 Audit payment
  794. /// </summary>
  795. /// <param name="input"></param>
  796. /// <returns></returns>
  797. [HttpPost("submit")]
  798. public async Task<IActionResult> Submit(string orderids)
  799. {
  800. string msg = "";
  801. if (string.IsNullOrEmpty(orderids))
  802. return Error("请选择订单号");
  803. string[] ids = orderids.Split(',');
  804. List<T_Bus_Orderlogs> logs = new List<T_Bus_Orderlogs>();
  805. List<T_Bus_Order> orderLIst = new List<T_Bus_Order>();
  806. foreach (var item in ids)
  807. {
  808. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == item);
  809. T_Bus_Orderlogs t_Bus_Orderlogs = new T_Bus_Orderlogs();
  810. List<T_Bus_OrderDetail> detaillist = await bus_OrderDetailRepository.GetListALL(q => q.F_OrderId == modelOrder.F_Id, o => o.F_Sort, OrderByType.Asc);
  811. if (detaillist != null && detaillist.Count > 0)
  812. { }
  813. else
  814. { msg += "订单" + modelOrder.F_Id + "请选择订购商品"; continue; }
  815. if (string.IsNullOrEmpty(modelOrder.F_AddPhone))
  816. {
  817. msg += "订单" + modelOrder.F_Id + "收件人电话不能为空";
  818. continue;
  819. }
  820. if (string.IsNullOrEmpty(modelOrder.F_AddTown))
  821. {
  822. msg += "订单" + modelOrder.F_Id + "收件人地址不能为空";
  823. continue;
  824. }
  825. if (string.IsNullOrEmpty(modelOrder.F_Address))
  826. {
  827. msg += "订单" + modelOrder.F_Id + "收件人详细地址不能为空";
  828. continue;
  829. }
  830. List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
  831. if (detaillist!=null && detaillist.Count >0)
  832. {
  833. foreach (var it in detaillist)
  834. {
  835. T_Bus_Product t_Bus_Product = await bus_productRepository.GetSingle(x => x.F_ProductId == it.F_ProductId);
  836. if (t_Bus_Product.F_OnSaleEnd < DateTime.Now && UserLogin.RoleCode != "SH")
  837. {
  838. return Error("商品已下架:" + t_Bus_Product.F_ProductId);
  839. }
  840. if (t_Bus_Product!=null )
  841. {
  842. List<EBossStock> listStock = await busOrderFunctionController.GetStock(it.F_ProductId, "山西仓");
  843. List<EBossStock> listStock1 = await busOrderFunctionController.GetStock(it.F_ProductId, "新乡仓");
  844. t_Bus_Product.F_UseNumber += it.F_Count;
  845. if (t_Bus_Product.F_UseNumber> listStock[0].qty&& t_Bus_Product.F_UseNumber > listStock1[0].qty)
  846. {
  847. msg += "订单" + modelOrder.F_Id + "提交失败,可配量不足.";
  848. continue;
  849. }
  850. else
  851. {
  852. Productlist.Add(t_Bus_Product);
  853. }
  854. }
  855. else
  856. {
  857. msg += "订单" + modelOrder.F_Id + "提交失败,商品不存在.";
  858. continue;
  859. }
  860. }
  861. }
  862. if (msg=="")
  863. {
  864. if (Productlist!=null && Productlist.Count >0)
  865. {
  866. if (!await bus_productRepository.UpdateList(Productlist))
  867. msg += "订单" + modelOrder.F_Id + "提交失败";
  868. continue;
  869. }
  870. else
  871. msg += "订单" + modelOrder.F_Id + "提交失败,请选择商品";
  872. continue;
  873. }
  874. /**
  875. string strStock = await busOrderFunctionController.ChangeStockOne(modelOrder, 1, detaillist);
  876. if (strStock == "1")
  877. {
  878. if (modelscore.F_Start == 1)
  879. {
  880. //订单完成后计算积分
  881. modelOrder.F_Score = -0.01M;
  882. }
  883. #endregion
  884. //计算结果 积分有规则
  885. modelOrder.F_ShouldPrice = modelOrder.F_TotlePrice - modelOrder.F_ActivityMoney + modelOrder.F_ExpressFee - modelOrder.F_UseScore / modelscore.F_DebitPercent;
  886. if (! await bus_OrderRepository.Update(modelOrder))
  887. {
  888. msg += "订单" + modelOrder.F_Id + "提交失败";
  889. }
  890. }
  891. else
  892. {
  893. msg += "订单" + modelOrder.F_Id + strStock;
  894. }
  895. **/
  896. modelOrder.F_SubmitTime = DateTime.Now;
  897. if (modelOrder.F_IsPayment > 0)
  898. modelOrder.F_State = 7;
  899. else
  900. modelOrder.F_State = 1;
  901. modelOrder.F_FlowNum = DateTime.Now.ToString("yyMMddHHmmss") + "U" + UserLogin.UserId + "R" + new Random().Next(9);
  902. orderLIst.Add(modelOrder);
  903. t_Bus_Orderlogs.F_WoID = modelOrder.F_Id;
  904. t_Bus_Orderlogs.F_OptContent = UserLogin.UserName + "提交订单";
  905. t_Bus_Orderlogs.F_CreateUser = UserLogin.UserCode;
  906. t_Bus_Orderlogs.F_CreateTime = DateTime.Now;
  907. t_Bus_Orderlogs.F_WoState = modelOrder.F_State;
  908. logs.Add(t_Bus_Orderlogs);
  909. }
  910. if (msg =="")
  911. {
  912. await busOrderlogsRepository.AddAndUpdateList(logs);
  913. if (await bus_OrderRepository.UpdateList(orderLIst))
  914. return Success("提交成功");
  915. else
  916. return Error("提交失败");
  917. }
  918. else
  919. return Error(msg);
  920. }
  921. /// <summary>
  922. /// 审核订单金额
  923. /// </summary>
  924. /// <param name="input"></param>
  925. /// <returns></returns>
  926. [HttpPost("checkordermoney")]
  927. public async Task<IActionResult> CheckOrderMoney(string orderids,int state)
  928. {
  929. try
  930. {
  931. #region 验证参数 必填项
  932. if (string.IsNullOrEmpty(orderids))
  933. return Error("请选择订单号");
  934. string[] ids = orderids.Split(',');
  935. List<T_Bus_Order> _Orders = new List<T_Bus_Order>();
  936. List<T_Bus_OrderMoney> orderMoney = new List<T_Bus_OrderMoney>();
  937. List<T_Bus_Orderlogs> logs = new List<T_Bus_Orderlogs>();
  938. string msg = "";
  939. foreach (var it in ids)
  940. {
  941. #endregion
  942. T_Bus_Orderlogs t_Bus_Orderlogs = new T_Bus_Orderlogs();
  943. Expression<Func<T_Bus_OrderMoney, bool>> eq = a => a.F_OrderId == it;
  944. T_Bus_OrderMoney modelOrderMoeny = busOrderMoneyRepository.GetListALL(eq, o => o.F_AddTime, OrderByType.Asc).Result .FirstOrDefault ();
  945. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == modelOrderMoeny.F_OrderId);
  946. modelOrderMoeny.F_State = state;
  947. if (modelOrderMoeny.F_State == 1)
  948. {
  949. if (modelOrder.F_PayState == 1 || modelOrder.F_PayState == 3)
  950. {
  951. msg += "订单" + it+ "此单已结算";
  952. continue;
  953. }
  954. modelOrder.F_RealPrice = modelOrder.F_RealPrice + modelOrderMoeny.F_Money;
  955. if (modelOrder.F_PayState == 0)
  956. {
  957. if (modelOrder.F_ShouldPrice <= modelOrder.F_RealPrice)
  958. {
  959. //0待回款1已支付 2待退款3已退款
  960. modelOrder.F_PayState = 1;
  961. }
  962. }
  963. else if (modelOrder.F_PayState == 2)
  964. {
  965. if (modelOrder.F_ShouldPrice <= modelOrder.F_RealPrice)
  966. {
  967. //0待回款1已支付 2待退款3已退款
  968. modelOrder.F_PayState = 3;
  969. }
  970. }
  971. modelOrder.F_State = 1;
  972. t_Bus_Orderlogs.F_OptContent = UserLogin.UserName + "审核付款金额,审核通过";
  973. _Orders.Add(modelOrder);
  974. }
  975. else
  976. {
  977. List<T_Bus_OrderDetail> detaillist = await bus_OrderDetailRepository.GetListALL(q => q.F_OrderId == modelOrder.F_Id, o => o.F_Sort, OrderByType.Asc);
  978. List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
  979. if (detaillist != null && detaillist.Count > 0)
  980. {
  981. foreach (var iv in detaillist)
  982. {
  983. T_Bus_Product t_Bus_Product = await bus_productRepository.GetSingle(x => x.F_ProductId == iv.F_ProductId);
  984. if (t_Bus_Product != null)
  985. {
  986. if (t_Bus_Product.F_OnSaleEnd < DateTime.Now && UserLogin.RoleCode != "SH")
  987. {
  988. return Error("商品已下架:" + t_Bus_Product.F_ProductId);
  989. }
  990. t_Bus_Product.F_UseNumber -= iv.F_Count;
  991. Productlist.Add(t_Bus_Product);
  992. }
  993. else
  994. {
  995. msg += "订单" + modelOrder.F_Id + "提交失败,商品不存在.";
  996. continue;
  997. }
  998. }
  999. }
  1000. if (msg == "")
  1001. {
  1002. if (Productlist != null && Productlist.Count > 0)
  1003. {
  1004. if (!await bus_productRepository.UpdateList(Productlist))
  1005. {
  1006. msg += "订单" + modelOrder.F_Id + "提交失败";
  1007. continue;
  1008. }
  1009. }
  1010. else
  1011. {
  1012. msg += "订单" + modelOrder.F_Id + "提交失败,请选择商品";
  1013. continue;
  1014. }
  1015. }
  1016. t_Bus_Orderlogs.F_OptContent = UserLogin.UserName + "审核付款金额,审核不通过";
  1017. modelOrder.F_State = 0;
  1018. _Orders.Add(modelOrder);
  1019. }
  1020. orderMoney.Add(modelOrderMoeny);
  1021. t_Bus_Orderlogs.F_WoID = modelOrder.F_Id;
  1022. t_Bus_Orderlogs.F_CreateUser = UserLogin.UserCode;
  1023. t_Bus_Orderlogs.F_CreateTime = DateTime.Now;
  1024. t_Bus_Orderlogs.F_WoState = modelOrder.F_State;
  1025. logs.Add(t_Bus_Orderlogs);
  1026. }
  1027. if (msg == "")
  1028. {
  1029. await busOrderlogsRepository.AddAndUpdateList(logs);
  1030. if (await busOrderMoneyRepository.UpdateList(orderMoney))
  1031. {
  1032. if (await bus_OrderRepository.UpdateList(_Orders))
  1033. return Success("成功");
  1034. }
  1035. }
  1036. else
  1037. return Error(msg);
  1038. return Error("失败!");
  1039. }
  1040. catch (Exception ex)
  1041. { return Error(ex.Message); }
  1042. }
  1043. #region
  1044. /// <summary>
  1045. /// 修改订单
  1046. /// </summary>
  1047. /// <param name="input"></param>
  1048. /// <returns></returns>
  1049. /**
  1050. [HttpPost("editorder")]
  1051. public async Task<IActionResult> EditOrder([FromBody]OrderInput input)
  1052. {
  1053. T_Cus_VipInfo modelvip = new T_Cus_VipInfo();
  1054. #region 验证参数 必填项
  1055. if (string.IsNullOrEmpty(input.F_ADFrom))
  1056. return Error("请输入选择广告来源");
  1057. if (string.IsNullOrEmpty(input.F_Type))
  1058. return Error("请输入选择订单类型");
  1059. if (string.IsNullOrEmpty(input.F_Id))
  1060. return Error("请输入订单编号");
  1061. if (string.IsNullOrEmpty(input.F_Customer))
  1062. return Error("请输入客户姓名");
  1063. if (string.IsNullOrEmpty(input.F_CustomerPhone))
  1064. return Error("请输入客户电话");
  1065. if (input.F_Type == "售后订单")
  1066. return Error("售后订单销售不能修改");
  1067. #endregion
  1068. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == input.F_Id);
  1069. if (modelOrder == null)
  1070. {
  1071. return Error("此订单号不存在");
  1072. }
  1073. //保存 审退回 仓退回
  1074. if (!(new int[] { 0, 2 }.Contains(modelOrder.F_State)))
  1075. {
  1076. return Error("已提交订单不允许修改,先撤回订单");
  1077. }
  1078. #region 数据绑定
  1079. //必填
  1080. modelOrder.F_ADFrom = input.F_ADFrom;
  1081. modelOrder.F_Type = input.F_Type;
  1082. modelOrder.F_Customer = input.F_Customer;
  1083. modelOrder.F_CustomerPhone = input.F_CustomerPhone;
  1084. if (input.F_RecommendId > 0)
  1085. {
  1086. modelOrder.F_RecommendId = input.F_RecommendId;
  1087. modelOrder.F_RecommendName = input.F_RecommendName;
  1088. }
  1089. if (input.F_CustomerType > 0)
  1090. { modelOrder.F_CustomerType = input.F_CustomerType; }
  1091. if (!string.IsNullOrEmpty(input.F_CustomerTel))
  1092. { modelOrder.F_CustomerTel = input.F_CustomerTel; }
  1093. //选填 快递属性
  1094. modelOrder.F_TrackingNo = "";
  1095. if (!string.IsNullOrEmpty(input.F_Addressee))
  1096. { modelOrder.F_Addressee = input.F_Addressee; }
  1097. if (!string.IsNullOrEmpty(input.F_AddPhone))
  1098. { modelOrder.F_AddPhone = input.F_AddPhone; }
  1099. if (!string.IsNullOrEmpty(input.F_AddProvince))
  1100. { modelOrder.F_AddProvince = input.F_AddProvince; }
  1101. if (!string.IsNullOrEmpty(input.F_AddCity))
  1102. { modelOrder.F_AddCity = input.F_AddCity; }
  1103. if (!string.IsNullOrEmpty(input.F_AddArea))
  1104. { modelOrder.F_AddArea = input.F_AddArea; }
  1105. if (!string.IsNullOrEmpty(input.F_AddTown))
  1106. { modelOrder.F_AddTown = input.F_AddTown; }
  1107. if (!string.IsNullOrEmpty(input.F_AddDes))
  1108. { modelOrder.F_AddDes = input.F_AddDes; }
  1109. if (!string.IsNullOrEmpty(input.F_Address))
  1110. { modelOrder.F_Address = input.F_Address; }
  1111. if (!string.IsNullOrEmpty(input.F_PostalCode))
  1112. { modelOrder.F_PostalCode = input.F_PostalCode; }
  1113. if (!string.IsNullOrEmpty(input.F_Express))
  1114. { modelOrder.F_Express = input.F_Express; }
  1115. if (!string.IsNullOrEmpty(input.F_Remark))
  1116. { modelOrder.F_Remark = input.F_Remark; }
  1117. if (!string.IsNullOrEmpty(input.F_PayType))
  1118. { modelOrder.F_PayType = input.F_PayType; }
  1119. if (input.F_Belong > 0)
  1120. {
  1121. modelOrder.F_Belong = input.F_Belong;
  1122. modelOrder.F_BelongName = input.F_BelongName;
  1123. }
  1124. else
  1125. {
  1126. modelOrder.F_Belong = UserLogin.UserId.ObjToInt();
  1127. modelOrder.F_BelongName = UserLogin.UserName;
  1128. }
  1129. modelOrder.F_ExpressFee = input.F_ExpressFee;
  1130. modelOrder.F_Stock = input.F_Stock;
  1131. modelOrder.F_RealPrice = input.F_RealPrice;
  1132. modelOrder.F_UseScore = input.F_UseScore;
  1133. //选填 关联属性
  1134. if (input.F_VipId>0)
  1135. modelOrder.F_VipId = input.F_VipId;
  1136. else
  1137. {
  1138. var vip = await cus_vip_infoRepository.GetListALL(x => x.F_Phone == input.F_CustomerPhone
  1139. && x.F_State == 1);
  1140. if (vip != null && vip.Count > 0)
  1141. modelOrder.F_VipId = vip.FirstOrDefault().F_ID;
  1142. else
  1143. modelOrder.F_VipId = 0;
  1144. }
  1145. modelOrder.F_State = input.F_State;
  1146. modelOrder.F_Status = 0;
  1147. modelOrder.F_IsPayment = input.F_IsPayment;
  1148. if (input.F_IsPayment > 0 && input.F_PaymentMoney <= 0)
  1149. return Error("付款金额不能小于0");
  1150. //必须属性 系统生成
  1151. modelOrder.F_AddTime = DateTime.Now;
  1152. modelOrder.F_AddUser = UserLogin.UserId.ObjToInt();
  1153. modelOrder.F_AddUserName = UserLogin.UserName;
  1154. #endregion
  1155. //计算属性 商品计算
  1156. decimal totle = 0.00M;
  1157. decimal ActivityMoney = 0.00M;
  1158. string UseActivity = "";
  1159. string UseActivity4 = ",";
  1160. string UseActivity2 = ",";
  1161. List<T_Bus_OrderDetail> modelDetailList = new List<T_Bus_OrderDetail>();
  1162. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  1163. {
  1164. #region 核算活动
  1165. int n2 = input.OrderDetailList.Count + 1;
  1166. if (input.UseActList != null && input.UseActList.Count > 0)
  1167. {
  1168. //遍历所有选中的活动
  1169. foreach (UseActInput act in input.UseActList)
  1170. {
  1171. UseActivity += act.id + ",";
  1172. //满赠
  1173. if (act.type == 1)
  1174. {
  1175. string[] productidlist = act.gift.Split(',');
  1176. foreach (string giftid in productidlist)
  1177. {
  1178. T_Bus_Product m = await bus_productRepository.GetSingle(b => ("," + giftid + ",").Contains("," + b.F_ProductId + ",") && b.F_IsSale == 0);
  1179. if (m != null)
  1180. {
  1181. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  1182. modelDetail.F_ProductName = m.F_ProductName;
  1183. modelDetail.F_ProductId = m.F_ProductId;
  1184. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  1185. modelDetail.F_OrderId = input.F_Id;
  1186. modelDetail.F_Count = 1;
  1187. modelDetail.F_Price = 0.00M;
  1188. modelDetail.F_DealPrice = 0.00M;
  1189. modelDetail.F_Sort = n2;
  1190. modelDetail.F_Remark = "赠品-活动:" + act.id;
  1191. modelDetail.F_AddUser = modelOrder.F_AddUser;
  1192. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  1193. modelDetail.F_TotlePrice = 0.00M;
  1194. modelDetail.F_Activity = act.id;
  1195. modelDetail.F_AddTime = DateTime.Now.AddSeconds(30);
  1196. modelDetailList.Add(modelDetail);
  1197. n2++;
  1198. }
  1199. }
  1200. }
  1201. //生日赠
  1202. else if (act.type == 2)
  1203. {
  1204. UseActivity2 += act.gift + ",";
  1205. }
  1206. //满减
  1207. else if (act.type == 3)
  1208. {
  1209. ActivityMoney += act.money;
  1210. }
  1211. else if (act.type == 4)
  1212. {
  1213. UseActivity4 += act.gift + ",";
  1214. }
  1215. }
  1216. UseActivity = UseActivity.Trim(',');
  1217. }
  1218. #endregion
  1219. #region 核算商品
  1220. int n = 1;
  1221. foreach (OrderDetailInput m in input.OrderDetailList)
  1222. {
  1223. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  1224. if (modelProduct == null) return Error("在售商品不存在");
  1225. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  1226. modelDetail.F_ProductName = modelProduct.F_ProductName;
  1227. modelDetail.F_ProductId = modelProduct.F_ProductId;
  1228. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  1229. modelDetail.F_OrderId = input.F_Id;
  1230. modelDetail.F_Count = m.F_Count;
  1231. modelDetail.F_Price = modelProduct.F_MemberPrice;
  1232. //参加活动特价
  1233. if (UseActivity4.Contains("," + modelProduct.F_ProductId + ","))
  1234. modelDetail.F_DealPrice = modelProduct.F_SpecialPrice;
  1235. else
  1236. modelDetail.F_DealPrice = modelProduct.F_MemberPrice;
  1237. //参加生日
  1238. if (UseActivity2.Contains("," + modelProduct.F_ProductId + ","))
  1239. {
  1240. modelDetail.F_DealPrice = 0.00M;
  1241. modelDetail.F_Remark = "生日赠品-活动:";
  1242. }
  1243. modelDetail.F_Sort = n;
  1244. modelDetail.F_AddTime = DateTime.Now;
  1245. modelDetail.F_AddUser = modelOrder.F_AddUser;
  1246. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  1247. modelDetail.F_TotlePrice = modelDetail.F_DealPrice * modelDetail.F_Count;
  1248. modelDetail.F_Activity = 0;
  1249. if (modelProduct.F_Tag.IndexOf(".") > -1 && !string.IsNullOrEmpty(UseActivity))
  1250. {
  1251. string[] tagarry = modelProduct.F_Tag.Split(',');
  1252. string[] actlist = UseActivity.Split(',');
  1253. string tag = tagarry.First(a => a.StartsWith(".")).ToString();
  1254. 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 + ",")));
  1255. //此商品参加活动
  1256. if (modelactive != null)
  1257. {
  1258. modelDetail.F_Activity = modelactive.F_ID;
  1259. }
  1260. }
  1261. totle += modelDetail.F_TotlePrice;
  1262. modelDetailList.Add(modelDetail);
  1263. n++;
  1264. }
  1265. #endregion
  1266. modelOrder.F_TotlePrice = totle;
  1267. modelOrder.F_ActivityMoney = ActivityMoney;
  1268. modelOrder.F_UseActivity = UseActivity;
  1269. }
  1270. else
  1271. {
  1272. //不传商品 表明不修改商品信息 不重新计算商品
  1273. }
  1274. //直接提交 锁库存
  1275. T_Cus_ScoreSet modelscore = await cus_score_setRepository.GetSingle(x => x.F_State == 1);
  1276. if (modelscore == null)
  1277. {
  1278. modelscore = new T_Cus_ScoreSet();
  1279. modelscore.F_Start = 0;
  1280. modelscore.F_StartDebit = 1;
  1281. modelscore.F_DebitPercent = 1000;
  1282. }
  1283. #region 提交 更改状态 库存 积分
  1284. if (input.F_State == 1)
  1285. {
  1286. if (string.IsNullOrEmpty(input.F_Stock))
  1287. {
  1288. return Error("请选择出库货仓");
  1289. }
  1290. if (string.IsNullOrEmpty(modelOrder.F_Express))
  1291. {
  1292. return Error("快递不能为空");
  1293. }
  1294. if (string.IsNullOrEmpty(modelOrder.F_AddPhone))
  1295. {
  1296. return Error("收件人电话不能为空");
  1297. }
  1298. if (string.IsNullOrEmpty(modelOrder.F_AddTown))
  1299. {
  1300. return Error("收件人地址不能为空");
  1301. }
  1302. if (string.IsNullOrEmpty(modelOrder.F_Address))
  1303. {
  1304. return Error("收件人详细地址不能为空");
  1305. }
  1306. modelOrder.F_FlowNum = DateTime.Now.ToString("yyMMddHHmmss") + "U" + UserLogin.UserId + "R" + new Random().Next(9);
  1307. if (modelscore.F_Start == 1)
  1308. {
  1309. //订单完成后计算积分
  1310. modelOrder.F_Score = -0.01M;
  1311. }
  1312. else
  1313. { //订单完成后也不计算积分
  1314. modelOrder.F_Score = 0.00M;
  1315. }
  1316. if (modelscore.F_StartDebit == 0 || modelOrder.F_VipId == 0)
  1317. {
  1318. modelOrder.F_UseScore = 0;
  1319. }
  1320. string strStock = await busOrderFunctionController.ChangeStockOne(modelOrder, 1, modelDetailList);
  1321. if (strStock != "1")
  1322. { return Error(strStock); }
  1323. modelOrder.F_SubmitTime = DateTime.Now;
  1324. }
  1325. #endregion
  1326. if (!modelOrder.F_Type.Contains("售后"))
  1327. { modelOrder.F_ShouldPrice = modelOrder.F_TotlePrice - modelOrder.F_ActivityMoney + modelOrder.F_ExpressFee - modelOrder.F_UseScore / modelscore.F_DebitPercent;
  1328. }
  1329. 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));
  1330. modelOrder.F_RealPrice = dt.Rows[0][0].ObjToDecimal() ;
  1331. if (modelOrder.F_ShouldPrice > 0)
  1332. {
  1333. if (modelOrder.F_ShouldPrice <= modelOrder.F_RealPrice)
  1334. modelOrder.F_PayState = 1;
  1335. else
  1336. modelOrder.F_PayState = 0;
  1337. }
  1338. else
  1339. {
  1340. if (modelOrder.F_ShouldPrice >= modelOrder.F_RealPrice)
  1341. modelOrder.F_PayState = 3;
  1342. else
  1343. modelOrder.F_PayState = 2;
  1344. }
  1345. //待付款 客服审核付款情况后改为已付款
  1346. if (await bus_OrderRepository.Update(modelOrder))
  1347. {
  1348. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  1349. {
  1350. //删除之前订单商品,重新添加
  1351. if (await bus_OrderDetailRepository.Delete(q => q.F_OrderId == modelOrder.F_Id))
  1352. {
  1353. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  1354. return Success("订单生成成功");
  1355. else
  1356. return Error("订单操作失败,请重试1!");
  1357. }
  1358. else {
  1359. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  1360. return Success("订单生成成功2");
  1361. else
  1362. return Error("订单操作失败,请重试2!");
  1363. }
  1364. }
  1365. else { return Success("成功"); }
  1366. }
  1367. return Error("订单添加失败,请重试!");
  1368. }
  1369. **/
  1370. #endregion
  1371. #region
  1372. /// <summary>
  1373. /// 修改订单
  1374. /// </summary>
  1375. /// <param name="input"></param>
  1376. /// <returns></returns>
  1377. [HttpPost("editorder")]
  1378. public async Task<IActionResult> EditOrder([FromBody]OrderInput input)
  1379. {
  1380. T_Cus_VipInfo modelvip = new T_Cus_VipInfo();
  1381. #region 验证参数 必填项
  1382. if (string.IsNullOrEmpty(input.F_ADFrom))
  1383. return Error("请输入选择广告来源");
  1384. if (string.IsNullOrEmpty(input.F_Type))
  1385. return Error("请输入选择订单类型");
  1386. if (string.IsNullOrEmpty(input.F_Id))
  1387. return Error("请输入订单编号");
  1388. if (string.IsNullOrEmpty(input.F_Customer))
  1389. return Error("请输入客户姓名");
  1390. if (string.IsNullOrEmpty(input.F_CustomerPhone))
  1391. return Error("请输入客户电话");
  1392. if (input.F_Type == "售后订单")
  1393. return Error("售后订单销售不能修改");
  1394. #endregion
  1395. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == input.F_Id);
  1396. if (modelOrder == null)
  1397. {
  1398. return Error("此订单号不存在");
  1399. }
  1400. //保存 审退回 仓退回
  1401. if (!(new int[] { 0, 2 }.Contains(modelOrder.F_State)))
  1402. {
  1403. return Error("已提交订单不允许修改,先撤回订单");
  1404. }
  1405. #region 数据绑定
  1406. //必填
  1407. modelOrder.F_ADFrom = input.F_ADFrom;
  1408. modelOrder.F_Type = input.F_Type;
  1409. modelOrder.F_Customer = input.F_Customer;
  1410. modelOrder.F_CustomerPhone = input.F_CustomerPhone;
  1411. if (input.F_RecommendId > 0)
  1412. {
  1413. modelOrder.F_RecommendId = input.F_RecommendId;
  1414. modelOrder.F_RecommendName = input.F_RecommendName;
  1415. }
  1416. if (input.F_CustomerType > 0)
  1417. { modelOrder.F_CustomerType = input.F_CustomerType; }
  1418. if (!string.IsNullOrEmpty(input.F_CustomerTel))
  1419. { modelOrder.F_CustomerTel = input.F_CustomerTel; }
  1420. //选填 快递属性
  1421. modelOrder.F_TrackingNo = "";
  1422. if (!string.IsNullOrEmpty(input.F_Addressee))
  1423. { modelOrder.F_Addressee = input.F_Addressee; }
  1424. if (!string.IsNullOrEmpty(input.F_AddPhone))
  1425. { modelOrder.F_AddPhone = input.F_AddPhone; }
  1426. if (!string.IsNullOrEmpty(input.F_AddProvince))
  1427. { modelOrder.F_AddProvince = input.F_AddProvince; }
  1428. if (!string.IsNullOrEmpty(input.F_AddCity))
  1429. { modelOrder.F_AddCity = input.F_AddCity; }
  1430. if (!string.IsNullOrEmpty(input.F_AddArea))
  1431. { modelOrder.F_AddArea = input.F_AddArea; }
  1432. if (!string.IsNullOrEmpty(input.F_AddTown))
  1433. { modelOrder.F_AddTown = input.F_AddTown; }
  1434. if (!string.IsNullOrEmpty(input.F_AddDes))
  1435. { modelOrder.F_AddDes = input.F_AddDes; }
  1436. if (!string.IsNullOrEmpty(input.F_Address))
  1437. { modelOrder.F_Address = input.F_Address; }
  1438. // if (!string.IsNullOrEmpty(input.F_PostalCode))//快递
  1439. // { modelOrder.F_PostalCode = input.F_PostalCode; }
  1440. if (!string.IsNullOrEmpty(input.F_Express))
  1441. { modelOrder.F_Express = input.F_Express; }
  1442. if (!string.IsNullOrEmpty(input.F_Remark))
  1443. { modelOrder.F_Remark = input.F_Remark; }
  1444. if (!string.IsNullOrEmpty(input.F_PayType))
  1445. { modelOrder.F_PayType = input.F_PayType; }
  1446. if (input.F_Belong > 0)
  1447. {
  1448. modelOrder.F_Belong = input.F_Belong;
  1449. modelOrder.F_BelongName = input.F_BelongName;
  1450. }
  1451. else
  1452. {
  1453. modelOrder.F_Belong = UserLogin.UserId.ObjToInt();
  1454. modelOrder.F_BelongName = UserLogin.UserName;
  1455. }
  1456. modelOrder.F_ExpressFee = input.F_ExpressFee;
  1457. // modelOrder.F_Stock = input.F_Stock;//仓库
  1458. modelOrder.F_IsExpress = 0;
  1459. modelOrder.F_MemberNotes = input.F_MemberNotes;//会员备注
  1460. modelOrder.F_RealPrice = input.F_RealPrice;
  1461. modelOrder.F_UseScore = input.F_UseScore;
  1462. //选填 关联属性
  1463. if (input.F_VipId>0)
  1464. modelOrder.F_VipId = input.F_VipId;
  1465. else
  1466. {
  1467. var vip = await cus_vip_infoRepository.GetListALL(x => x.F_Phone == input.F_CustomerPhone
  1468. && x.F_State == 1);
  1469. if (vip != null && vip.Count > 0)
  1470. modelOrder.F_VipId = vip.FirstOrDefault().F_ID;
  1471. else
  1472. modelOrder.F_VipId = 0;
  1473. }
  1474. if (input .F_IsPayment >0)
  1475. {
  1476. try
  1477. {
  1478. if (string.IsNullOrEmpty(input.OrderMoney.F_PayUser))
  1479. return Error("请输入打款人");
  1480. if (string.IsNullOrEmpty(input.F_PayType))
  1481. return Error("请输入打款方式");
  1482. if (string.IsNullOrEmpty(input.OrderMoney.F_RemarkKF))
  1483. input.OrderMoney.F_RemarkKF = "";
  1484. if (string.IsNullOrEmpty(input.OrderMoney.F_RemarkXS))
  1485. input.OrderMoney.F_RemarkXS = "";
  1486. if (input.OrderMoney.F_PayTime == null)
  1487. return Error("请输入打款时间");
  1488. if (input.OrderMoney.F_Money <= 0)
  1489. return Error("请输入金额");
  1490. #region 验证参数 必填项
  1491. Expression<Func<T_Bus_OrderMoney, bool>> eq = a => a.F_OrderId == input .F_Id ;
  1492. var modelOrderMoen = await busOrderMoneyRepository.GetListALL(eq, o => o.F_AddTime, OrderByType.Asc);
  1493. T_Bus_OrderMoney modelOrderMoeny = new T_Bus_OrderMoney();
  1494. if (modelOrderMoen != null && modelOrderMoen.Count >0)
  1495. {
  1496. modelOrderMoeny = modelOrderMoen.FirstOrDefault();
  1497. }
  1498. #endregion
  1499. ModelConvertHelper<T_Bus_OrderMoney, OrderMoneyInput>.ModeToModelDefault(modelOrderMoeny, input.OrderMoney);
  1500. modelOrderMoeny.F_AddUserId = UserLogin.UserId.ObjToInt();
  1501. modelOrderMoeny.F_UserName = UserLogin.UserName;
  1502. modelOrderMoeny.F_MoneyBak = modelOrderMoeny.F_Money;
  1503. modelOrderMoeny.F_State = 0;
  1504. modelOrderMoeny.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  1505. if (!await busOrderMoneyRepository.AddReturnCount(modelOrderMoeny))
  1506. return Error("付款失败");
  1507. }
  1508. catch (Exception ex)
  1509. { return Error(ex.Message); }
  1510. }
  1511. modelOrder.F_State = input.F_State;
  1512. modelOrder.F_Status = 0;
  1513. modelOrder.F_IsPayment = input.F_IsPayment;
  1514. //必须属性 系统生成
  1515. modelOrder.F_AddTime = DateTime.Now;
  1516. modelOrder.F_AddUser = UserLogin.UserId.ObjToInt();
  1517. modelOrder.F_AddUserName = UserLogin.UserName;
  1518. #endregion
  1519. //计算属性 商品计算
  1520. decimal totle = 0.00M;
  1521. decimal ActivityMoney = 0.00M;
  1522. string UseActivity = "";
  1523. string UseActivity4 = ",";
  1524. string UseActivity2 = ",";
  1525. List<T_Bus_OrderDetail> modelDetailList = new List<T_Bus_OrderDetail>();
  1526. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  1527. {
  1528. #region 核算活动
  1529. int n2 = input.OrderDetailList.Count + 1;
  1530. if (input.UseActList != null && input.UseActList.Count > 0)
  1531. {
  1532. //遍历所有选中的活动
  1533. foreach (UseActInput act in input.UseActList)
  1534. {
  1535. UseActivity += act.id + ",";
  1536. //满赠
  1537. if (act.type == 1)
  1538. {
  1539. string[] productidlist = act.gift.Split(',');
  1540. foreach (string giftid in productidlist)
  1541. {
  1542. T_Bus_Product m = await bus_productRepository.GetSingle(b => ("," + giftid + ",").Contains("," + b.F_ProductId + ",") && b.F_IsSale == 0);
  1543. if (m != null)
  1544. {
  1545. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  1546. modelDetail.F_ProductName = m.F_ProductName;
  1547. modelDetail.F_ProductId = m.F_ProductId;
  1548. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  1549. modelDetail.F_OrderId = input.F_Id;
  1550. modelDetail.F_Count = 1;
  1551. modelDetail.F_Price = 0.00M;
  1552. modelDetail.F_DealPrice = 0.00M;
  1553. modelDetail.F_Sort = n2;
  1554. modelDetail.F_Remark = "赠品-活动:" + act.id;
  1555. modelDetail.F_AddUser = modelOrder.F_AddUser;
  1556. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  1557. modelDetail.F_TotlePrice = 0.00M;
  1558. modelDetail.F_Activity = act.id;
  1559. modelDetail.F_AddTime = DateTime.Now.AddSeconds(30);
  1560. modelDetailList.Add(modelDetail);
  1561. n2++;
  1562. }
  1563. }
  1564. }
  1565. //生日赠
  1566. else if (act.type == 2)
  1567. {
  1568. UseActivity2 += act.gift + ",";
  1569. }
  1570. //满减
  1571. else if (act.type == 3)
  1572. {
  1573. ActivityMoney += act.money;
  1574. }
  1575. else if (act.type == 4)
  1576. {
  1577. UseActivity4 += act.gift + ",";
  1578. }
  1579. }
  1580. UseActivity = UseActivity.Trim(',');
  1581. }
  1582. #endregion
  1583. #region 核算商品
  1584. int n = 1;
  1585. foreach (OrderDetailInput m in input.OrderDetailList)
  1586. {
  1587. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  1588. if (modelProduct == null) return Error("在售商品不存在");
  1589. T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
  1590. modelDetail.F_ProductName = modelProduct.F_ProductName;
  1591. modelDetail.F_ProductId = modelProduct.F_ProductId;
  1592. modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
  1593. modelDetail.F_OrderId = input.F_Id;
  1594. modelDetail.F_Count = m.F_Count;
  1595. modelDetail.F_Price = modelProduct.F_MemberPrice;
  1596. //参加活动特价
  1597. if (UseActivity4.Contains("," + modelProduct.F_ProductId + ","))
  1598. modelDetail.F_DealPrice = modelProduct.F_SpecialPrice;
  1599. else
  1600. modelDetail.F_DealPrice = modelProduct.F_MemberPrice;
  1601. //参加生日
  1602. if (UseActivity2.Contains("," + modelProduct.F_ProductId + ","))
  1603. {
  1604. modelDetail.F_DealPrice = 0.00M;
  1605. modelDetail.F_Remark = "生日赠品-活动:";
  1606. }
  1607. modelDetail.F_Sort = n;
  1608. modelDetail.F_AddTime = DateTime.Now;
  1609. modelDetail.F_AddUser = modelOrder.F_AddUser;
  1610. modelDetail.F_AddUserName = modelOrder.F_AddUserName;
  1611. modelDetail.F_TotlePrice = modelDetail.F_DealPrice * modelDetail.F_Count;
  1612. modelDetail.F_Activity = 0;
  1613. if (modelProduct.F_Tag.IndexOf(".") > -1 && !string.IsNullOrEmpty(UseActivity))
  1614. {
  1615. string[] tagarry = modelProduct.F_Tag.Split(',');
  1616. string[] actlist = UseActivity.Split(',');
  1617. string tag = tagarry.First(a => a.StartsWith(".")).ToString();
  1618. 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 + ",")));
  1619. //此商品参加活动
  1620. if (modelactive != null)
  1621. {
  1622. modelDetail.F_Activity = modelactive.F_ID;
  1623. }
  1624. }
  1625. totle += modelDetail.F_TotlePrice;
  1626. modelDetailList.Add(modelDetail);
  1627. n++;
  1628. }
  1629. #endregion
  1630. modelOrder.F_TotlePrice = totle;
  1631. modelOrder.F_ActivityMoney = ActivityMoney;
  1632. modelOrder.F_UseActivity = UseActivity;
  1633. }
  1634. else
  1635. {
  1636. //不传商品 表明不修改商品信息 不重新计算商品
  1637. }
  1638. modelOrder.F_TotlePrice +=input. F_ExpressFee;
  1639. //直接提交 锁库存
  1640. T_Cus_ScoreSet modelscore = await cus_score_setRepository.GetSingle(x => x.F_State == 1);
  1641. if (modelscore == null)
  1642. {
  1643. modelscore = new T_Cus_ScoreSet();
  1644. modelscore.F_Start = 0;
  1645. modelscore.F_StartDebit = 1;
  1646. modelscore.F_DebitPercent = 1000;
  1647. }
  1648. #region 提交 更改状态 库存 积分
  1649. if (input.F_State == 1)
  1650. {
  1651. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  1652. { }
  1653. else
  1654. { return Error("请选择订购商品"); }
  1655. if (string.IsNullOrEmpty(modelOrder.F_AddPhone))
  1656. {
  1657. return Error("收件人电话不能为空");
  1658. }
  1659. if (string.IsNullOrEmpty(modelOrder.F_AddTown))
  1660. {
  1661. return Error("收件人地址不能为空");
  1662. }
  1663. if (string.IsNullOrEmpty(modelOrder.F_Address))
  1664. {
  1665. return Error("收件人详细地址不能为空");
  1666. }
  1667. List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
  1668. if (modelDetailList != null && modelDetailList.Count > 0)
  1669. {
  1670. foreach (var it in modelDetailList)
  1671. {
  1672. T_Bus_Product t_Bus_Product = await bus_productRepository.GetSingle(x => x.F_ProductId == it.F_ProductId);
  1673. if (t_Bus_Product != null)
  1674. {
  1675. List<EBossStock> listStock = await busOrderFunctionController.GetStock(it.F_ProductId, "山西仓");
  1676. List<EBossStock> listStock1 = await busOrderFunctionController.GetStock(it.F_ProductId, "新乡仓");
  1677. t_Bus_Product.F_UseNumber += it.F_Count;
  1678. if (t_Bus_Product.F_UseNumber > listStock[0].qty && t_Bus_Product.F_UseNumber > listStock1[0].qty)
  1679. {
  1680. return Error("提交失败,可配量不足.");
  1681. }
  1682. else
  1683. {
  1684. Productlist.Add(t_Bus_Product);
  1685. }
  1686. }
  1687. else
  1688. {
  1689. return Error("提交失败,商品不存在");
  1690. }
  1691. }
  1692. }
  1693. modelOrder.F_SubmitTime = DateTime.Now;
  1694. if (modelOrder.F_IsPayment > 0)
  1695. modelOrder.F_State = 7;
  1696. else
  1697. modelOrder.F_State = 1;
  1698. modelOrder.F_FlowNum = DateTime.Now.ToString("yyMMddHHmmss") + "U" + UserLogin.UserId + "R" + new Random().Next(9);
  1699. }
  1700. // if (modelscore.F_Start == 1)
  1701. // {
  1702. //订单完成后计算积分
  1703. // modelOrder.F_Score = -0.01M;
  1704. // }
  1705. // else
  1706. // { //订单完成后也不计算积分
  1707. // modelOrder.F_Score = 0.00M;
  1708. // }
  1709. // if (modelscore.F_StartDebit == 0 || modelOrder.F_VipId == 0)
  1710. // {
  1711. // modelOrder.F_UseScore = 0;
  1712. // }
  1713. // string strStock = await busOrderFunctionController.ChangeStockOne(modelOrder, 1, modelDetailList);
  1714. // if (strStock != "1")
  1715. // { return Error(strStock); }
  1716. // modelOrder.F_SubmitTime = DateTime.Now;
  1717. // }
  1718. #endregion
  1719. if (!modelOrder.F_Type.Contains("售后"))
  1720. { modelOrder.F_ShouldPrice = modelOrder.F_TotlePrice - modelOrder.F_ActivityMoney + modelOrder.F_ExpressFee - modelOrder.F_UseScore / modelscore.F_DebitPercent;
  1721. }
  1722. 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));
  1723. modelOrder.F_RealPrice = dt.Rows[0][0].ObjToDecimal() ;
  1724. if (modelOrder.F_ShouldPrice > 0)
  1725. {
  1726. if (modelOrder.F_ShouldPrice <= modelOrder.F_RealPrice)
  1727. modelOrder.F_PayState = 1;
  1728. else
  1729. modelOrder.F_PayState = 0;
  1730. }
  1731. else
  1732. {
  1733. if (modelOrder.F_ShouldPrice >= modelOrder.F_RealPrice)
  1734. modelOrder.F_PayState = 3;
  1735. else
  1736. modelOrder.F_PayState = 2;
  1737. }
  1738. //待付款 客服审核付款情况后改为已付款
  1739. string count = UserLogin.UserName + "修改订单";
  1740. int t = await AddLog(modelOrder.F_Id, count, UserLogin.UserId, modelOrder.F_State);
  1741. if (t >0)
  1742. {
  1743. if (await bus_OrderRepository.Update(modelOrder))
  1744. {
  1745. if (input.OrderDetailList != null && input.OrderDetailList.Count > 0)
  1746. {
  1747. //删除之前订单商品,重新添加
  1748. if (await bus_OrderDetailRepository.Delete(q => q.F_OrderId == modelOrder.F_Id))
  1749. {
  1750. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  1751. return Success("订单生成成功");
  1752. else
  1753. return Error("订单操作失败,请重试1!");
  1754. }
  1755. else
  1756. {
  1757. if (await bus_OrderDetailRepository.AddMany(modelDetailList))
  1758. return Success("订单生成成功2");
  1759. else
  1760. return Error("订单操作失败,请重试2!");
  1761. }
  1762. }
  1763. else { return Success("成功"); }
  1764. }
  1765. }
  1766. return Error("订单添加失败,请重试!");
  1767. }
  1768. #endregion
  1769. /// <summary>
  1770. /// 根据商品组合 获取符合的所有活动
  1771. /// </summary>
  1772. /// <param name="input"></param>
  1773. /// <returns></returns>
  1774. [HttpPost("getact")]
  1775. public async Task<IActionResult> GetAct([FromBody]List<OrderDetailInput> input)
  1776. {
  1777. decimal def = 0.00M;
  1778. if (input.Count < 1)
  1779. return Error("请选择商品/数量");
  1780. //统计活动金额是否符合条件 满减
  1781. Dictionary<int, decimal> acttype3 = new Dictionary<int, decimal>();
  1782. //内部计算
  1783. Dictionary<int, decimal> innerCompute = new Dictionary<int, decimal>();
  1784. //选择活动
  1785. Dictionary<int, string> chooseact = new Dictionary<int, string>();
  1786. List<UseActInput> actlist = new List<UseActInput>();
  1787. foreach (OrderDetailInput m in input)
  1788. {
  1789. T_Bus_Product modelProduct = await bus_productRepository.GetSingle(b => b.F_ProductId == m.F_ProductId);
  1790. if (modelProduct != null)
  1791. {
  1792. if (modelProduct.F_OnSaleEnd < DateTime.Now && UserLogin.RoleCode != "SH")
  1793. {
  1794. return Error("商品已下架:" + modelProduct.F_ProductId);
  1795. }
  1796. //是否有活动标签
  1797. if (modelProduct.F_Tag.IndexOf(".") > -1)
  1798. {
  1799. string[] tagarry = modelProduct.F_Tag.Split(',');
  1800. string tag = tagarry.First(a => a.StartsWith(".")).ToString();
  1801. //标签内有效期
  1802. 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);
  1803. //此商品参加活动
  1804. if (Marketing != null)
  1805. {
  1806. T_Sys_Marketing modelactive = Marketing.FirstOrDefault();
  1807. if (modelactive.F_Type == 1)
  1808. {
  1809. //满赠
  1810. //判断此人是否有参与活动的资格 默认暂不筛选
  1811. if (chooseact.ContainsKey(modelactive.F_ID))
  1812. continue;
  1813. if (innerCompute.ContainsKey(modelactive.F_ID))
  1814. {
  1815. innerCompute[modelactive.F_ID] = (decimal)modelProduct.F_MemberPrice * m.F_Count + innerCompute[modelactive.F_ID].ObjToDecimal();
  1816. }
  1817. else
  1818. {
  1819. innerCompute.Add(modelactive.F_ID, (decimal)modelProduct.F_MemberPrice * m.F_Count);
  1820. }
  1821. if (modelactive.F_Money.ObjToDecimal() <= (decimal)innerCompute[modelactive.F_ID])
  1822. {
  1823. chooseact.Add(modelactive.F_ID, "1_" + modelactive.F_Gift);
  1824. actlist.Add(new UseActInput { id = modelactive.F_ID, type = 1, gift = modelactive.F_Gift, money = def, actname = modelactive.F_Name, actdes = modelactive.F_PromotionRules });
  1825. }
  1826. }
  1827. else if (modelactive.F_Type == 2)
  1828. {
  1829. // 生日
  1830. //TODO 判断此人是否有参与活动的资格 默认暂不筛选
  1831. if (chooseact.ContainsKey(modelactive.F_ID))
  1832. continue;
  1833. chooseact.Add(modelactive.F_ID, "2_" + modelactive.F_Commodity);
  1834. actlist.Add(new UseActInput { id = modelactive.F_ID, type = 2, gift = modelactive.F_Gift, money = def, actname = modelactive.F_Name, actdes = modelactive.F_PromotionRules });
  1835. }
  1836. else if (modelactive.F_Type == 3)
  1837. {
  1838. //满减
  1839. //判断此人是否有参与活动的资格 默认暂不筛选
  1840. if (innerCompute.ContainsKey(modelactive.F_ID))
  1841. {
  1842. innerCompute[modelactive.F_ID] = (decimal)modelProduct.F_MemberPrice * m.F_Count + innerCompute[modelactive.F_ID];
  1843. }
  1844. else
  1845. {
  1846. innerCompute.Add(modelactive.F_ID, (decimal)modelProduct.F_MemberPrice * m.F_Count);
  1847. }
  1848. string[] AmountRange = modelactive.F_AmountRange.Split(',');
  1849. for (int i = 0; i < AmountRange.Length; i++)
  1850. {
  1851. //符合满减某个条件
  1852. if (innerCompute[modelactive.F_ID] >= AmountRange[i].ObjToDecimal())
  1853. {
  1854. if (acttype3.ContainsKey(modelactive.F_ID))
  1855. {
  1856. //当前减免金额大于之前发赋值,替换掉
  1857. if (modelactive.F_Money.Split(',')[i].ObjToDecimal() > acttype3[modelactive.F_ID])
  1858. {
  1859. acttype3[modelactive.F_ID] = modelactive.F_Money.Split(',')[i].ObjToDecimal();
  1860. actlist.ForEach(q => { if (q.id == modelactive.F_ID) { q.money = modelactive.F_Money.Split(',')[i].ObjToDecimal(); } });
  1861. }
  1862. }
  1863. else
  1864. {
  1865. //满足条件,赋值满减金额 减的金额
  1866. acttype3.Add(modelactive.F_ID, modelactive.F_Money.Split(',')[i].ObjToDecimal());
  1867. 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 });
  1868. }
  1869. }
  1870. }
  1871. }
  1872. else if (modelactive.F_Type == 4)
  1873. {
  1874. //限时特惠
  1875. //判断此人是否有参与活动的资格 默认暂不筛选
  1876. if (chooseact.ContainsKey(modelactive.F_ID))
  1877. {
  1878. chooseact[modelactive.F_ID] = chooseact[modelactive.F_ID] + "," + m.F_ProductId.ToString();
  1879. actlist.ForEach(q => { if (q.id == modelactive.F_ID) { q.gift = q.gift + m.F_ProductId.ToString(); } });
  1880. }
  1881. else
  1882. {
  1883. chooseact.Add(modelactive.F_ID, "4_" + m.F_ProductId.ToString());
  1884. 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 });
  1885. }
  1886. }
  1887. }
  1888. }
  1889. }
  1890. }
  1891. return Success("参与活动", actlist);
  1892. }
  1893. /// <summary>
  1894. /// 获取订单详情
  1895. /// </summary>
  1896. /// <param name="input"></param>
  1897. /// <returns></returns>
  1898. [HttpPost("getorderdetail")]
  1899. public async Task<IActionResult> GetOrderDetail(string orderid)
  1900. {
  1901. if (string.IsNullOrEmpty(orderid))
  1902. return Error("请输入订单号");
  1903. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == orderid);
  1904. OrderInput modelreturn = new OrderInput();
  1905. if (modelOrder != null)
  1906. {
  1907. ModelConvertHelper<OrderInput, T_Bus_Order>.ModeToModel(modelreturn, modelOrder);
  1908. List<OrderDetailInput> modeldetailreturn = new List<OrderDetailInput>();
  1909. List<T_Bus_OrderDetail> detaillist = await bus_OrderDetailRepository.GetListALL(q => q.F_OrderId == modelOrder.F_Id, o => o.F_Sort, OrderByType.Asc);
  1910. if (detaillist != null)
  1911. {
  1912. foreach (T_Bus_OrderDetail m in detaillist)
  1913. {
  1914. OrderDetailInput model = new OrderDetailInput();
  1915. model.F_ProductName = m.F_ProductName;
  1916. model.F_ProductId = m.F_ProductId;
  1917. model.F_Id = m.F_Id;
  1918. model.F_OrderId = m.F_OrderId;
  1919. model.F_Count = m.F_Count;
  1920. model.F_Price = m.F_Price;
  1921. model.F_DealPrice = m.F_DealPrice;
  1922. model.F_Sort = m.F_Sort;
  1923. model.F_AddTime = m.F_AddTime;
  1924. model.F_Remark = m.F_Remark;
  1925. model.F_AddUser = m.F_AddUser;
  1926. model.F_AddUserName = m.F_ProductName;
  1927. model.F_TotlePrice = m.F_TotlePrice;
  1928. model.F_Activity = m.F_Activity;
  1929. modeldetailreturn.Add(model);
  1930. }
  1931. }
  1932. modelreturn.OrderDetailList = modeldetailreturn;
  1933. List<UseActInput> actlist = new List<UseActInput>();
  1934. List<T_Sys_Marketing> modelactiveList = await bus_MarketingRepository.GetListALL(b => ("," + modelOrder.F_UseActivity + ",").Contains(("," + b.F_ID.ToString() + ",")));
  1935. if (modelactiveList != null && modelactiveList.Count > 0)
  1936. {
  1937. foreach (T_Sys_Marketing modelactive in modelactiveList)
  1938. {
  1939. 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 });
  1940. }
  1941. }
  1942. modelreturn.UseActList = actlist;
  1943. }
  1944. else
  1945. return Error("订单不存在");
  1946. Expression<Func<T_Bus_Orderlogs , bool>> eq = a => a.F_WoID == orderid;
  1947. var ItemList = await busOrderlogsRepository.GetListALL(eq, o => o.F_CreateTime , OrderByType.Asc);
  1948. var obj = new
  1949. {
  1950. modelreturn,
  1951. ItemList
  1952. };
  1953. return Content(obj.ToJson());
  1954. }
  1955. /// <summary>
  1956. /// 获取订单分页列表
  1957. /// </summary>
  1958. /// <param name="input"></param>
  1959. /// <returns></returns>
  1960. [HttpPost("getorderlistbypage")]
  1961. public async Task<IActionResult> GetXSOrderListByPage(OrderInput input)
  1962. {
  1963. List<IConditionalModel> conModels = new List<IConditionalModel>();
  1964. #region 条件筛选
  1965. conModels.Add(new ConditionalModel() { FieldName = "F_State", ConditionalType = ConditionalType.GreaterThanOrEqual, FieldValue = "0" });
  1966. //状态
  1967. if (input.F_State > -2)
  1968. {
  1969. conModels.Add(new ConditionalModel() { FieldName = "F_State", ConditionalType = ConditionalType.Equal, FieldValue = input.F_State.ToString() });
  1970. }
  1971. //根据角色展示列表
  1972. if (UserLogin.RoleCode == "XS")
  1973. {
  1974. conModels.Add(new ConditionalCollections()
  1975. {
  1976. ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>>()
  1977. {
  1978. new KeyValuePair<WhereType, ConditionalModel>( WhereType.And , new ConditionalModel() { FieldName = "F_AddUser", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId }),
  1979. new KeyValuePair<WhereType, ConditionalModel>( WhereType.Or, new ConditionalModel() { FieldName = "F_Belong", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId })
  1980. }
  1981. } );
  1982. }
  1983. else if (UserLogin.RoleCode == "KF" && input.F_State != 1)
  1984. {
  1985. conModels.Add(new ConditionalModel() { FieldName = "F_CheckUser", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId });
  1986. }
  1987. else if (UserLogin.RoleCode == "KG" && input.F_State != 3)
  1988. {
  1989. conModels.Add(new ConditionalModel() { FieldName = "F_StockUser", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId });
  1990. //OR conModels.Add(new ConditionalModel() { FieldName = "F_SendUser", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId });
  1991. }
  1992. if (!string.IsNullOrEmpty(input.F_ADFrom))
  1993. {
  1994. conModels.Add(new ConditionalModel() { FieldName = "F_ADFrom", ConditionalType = ConditionalType.Equal, FieldValue = input.F_ADFrom });
  1995. }
  1996. if (!string.IsNullOrEmpty(input.F_Type))
  1997. {
  1998. conModels.Add(new ConditionalModel() { FieldName = "F_Type", ConditionalType = ConditionalType.Equal, FieldValue = input.F_Type });
  1999. }
  2000. if (!string.IsNullOrEmpty(input.F_Id))
  2001. {
  2002. conModels.Add(new ConditionalModel() { FieldName = "F_Id", ConditionalType = ConditionalType.Equal, FieldValue = input.F_Id });
  2003. }
  2004. if (!string.IsNullOrEmpty(input.F_Customer))
  2005. {
  2006. conModels.Add(new ConditionalModel() { FieldName = "F_Customer", ConditionalType = ConditionalType.Equal, FieldValue = input.F_Customer });
  2007. }
  2008. if (!string.IsNullOrEmpty(input.F_CustomerPhone))
  2009. {
  2010. conModels.Add(new ConditionalModel() { FieldName = "F_CustomerPhone", ConditionalType = ConditionalType.Equal, FieldValue = input.F_CustomerPhone });
  2011. }
  2012. if (!string.IsNullOrEmpty(input.F_TrackingNo))
  2013. {
  2014. conModels.Add(new ConditionalModel() { FieldName = "F_TrackingNo", ConditionalType = ConditionalType.Equal, FieldValue = input.F_TrackingNo });
  2015. }
  2016. if (!string.IsNullOrEmpty(input.F_AddProvince))
  2017. {
  2018. conModels.Add(new ConditionalModel() { FieldName = "F_AddProvince", ConditionalType = ConditionalType.Equal, FieldValue = input.F_AddProvince });
  2019. }
  2020. if (!string.IsNullOrEmpty(input.F_AddCity))
  2021. {
  2022. conModels.Add(new ConditionalModel() { FieldName = "F_AddCity", ConditionalType = ConditionalType.Equal, FieldValue = input.F_AddCity });
  2023. }
  2024. if (!string.IsNullOrEmpty(input.F_AddArea))
  2025. {
  2026. conModels.Add(new ConditionalModel() { FieldName = "F_AddArea", ConditionalType = ConditionalType.Equal, FieldValue = input.F_AddArea });
  2027. }
  2028. if (!string.IsNullOrEmpty(input.F_AddTown))
  2029. {
  2030. conModels.Add(new ConditionalModel() { FieldName = "F_AddTown", ConditionalType = ConditionalType.Equal, FieldValue = input.F_AddTown });
  2031. }
  2032. if (!string.IsNullOrEmpty(input.F_Express))
  2033. {
  2034. conModels.Add(new ConditionalModel() { FieldName = "F_Express", ConditionalType = ConditionalType.Equal, FieldValue = input.F_Express });
  2035. }
  2036. if (!string.IsNullOrEmpty(input.F_PayType))
  2037. {
  2038. conModels.Add(new ConditionalModel() { FieldName = "F_PayType", ConditionalType = ConditionalType.Equal, FieldValue = input.F_PayType });
  2039. }
  2040. if (!string.IsNullOrEmpty(input.F_Stock))
  2041. {
  2042. conModels.Add(new ConditionalModel() { FieldName = "F_Stock", ConditionalType = ConditionalType.Equal, FieldValue = input.F_Stock });
  2043. }
  2044. if (input.F_PayState > -1)
  2045. {
  2046. conModels.Add(new ConditionalModel() { FieldName = "F_PayState", ConditionalType = ConditionalType.Equal, FieldValue = input.F_PayState.ToString() });
  2047. }
  2048. if (input.SearchEndTime != null)
  2049. {
  2050. conModels.Add(new ConditionalModel() { FieldName = "F_AddTime", ConditionalType = ConditionalType.LessThan, FieldValue = input.SearchEndTime.GetValueOrDefault().ToString("yyyy-MM-dd 23:59:59") });
  2051. }
  2052. if (input.SearchStartTime != null)
  2053. {
  2054. conModels.Add(new ConditionalModel() { FieldName = "F_AddTime", ConditionalType = ConditionalType.GreaterThan, FieldValue = input.SearchStartTime.GetValueOrDefault().ToString("yyyy-MM-dd 00:00:01") });
  2055. }
  2056. #endregion
  2057. RefAsync<int> recordCount = 0;
  2058. PageData<T_Bus_Order> list = await bus_OrderRepository.GetListByPage(conModels, new MyPageModel() { PageIndex = input.pageindex, PageSize = input.pagesize, PageCount = recordCount }, " F_AddTime DESC");
  2059. PageData<OrderInput> returnobj = new PageData<OrderInput>() { Totals = list.Totals };
  2060. List<OrderInput> returnlist = new List<OrderInput>();
  2061. foreach (T_Bus_Order t in list.Rows)
  2062. {
  2063. OrderInput m = new OrderInput();
  2064. ModelConvertHelper<OrderInput, T_Bus_Order>.ModeToModel(m, t);
  2065. List<OrderDetailInput> orderDetailInputs = new List<OrderDetailInput>();
  2066. #region 遍历订单商品
  2067. List<T_Bus_OrderDetail> orderDetails = await bus_OrderDetailRepository.GetListALL(q => q.F_OrderId == t.F_Id);
  2068. if (orderDetails != null)
  2069. {
  2070. foreach (T_Bus_OrderDetail t1 in orderDetails)
  2071. {
  2072. OrderDetailInput m1 = new OrderDetailInput();
  2073. ModelConvertHelper<OrderDetailInput, T_Bus_OrderDetail>.ModeToModel(m1, t1);
  2074. orderDetailInputs.Add(m1);
  2075. }
  2076. }
  2077. #endregion
  2078. m.OrderDetailList = orderDetailInputs;
  2079. m.IsSale = busAfterSaleRepository.GetListALL(x => x.F_OrderId == t.F_Id).Result!=null
  2080. ? busAfterSaleRepository.GetListALL(x => x.F_OrderId == t.F_Id).Result.Count :0;
  2081. returnlist.Add(m);
  2082. }
  2083. returnobj.Rows = returnlist;
  2084. return Success("成功", returnobj);
  2085. }
  2086. /// <summary>
  2087. /// 撤回未审核订单
  2088. /// </summary>
  2089. /// <param name="orderid">订单号</param>
  2090. /// <param name="state">订单状态 -1无效 0暂存 1提交 2KF退回 3通过 4KG退回 5已分拣 6已发货</param>
  2091. /// <param name="remark">客服备注</param>
  2092. /// <returns></returns>
  2093. [HttpPost("cancelorder")]
  2094. public async Task<IActionResult> CancelOrder(string orderids, int state = 0)
  2095. {
  2096. try
  2097. {
  2098. //状态变化 积分变化 处理时间人变化 库存变化 备注
  2099. T_Cus_VipInfo modelvip = new T_Cus_VipInfo();
  2100. #region 验证参数 必填项
  2101. if (string.IsNullOrEmpty(orderids))
  2102. return Error("请选择订单号");
  2103. if (state != 0)
  2104. return Error("请选择操作类型");
  2105. string[] orderid = orderids.Split(',');
  2106. string msg = "";
  2107. #endregion
  2108. List<T_Bus_Orderlogs> logs = new List<T_Bus_Orderlogs>();
  2109. List<T_Bus_Order> orders = new List<T_Bus_Order>();
  2110. foreach (var it in orderid)
  2111. {
  2112. T_Bus_Orderlogs t_Bus_Orderlogs = new T_Bus_Orderlogs();
  2113. T_Bus_Order modelOrder = await bus_OrderRepository.GetSingle(q => q.F_Id == it && new int[] { 3, 4, 7 }.Contains(q.F_State));
  2114. if (modelOrder == null)
  2115. {
  2116. msg +="订单"+ modelOrder .F_Id + "已审核";
  2117. continue;
  2118. }
  2119. else
  2120. {
  2121. if (modelOrder.F_State ==1)
  2122. {
  2123. List<T_Bus_OrderDetail> detaillist = await bus_OrderDetailRepository.GetListALL(q => q.F_OrderId == modelOrder.F_Id, o => o.F_Sort, OrderByType.Asc);
  2124. List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
  2125. if (detaillist != null && detaillist.Count > 0)
  2126. {
  2127. foreach (var iv in detaillist)
  2128. {
  2129. T_Bus_Product t_Bus_Product = await bus_productRepository.GetSingle(x => x.F_ProductId == iv.F_ProductId);
  2130. if (t_Bus_Product != null)
  2131. {
  2132. t_Bus_Product.F_UseNumber -= iv.F_Count;
  2133. Productlist.Add(t_Bus_Product);
  2134. }
  2135. else
  2136. {
  2137. msg += "订单" + modelOrder.F_Id + "退回失败,商品不存在.";
  2138. continue;
  2139. }
  2140. }
  2141. if (Productlist != null && Productlist.Count > 0)
  2142. {
  2143. if (!await bus_productRepository.UpdateList(Productlist))
  2144. {
  2145. msg += "订单" + modelOrder.F_Id + "退回失败";
  2146. continue;
  2147. }
  2148. }
  2149. else
  2150. {
  2151. msg += "订单" + modelOrder.F_Id + "退回失败,请选择商品";
  2152. continue;
  2153. }
  2154. }
  2155. }
  2156. modelOrder.F_State = state;
  2157. t_Bus_Orderlogs.F_WoID = modelOrder.F_Id;
  2158. t_Bus_Orderlogs.F_CreateUser = UserLogin.UserCode;
  2159. t_Bus_Orderlogs.F_CreateTime = DateTime.Now;
  2160. t_Bus_Orderlogs.F_OptContent = UserLogin.UserName + "撤回订单";
  2161. t_Bus_Orderlogs.F_WoState = modelOrder.F_State;
  2162. logs.Add(t_Bus_Orderlogs);
  2163. orders.Add(modelOrder);
  2164. }
  2165. }
  2166. // string strStock = await busOrderFunctionController.ChangeStockOne(modelOrder, 0, null);
  2167. // if (strStock != "1")
  2168. // return Error(strStock);
  2169. // modelOrder.F_State = 0;
  2170. // modelOrder.F_Score = 0.00M;
  2171. if (msg =="")
  2172. {
  2173. await busOrderlogsRepository.AddAndUpdateList(logs);
  2174. if (await bus_OrderRepository.UpdateList(orders))
  2175. return Success("订单成功审核!");
  2176. }
  2177. else
  2178. return Error(msg);
  2179. return Error("订单审核失败,请汇报技术支持!");
  2180. }
  2181. catch (Exception ex)
  2182. { return Error(ex.Message); }
  2183. }
  2184. [HttpPost("ordermoney")]
  2185. public async Task<IActionResult> OrderMoney(OrderMoneyInput input)
  2186. {
  2187. try
  2188. {
  2189. #region 验证参数 必填项
  2190. if (string.IsNullOrEmpty(input.F_OrderId))
  2191. return Error("请输入订单号");
  2192. if (string.IsNullOrEmpty(input.F_PayUser))
  2193. return Error("请输入打款人");
  2194. if (string.IsNullOrEmpty(input.F_PayType))
  2195. return Error("请输入打款方式");
  2196. if (string.IsNullOrEmpty(input.F_RemarkKF))
  2197. input.F_RemarkKF = "";
  2198. if (string.IsNullOrEmpty(input.F_RemarkXS))
  2199. input.F_RemarkXS = "";
  2200. if (input.F_PayTime==null)
  2201. return Error("请输入打款时间");
  2202. if (input.F_Money <= 0)
  2203. return Error("请输入金额");
  2204. #endregion
  2205. T_Bus_OrderMoney modelOrderMoeny = new T_Bus_OrderMoney();
  2206. ModelConvertHelper<T_Bus_OrderMoney, OrderMoneyInput>.ModeToModelDefault(modelOrderMoeny, input);
  2207. modelOrderMoeny.F_AddUserId =UserLogin.UserId.ObjToInt();
  2208. modelOrderMoeny.F_UserName = UserLogin.UserName;
  2209. modelOrderMoeny.F_MoneyBak= modelOrderMoeny.F_Money;
  2210. modelOrderMoeny.F_State= 0;
  2211. modelOrderMoeny.F_Id = Guid.NewGuid().ToString().Replace("-","");
  2212. if (await busOrderMoneyRepository.AddReturnCount(modelOrderMoeny))
  2213. return Success("成功!");
  2214. return Error("失败!");
  2215. }
  2216. catch (Exception ex)
  2217. { return Error(ex.Message); }
  2218. }
  2219. private async Task<int> AddLog(string WoID,string count,string user,int state)
  2220. {
  2221. T_Bus_Orderlogs logs = new T_Bus_Orderlogs();
  2222. logs.F_WoID = WoID;
  2223. logs.F_WoState = state;
  2224. logs.F_OptContent = count;
  2225. logs.F_CreateUser = user;
  2226. logs.F_CreateTime = DateTime .Now ;
  2227. var res =await busOrderlogsRepository.Add(logs);
  2228. return res;
  2229. }
  2230. }
  2231. }