/// <summary> /// 校验充值码是否存在,或过期 /// </summary> /// <param name="code"></param> /// <returns></returns> public RechargeCode CouponCheckCode(string code) { code = Regex.Replace(code, @"[^\d-]", "", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace); if (code.IndexOf("-") < 0) { throw new Exception("该充值码不正确!"); } //取密码与充值码 string pw = code.Substring(code.IndexOf("-") + 1); code = code.Substring(0, code.IndexOf("-")); //验证是否正确 WhereClip wc = new WhereClip(); Song.Entities.Organization org = Business.Do <IOrganization>().OrganCurrent(); wc &= RechargeCode._.Org_ID == org.Org_ID; wc &= RechargeCode._.Rc_Code == code.Trim(); wc &= RechargeCode._.Rc_Pw == pw.Trim(); wc &= RechargeCode._.Rc_LimitStart < DateTime.Now; wc &= RechargeCode._.Rc_LimitEnd > DateTime.Now; RechargeCode single = Gateway.Default.From <RechargeCode>().Where(wc).ToFirst <RechargeCode>(); if (single == null) { throw new Exception("该充值码不存在,或已经过期!"); } if (single.Rc_IsUsed) { throw new Exception("该充值码已经使用过!"); } return(single); }
/// <summary> /// 生成充值码 /// </summary> /// <param name="setEntity"></param> private void _RechargeCodeBuilds(RechargeSet setEntity, int count) { for (int i = 0; i < count; i++) { Song.Entities.RechargeCode code = new RechargeCode(); //面额 code.Rc_Price = setEntity.Rs_Price; //是否启用 code.Rc_IsEnable = true; //创建时间 code.Rc_CrtTime = DateTime.Now; //类型 code.Rc_Type = 0; //设置项id code.Rs_ID = setEntity.Rs_ID; //机构id code.Org_ID = setEntity.Org_ID; //时间效 code.Rc_LimitStart = setEntity.Rs_LimitStart; code.Rc_LimitEnd = setEntity.Rs_LimitEnd; //卡值码与其密码 code.Rc_Code = _RechargeCodeBuildCoder(setEntity.Rs_Pw, i, setEntity.Rs_CodeLength); code.Rc_Pw = _RechargeCodeBuildPw(i, setEntity.Rs_PwLength); Gateway.Default.Save <RechargeCode>(code); } }
/// <summary> /// 使用该充值码 /// </summary> /// <param name="entity"></param> public void CouponUseCode(RechargeCode entity) { //是否被禁用 Song.Entities.RechargeSet set = Gateway.Default.From <RechargeSet>().Where(RechargeSet._.Rs_ID == entity.Rs_ID).ToFirst <RechargeSet>(); if (set == null || set.Rs_IsEnable == false) { throw new Exception("该充值码已经被禁用"); } //是否过期 if (!(DateTime.Now > entity.Rc_LimitStart && DateTime.Now < entity.Rc_LimitEnd.Date.AddDays(1))) { throw new Exception("该充值码已经过期"); } //标注已经使用 entity.Rc_IsUsed = true; entity.Rc_UsedTime = DateTime.Now; //产生流水 CouponAccount ca = new CouponAccount(); ca.Ca_Value = entity.Rc_Price; ca.Ac_ID = entity.Ac_ID; ca.Ca_From = 2; ca.Rc_Code = entity.Rc_Code + "-" + entity.Rc_Pw; ca.Ca_Source = "充值码充值"; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { Business.Do <IAccounts>().CouponAdd(ca); tran.Save <RechargeCode>(entity); RechargeSet setEnity = tran.From <RechargeSet>().Where(RechargeSet._.Rs_ID == entity.Rs_ID).ToFirst <RechargeSet>(); if (setEnity != null) { setEnity.Rs_UsedCount++; tran.Save <RechargeSet>(setEnity); } tran.Commit(); } catch (Exception ex) { tran.Rollback(); throw ex; } finally { tran.Close(); } } }
/// <summary> /// 删除充值码设置项 /// </summary> /// <param name="entity">业务实体</param> public void RechargeCodeDelete(RechargeCode entity) { Gateway.Default.Delete <RechargeCode>(RechargeCode._.Rc_ID == entity.Rc_ID); }
/// <summary> /// 修改充值码设置项 /// </summary> /// <param name="entity">业务实体</param> public void RechargeCodeSave(RechargeCode entity) { Gateway.Default.Save <RechargeCode>(entity); }
/// <summary> /// 添加充值码设置项 /// </summary> /// <param name="entity">业务实体</param> public void RechargeCodeAdd(RechargeCode entity) { entity.Rc_CrtTime = DateTime.Now; Gateway.Default.Save <RechargeCode>(entity); }