功能说明:提交订单之后,增加消费记录,扣除用户余额
//更新积分值 public function saveMoney($uid, $money, $remark, $paymment, $chargetypes, $orderno, $status) { $sql = "UPDATE $this->_member_list SET money=money+$money WHERE uid=$uid"; $row = $this->exec ( $sql ); //增加历史记录 if ($row > 0) { return $this->add ( $this->_money_history, array (‘uid‘ => $uid, ‘coupons‘ => $money, ‘date‘ => time (), ‘payment‘ => $paymment, ‘chargetypes‘ => $chargetypes, ‘remark‘ => $remark, ‘orderno‘ => $orderno, ‘status‘ => $status ) ); } return 0; }
这个方法涉及到2个模型,用户模型和订单(在controller中耦合)
好处:假如我要替换一个用户系统,那么,我只需要管理MemberService服务类即可,跟订单完全没有关系,用户有没有减去钱,跟订单有个毛线关系,这叫做职责性。
规则:在Service类中,只能操作自己有关的数据表(按找功能导向写)tabprefix前缀相同的 如w_member* w_order*等
<?php //用户服务类 class MemberService { public function saveMoney() { //减去用户钱包中的钱 } } class OrderController { /** * 在控制器中进行耦合 */ public function addOrder() { $money = self::getOrderService ()->cost ( $this->_user [‘uid‘], $_POST [‘order‘] ); self::getMemberService ()->saveMoney ( $this->_user [‘uid‘], $money ); } public static function getOrderService() { return new OrderService (); } public static function getMemberService() { return new MemberService (); } } //模型 这里不允许有任何关于用户的信息 这和订单有关 class OrderService { public function cost($uid, $order) { //这里始终要减去用户钱包中的钱 $order = new OrderModel (); $order->addMoneyHistory ( $uid, $order ); return $order [‘money‘]; } } /** * 数据库操作类 */ class OrderModel { /** * 添加消费历史记录 * @param int $uid 用户id * @param decimal $money 消费金额 * @param Array $order 订单信息 */ public function addMoneyHistory($uid, $order) { $param = array (‘uid‘ => $uid, ‘coupons‘ => $order [‘money‘], ‘date‘ => time (), ‘payment‘ => $order [‘payment‘], ‘chargetypes‘ => $order [‘chargetypes‘], ‘remark‘ => $order [‘remark‘], ‘orderno‘ => $order [‘orderno‘], ‘status‘ => $order [‘status‘] ); $this->add ( $this->_money_history, $param ); } }
一个很糟糕的写法 这是在犯罪
时间: 2024-10-29 13:40:50