/***判斷用戶的購物金是否夠扣除*/ public int returnMsg(OrderMaster om) { StringBuilder sb = new StringBuilder(); try { _bonus = new BonusMasterDao(connString); BonusMasterQuery query = new BonusMasterQuery(); query.master_note = om.Order_Id.ToString(); query.bonus_type = 1; List<BonusMasterQuery> bonusMasterStore = new List<BonusMasterQuery>(); bonusMasterStore = _bonus.IsExtendBonus(query); if (bonusMasterStore.Count > 0) { ///用戶購物金 sb.AppendFormat("SELECT sum(od.accumulated_bonus) as accumulated_bonus FROM order_detail od,order_slave os WHERE os.order_id = '{0}'AND os.slave_id = od.slave_id and od.item_mode<>2; ", om.Order_Id); DataTable _dtbonus = _accessMySql.getDataTable(sb.ToString()); sb.Clear(); //訂單購物金 sb.AppendFormat("select user_id from order_master where order_id='{0}';", om.Order_Id); DataTable _dtUser = _accessMySql.getDataTable(sb.ToString()); int deductuser = 0; if (!string.IsNullOrEmpty(_dtUser.Rows[0]["user_id"].ToString())) { deductuser = GetUserBonus(_dtUser.Rows[0]["user_id"].ToString(), 1); } else { return 1;//訂單錯誤! } int orderbonus = string.IsNullOrEmpty(_dtbonus.Rows[0]["accumulated_bonus"].ToString()) ? 0 : Convert.ToInt32(_dtbonus.Rows[0]["accumulated_bonus"]); if (orderbonus > deductuser) { return 99;//消費者購物金餘額不足,無法扣除給予購物金 } else { return 100;//不顯示那個信息 } } else { return 100;//不顯示那個信息 } } catch (Exception ex) { throw new Exception("OrderCancelMasterDao-->returnMsg" + ex.Message, ex); } }
public string Deduct_User_Bonus(int deduct_bonus, string order_id, string user_id) { BonusMasterQuery b = new BonusMasterQuery(); BonusRecord br = new BonusRecord(); Serial s = new Serial(); _serial = new SerialDao(connString); _bonus = new BonusMasterDao(connString); List<BonusMaster> store = new List<BonusMaster>(); List<BonusMaster> store2 = new List<BonusMaster>(); System.Net.IPAddress[] ips = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList; if (ips.Count() > 0) { b.master_ipfrom = ips[0].ToString(); } StringBuilder sql = new StringBuilder(); StringBuilder sqlstr = new StringBuilder(); try { int bonus_num = deduct_bonus; //是否發放購物金 b.master_note = order_id; b.master_total = uint.Parse(deduct_bonus.ToString()); b.bonus_type = 1; store = _bonus.GetBonus(b); if (store.Count == 1) { bool user = false; foreach (var item in store) { if (item.master_total == item.master_balance) {//判斷發放的購物金是否使用 user = true; bonus_num = 0; } else { bonus_num = bonus_num - item.master_balance; } b.master_id = item.master_id; b.masterid = item.master_id.ToString() + ","; } s = _serial.GetSerialById(28); uint a = 1; #region 發放購物金扣除 if (deduct_bonus - bonus_num > 0) { //先清除bonus_master表裏面的發放的購物金 b.master_balance = deduct_bonus - bonus_num; b.master_writer = "訂單取消"; sqlstr.Append(_bonus.UpBonusMaster(b)); //并記錄到購物金記錄表中 sqlstr.Append(_serial.Update(28)); br.record_id = uint.Parse(s.Serial_Value.ToString()) + a; a++; br.master_id = b.master_id; br.type_id = 32; br.order_id = uint.Parse(b.master_note); br.record_use = uint.Parse(b.master_balance.ToString()); br.record_note = order_id; br.record_writer = "訂單整筆取消"; br.record_ipfrom = b.master_ipfrom; sqlstr.Append(_bonus.InsertBonusRecord(br)); } if (!user) {//發放購物金被使用 b.user_id = uint.Parse(user_id.ToString()); b.masterid = b.masterid.TrimEnd(','); uint order = uint.Parse(b.master_note.ToString()); b.master_note = null; b.master_total = 0; b.usebonus = "K"; //該用戶剩餘可用購物金 store2 = _bonus.GetBonus(b); foreach (var item in store2) { if (bonus_num > item.master_balance) { b.master_balance = item.master_balance; bonus_num = bonus_num - item.master_balance; } else { b.master_balance = bonus_num; bonus_num = 0; } //變更bonus_master表裏面的發放的購物金 b.master_id = item.master_id; sqlstr.Append(_bonus.UpBonusMaster(b)); //記錄到購物金記錄表中 sqlstr.Append(_serial.Update(28)); br.record_id = uint.Parse(s.Serial_Value.ToString()) + a; a++; br.master_id = b.master_id; br.type_id = 32; br.order_id = order; br.record_use = uint.Parse(b.master_balance.ToString()); br.record_note = order_id; br.record_writer = "訂單取消被使用,額外扣除購物金"; br.record_ipfrom = b.master_ipfrom; sqlstr.Append(_bonus.InsertBonusRecord(br)); if (bonus_num == 0) { break; } } } if (bonus_num > 0) {//該用戶剩餘的購物金不夠扣剩下記錄到表中 sqlstr.AppendFormat(@"insert into users_deduct_bonus (deduct_bonus,user_id,createdate,order_id)"); sqlstr.AppendFormat(@" values('{0}','{1}','{2}','{3}');", bonus_num, user_id, CommonFunction.GetPHPTime(DateTime.Now.ToString()), order_id); } #endregion } return sqlstr.ToString(); } catch (Exception ex) { throw new Exception("OrderReturnlMasterDao-->Deduct_User_Bonus-->" + ex.Message, ex); } }
public BonusMasterMgr(string connectionString) { _IBonusMasterDao = new BonusMasterDao(connectionString); _ISerialDao = new SerialDao(connectionString); _mysqlDao = new MySqlDao(connectionString); }