123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?php
- /**
- * 红包管理
- *
- *
- *
- ***/
- defined('InShopNC') or exit('Access Invalid!');
- class bonusControl extends mobileHomeControl
- {
- public function __construct()
- {
- parent::__construct();
- }
- /**
- * 首页-获取红包
- */
- public function modeOp()
- {
- $type_id = $_GET['type_id'];
- $result = Model()->table('bonus_type')->where(array('type_id' => $type_id))->limit(1)->select();
- if (!empty($result)) {
- Tpl::output('sender', $result[0]['sender']);
- Tpl::output('link', self::home_url . "?act=h5_hb&op=bindtel&type_id={$type_id}");
- Tpl::showpage('mode', 'h5_hb/mode');
- } else {
- Tpl::showpage('mode', 'h5_hb/over');
- }
- }
- /**
- * 获取红包类型
- */
- private function getBonusType($type_id)
- {
- static $bonustype;
- if (empty($bonustype)) {
- $result = Model()->table('bonus_type')->select();
- foreach ($result as $key => $value) {
- $typeid = strval($value['type_id']);
- $bonustype[$typeid] = $value;
- }
- }
- return $bonustype[$type_id];
- }
- /**
- * 获取红包列表, 红包使用列表数据
- */
- public function bonus_listOp()
- {
- // 根据token获取用户ID
- $condition = array();
- $condition['user_id'] = $_SESSION['member_id'];
- if (!empty($condition['user_id']))
- {
- // 红包总值(直接等于预存款值)
- $member = Model('member');
- $pd_array = $member->getMemberPdInfo($condition['user_id']);;
- $total_value = $pd_array['available_predeposit']; // 当前预存款
- $freeze_value = $pd_array['freeze_predeposit']; // 当前预存款冻结
- // 获取使用列表
- $ret_array = $member->getPdOrderList($condition['user_id']);
- self::outsuccess(array('total_value' => $total_value,'freeze_value' => $freeze_value,"ret_array" => $ret_array));
- }
- }
- /**
- * 添加余额
- */
- private function _add_money_ex($member_id, $pointsnum, $order_sn, $pointsdesc, $bonusname)
- {
- $obj_validate = new Validate();
- $obj_validate->validateparam = array(
- array("input" => $member_id, "require" => "true", "message" => Language::get('admin_points_member_error_again')),
- array("input" => $pointsnum, "require" => "true", 'validator' => 'Compare', 'operator' => ' >= ', 'to' => 1, "message" => Language::get('admin_points_points_min_error'))
- );
- $error = $obj_validate->validate();
- if ($error != '') {
- return -1;
- }
- $money = abs(floatval($pointsnum));
- $memo = trim($pointsdesc);
- if ($money <= 0) {
- return -2; // 输入的金额必需大于0
- }
- //查询会员信息
- $obj_member = Model('member');
- $member_id = intval($member_id);
- $member_info = $obj_member->getMemberInfo(array('member_id' => $member_id));
- if (!is_array($member_info) || count($member_info) <= 0) {
- return -3; // 用户信息不对
- }
- $available_predeposit = floatval($member_info['available_predeposit']);
- $freeze_predeposit = floatval($member_info['freeze_predeposit']);
- $model_pd = Model('predeposit');
- try {
- //扣除冻结的预存款
- $data = array();
- $data['member_id'] = $member_info['member_id'];
- $data['member_name'] = $member_info['member_name'];
- $data['amount'] = $money;
- $data['order_sn'] = $order_sn;
- $data['admin_name'] = $bonusname;
- $data['pdr_sn'] = $order_sn;
- $data['lg_desc'] = $memo;
- $model_pd->changePd("bonus_add_money", $data);
- return 0; // 操作成功
- } catch (Exception $e) {
- return -7; // 操作异常
- }
- return -8;
- }
- public function gensnOp(){
- $model_pd = Model('predeposit');
- $user_bonus = Model()->table("user_bonus")->limit(10000)->select();
- foreach($user_bonus as $val){
- $data = array();
- $data['bonus_sn'] = $model_pd->makeSn();
- if(intval($val['bonus_sn']) == 100000){
- $ret = Model()->table('user_bonus')->where(array('bonus_id' => $val['bonus_id']))->update($data);
- if(!$ret){
- return joutput_error(errcode::ErrDB);
- }
- }
- }
- return joutput_data(null);
- }
- // 红包绑定
- public function bind_bonusOp()
- {
- // 获取user_id
- $condition = array();
- $condition['member_id'] = $_SESSION['member_id'];
- if (!empty($condition['member_id'])) {
- // get member_mobile 获取用户手机号
- $member = Model()->table("member")->field("member_mobile")->where($condition)->select();
- if (!empty($member)) {
- $user_bonus = Model()->table("user_bonus")->where(array('user_mobile' => $member[0]['member_mobile'], 'user_id' => 0))->select();
- // 更新user_bonus
- if (!empty($user_bonus)) {
- Model::beginTransaction();
- $bonus_info = array();
- foreach ($user_bonus as $value) {
- $info = [];
- $bonus_type = $this->getBonusType(strval($value['bonus_type_id']));
- $info['sender'] = $bonus_type['sender'];
- $info['type_name'] = $bonus_type['type_name'];
- $info['bonus_value'] = $value['bonus_value'];
- array_push($bonus_info, $info);
- // 添加预存款
- $ret = $this->_add_money_ex($_SESSION['member_id'], $value['bonus_value'], $value["bonus_sn"], '', $bonus_type['type_name']);
- if (0 != $ret) {
- Model::rollback();
- return joutput_error(errcode::ErrDB);
- }
- }
- // 更新为已领取
- $data = array();
- $data['user_id'] = $_SESSION['member_id'];
- $data['status'] = '1';
- $ret = Model()->table('user_bonus')->where(array('user_mobile' => $member[0]['member_mobile']))->update($data);
- if (0 == $ret) {
- Model::rollback();
- return joutput_error(errcode::ErrDB);
- }
- Model::commit();
- joutput_data(array('have_bonus' => 1, 'bonus_info' => $bonus_info));
- } else {
- joutput_data(array('have_bonus' => 0, 'bonus_info' => null));
- }
- } else {
- return joutput_error(errcode::ErrMobileNotBinded);
- }
- }
- }
- }
|