public async Task GoodsCheck(string code, string state, string prcode) { if (string.IsNullOrEmpty(code)) { string ip = this.httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString(); if (!string.IsNullOrEmpty(prcode)) { state = $"{state}_{prcode}"; } state = $"{state}|{ip}"; var url = Helper.WeiChat.Utility.GetWebpageAuthorization(appConfig.WeiXin.Appid, $"http://{Request.Host.Host}{Request.Path}", Fun.Base64Encode(state), false); Response.Redirect(url); } else { var stateList = Fun.Base64Decode(state).Split('|'); state = stateList[0]; var goodsGuid = state.Split("_")[0]; var goodsCode = state.Split("_")[1]; WxUserEntity wxUser = new WxUserEntity(); try { //出错后,返回重新查看 wxUser = Helper.WeiChat.Utility.GetWebpageUserInfo(appConfig.WeiXin.Appid, appConfig.WeiXin.Secret, code); } catch { await ShowHtml($"微信用户有误。<a href=\"GoodsDetail?state={goodsGuid}\">点击返回</a>"); return; } wxUser.ip = stateList[1]; PsGoodsLogEntity inLog = new PsGoodsLogEntity() { goodsGuid = goodsGuid, ip = wxUser.ip, openid = wxUser.openid }; var reObj = await _respoitory.GoodsCheck(inLog, goodsCode); if (reObj.success) { Response.Redirect($"GoodsDetail?state={goodsGuid}"); } else { await ShowHtml($"产品防伪码有误。<a href=\"GoodsDetail?state={goodsGuid}\">点击返回</a>"); } } }
/// <summary> /// 检测货物 /// </summary> /// <param name="inLog"></param> /// <param name="code"></param> /// <returns></returns> public async Task <ResultObj <PsGoodsEntity> > GoodsCheck(PsGoodsLogEntity inLog, string code) { var reObj = new ResultObj <PsGoodsEntity>(); var goods = await dbHelperGoods.Single(x => x.id == inLog.goodsGuid); if (goods == null || !goods.code.Equals(code)) { reObj.success = false; reObj.msg = "产品有误"; } else { inLog.id = await SequenceRepository.GetNextID <PsGoodsLogEntity>(); inLog.createTime = Helper.DataTimeHelper.getDateLong(DateTime.Now); dbHelperGoods.TranscationBegin(); try { DapperHelper <PsGoodsLogEntity> dbHelperGoodsLog = new DapperHelper <PsGoodsLogEntity>(dbHelperGoods.GetConnection(), dbHelperGoods.GetTransaction()); var opNum = await dbHelperGoodsLog.Save(new DtoSave <PsGoodsLogEntity> { data = inLog }); if (opNum < 1) { throw new Exception("保存日志失败"); } goods.confirmTime = inLog.createTime; goods.openid = inLog.openid; opNum = await dbHelperGoods.Update(new DtoSave <PsGoodsEntity> { data = goods, saveFieldListExp = x => new object[] { x.confirmTime, x.openid }, whereListExp = x => new object[] { x.id } }); if (opNum < 1) { throw new Exception("更新检测失败"); } dbHelperGoods.TranscationCommit(); reObj.success = true; reObj.data = goods; } catch (Exception e) { dbHelperGoods.TranscationRollback(); reObj.success = false; reObj.msg = e.Message; } } return(reObj); }
/// <summary> /// 查看详情 /// </summary> /// <param name="inLog"></param> /// <returns></returns> public async Task <ResultObj <PsGoodsEntity> > GoodsDetail(PsGoodsLogEntity inLog) { var reObj = new ResultObj <PsGoodsEntity>(); var goods = await dbHelperGoods.Single(x => x.id == inLog.goodsGuid); if (goods == null) { reObj.success = false; reObj.msg = "产品有误"; } else { dbHelperGoods.TranscationBegin(); try { DapperHelper <PsGoodsLogEntity> dbHelperGoodsLog = new DapperHelper <PsGoodsLogEntity>(dbHelperGoods.GetConnection(), dbHelperGoods.GetTransaction()); inLog.id = await SequenceRepository.GetNextID <PsGoodsLogEntity>(); inLog.createTime = Helper.DataTimeHelper.getDateLong(DateTime.Now); var opNum = await dbHelperGoodsLog.Save(new DtoSave <PsGoodsLogEntity> { data = inLog }); if (opNum < 1) { throw new Exception("保存日志失败"); } opNum = await dbHelperGoods.Update(new DtoSave <PsGoodsEntity> { data = new PsGoodsEntity { id = inLog.goodsGuid, lookNum = goods.lookNum + 1 }, saveFieldList = new List <string> { "lookNum" }, whereList = new List <string> { "id" } }); if (opNum < 1) { throw new Exception("更新数量失败"); } dbHelperGoods.TranscationCommit(); goods.allLogs = new List <PsGoodsLogEntity>(await dbHelperGoodsLog.FindAll(x => x.goodsGuid == inLog.goodsGuid)); goods.lookNum = goods.allLogs.Count; goods.batchCode = (await dbHelper.Single(x => x.id == goods.batchId))?.code; reObj.success = true; reObj.data = goods; } catch (Exception e) { dbHelperGoods.TranscationRollback(); reObj.success = false; reObj.msg = e.Message; } } return(reObj); }
public async Task GoodsDetail(string code, string state) { if (string.IsNullOrEmpty(code)) { string ip = this.httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString(); state = $"{state}|{ip}"; string rebackUrl = $"http://{Request.Host.Host}{Request.Path}"; rebackUrl = HttpUtility.UrlEncode(rebackUrl); var url = Helper.WeiChat.Utility.GetWebpageAuthorization(appConfig.WeiXin.Appid, rebackUrl, Fun.Base64Encode(state), true); Response.Redirect(url); } else { var stateList = Fun.Base64Decode(state).Split('|'); state = stateList[0]; WxUserEntity wxUser = new WxUserEntity(); try { //出错后,返回重新查看 wxUser = Helper.WeiChat.Utility.GetWebpageUserInfo(appConfig.WeiXin.Appid, appConfig.WeiXin.Secret, code); } catch { Response.Redirect($"GoodsDetail?state={state}"); return; } wxUser.ip = stateList[1]; var addressList = await httpClientFactory.CreateClient().GetAddressAsync(wxUser.ip); wxUser.address = string.Join("", addressList); var opNum = await weiXin.saveUser(wxUser, new List <string> { "nickname", "headimgurl", "lastTime", "ip", "address", "subscribe" }); PsGoodsLogEntity inLog = new PsGoodsLogEntity() { goodsGuid = state, ip = wxUser.ip, openid = wxUser.openid }; var reObj = await _respoitory.GoodsDetail(inLog); if (reObj.success) { StringBuilder htmlStringBuilder = new StringBuilder(); htmlStringBuilder.Append($"<a>"); string proNumStr = $"00000000{reObj.data.proNum}"; proNumStr = proNumStr.Substring(proNumStr.Length - 8); htmlStringBuilder.Append($"产品编号:{reObj.data.batchCode}{proNumStr}<br />"); htmlStringBuilder.Append($"查阅次数:{reObj.data.lookNum}次<br />"); if (reObj.data.confirmTime == 0) { #region css样式 string headStr = @" <style> body { font-size: 14px; } input{ border: 1px solid #333333; } button { font-size: 14px; border: 1px solid #333333; } .black_overlay { display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; background-color: black; -moz-opacity: 0.5; opacity: .50; filter: alpha(opacity=50); } .white_content { display: none; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -80%); width: 50%; height: 100px; padding: 20px; background-color: white; overflow: auto; text-align: center; } .white_content div { margin-bottom: 5px; } </style> "; #endregion #region js脚本 string bootStr = @" <script type='text/javascript'> function openDialog() { document.getElementById('light').style.display = 'block'; document.getElementById('fade').style.display = 'block' } function closeDialog() { document.getElementById('light').style.display = 'none'; document.getElementById('fade').style.display = 'none' } </script> "; #endregion htmlStringBuilder.Append($"<a onclick=\"openDialog()\" href=\"#\">点击验证</a>"); htmlStringBuilder.Append($"</a>"); #region 验证框 htmlStringBuilder.Append($@" <div id='fade' class='black_overlay'></div> <div id='light' class='white_content'> <form action='GoodsCheck' method='GET'> <div> <a>请输入产品防伪码</a> </div> <div> <input name='prcode' /> </div> <div> <input name='state' type='hidden' value='{state}'/> <button onclick='submit()'>确定</button> <button type='reset' onclick='closeDialog()' style='margin-left: 10px;'>取消</button> </div> </form> </div> "); #endregion await ShowHtml(htmlStringBuilder.ToString(), headStr, bootStr); } else { htmlStringBuilder.Append($"验证时间:{Helper.DataTimeHelper.getDate(reObj.data.confirmTime).ToString()}\r\n<br />"); htmlStringBuilder.Append($"防 伪 码:{reObj.data.code}"); htmlStringBuilder.Append($"</a>"); await ShowHtml(htmlStringBuilder.ToString()); } } else { await ShowHtml(reObj.msg); } } }