member_evaluate.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2016/12/13
  6. * Time: 下午8:31
  7. */
  8. require_once(BASE_ROOT_PATH . '/helper/FileUploader.php');
  9. require_once(BASE_ROOT_PATH . '/helper/order_helper.php');
  10. require_once(BASE_ROOT_PATH . '/helper/account_helper.php');
  11. class member_evaluateControl extends mbMemberControl
  12. {
  13. const pic_path = '/data/upload/shop/member';
  14. public function __construct() {
  15. parent::__construct();
  16. }
  17. public function indexOp()
  18. {
  19. }
  20. private function order_id(&$err,&$order_info,&$store_info,&$order_goods)
  21. {
  22. $order_id = intval($_GET['order_id']);
  23. $order_sn = $_GET['order_sn'];
  24. if ($order_id <= 0 && empty($order_sn)) {
  25. $err = array('code' => errcode::ErrOrderNotExist,'msg' => "订单信息不存在.");
  26. return false;
  27. }
  28. else
  29. {
  30. if($order_id > 0) {
  31. $cond['order_id'] = $order_id;
  32. } else {
  33. $cond['order_sn'] = $order_sn;
  34. }
  35. }
  36. $model_order = Model('order');
  37. $model_store = Model('store');
  38. $order_info = $model_order->getOrderInfo($cond);
  39. if(empty($order_info)) {
  40. $err = array('code' => errcode::ErrOrder,'msg' => "无此订单.");
  41. return false;
  42. }
  43. $order_id = intval($order_info['order_id']);
  44. //判断订单身份
  45. if($order_info['buyer_id'] != $_SESSION['member_id']) {
  46. $err = array('code' => errcode::ErrOrder,'msg' => "只能评论自己的订单.");
  47. return false;
  48. }
  49. //订单为'已收货'状态,并且未评论
  50. $order_info['evaluate_able'] = $model_order->getOrderOperateState('evaluation',$order_info);
  51. if (empty($order_info) || !$order_info['evaluate_able']) {
  52. $err = array('code' => errcode::ErrOrder,'msg' => "该订单目前不能评论.");
  53. return false;
  54. }
  55. //查询店铺信息
  56. $store_info = $model_store->getStoreInfoByID($order_info['store_id']);
  57. if(empty($store_info)) {
  58. $err = array('code' => errcode::ErrOrder,'msg' => "店铺不存在.");
  59. return false;
  60. }
  61. //获取订单商品
  62. $order_goods = $model_order->getOrderGoodsList(array('order_id'=>$order_id));
  63. if(empty($order_goods)) {
  64. $err = array('code' => errcode::ErrOrder,'msg' => "找不到该订单商品.");
  65. return false;
  66. }
  67. return $order_id;
  68. }
  69. public function infoOp()
  70. {
  71. $order_id = $this->order_id($err,$order_info,$store_info,$order_goods);
  72. if($order_id == false) {
  73. return self::outerr($err['code'],$err['msg']);
  74. }
  75. for ($i = 0, $j = count($order_goods); $i < $j; $i++) {
  76. $order_goods[$i]['goods_image_url'] = cthumb($order_goods[$i]['goods_image'], 240, $store_info['store_id']);
  77. }
  78. $result = [];
  79. foreach ($order_goods as $key => $val) {
  80. $item['goods_id'] = intval($val['goods_id']);
  81. $item['goods_image'] = $val['goods_image_url'];
  82. $item['store_id'] = intval($val['store_id']);
  83. $item['goods_spec'] = $val['goods_spec'];
  84. $item['goods_name'] = $val['goods_name'];
  85. $result[] = $item;
  86. }
  87. return self::outsuccess(array('order_goods' => $result,'order_id' => $order_id));
  88. }
  89. private function destpath()
  90. {
  91. $path = BASE_ROOT_PATH . self::pic_path . '/' . $_SESSION['member_id'];
  92. if(is_dir($path)) {
  93. return $path;
  94. }
  95. else
  96. {
  97. if(mkdir($path)) {
  98. return $path;
  99. } else {
  100. return false;
  101. }
  102. }
  103. }
  104. private function upfile($img,&$err)
  105. {
  106. $member_id = $_SESSION['member_id'];
  107. $upload = new FileUploader();
  108. if($upload->init_files($img,$member_id,$err) == false) {
  109. return false;
  110. }
  111. $upload_dir = ATTACH_MALBUM.DS.$member_id.DS;
  112. $upload->set('default_dir',$upload_dir.$upload->getSysSetPath());
  113. $thumb_width = '240,1024';
  114. $thumb_height = '2048,1024';
  115. $upload->set('max_size',C('image_max_filesize'));
  116. $upload->set('thumb_width', $thumb_width);
  117. $upload->set('thumb_height',$thumb_height);
  118. $upload->set('fprefix',$member_id);
  119. $upload->set('thumb_ext', '_240,_1024');
  120. $result = $upload->upfile('file');
  121. if($result == true) {
  122. return $upload->file_name;
  123. } else {
  124. $err = array('code' => errcode::ErrUpfile, 'msg' => $upload->error);
  125. return false;
  126. }
  127. }
  128. private function comment(&$err)
  129. {
  130. $input_goods = trim($_POST['evaluation']);
  131. if(empty($input_goods)) {
  132. $err = array('code' => errcode::ErrParamter,'msg' => "请填写评论信息.");
  133. return false;
  134. }
  135. $input_goods = base64_decode($input_goods);
  136. $input_goods = json_decode($input_goods,true);
  137. if(empty($input_goods)) {
  138. $err = array('code' => errcode::ErrParamter,'msg' => "请填写评论信息.");
  139. return false;
  140. }
  141. $save_path = $this->destpath();
  142. if($save_path == false) {
  143. $err = array('code' => errcode::ErrParamter,'msg' => "请填写评论信息.");
  144. return false;
  145. }
  146. $result = [];
  147. foreach ($input_goods as $val)
  148. {
  149. $goods_id = intval($val['goods_id']);
  150. $score = intval($val['score']);
  151. $imges = [];
  152. foreach ($val['images'] as $img)
  153. {
  154. $file_name = $this->upfile($img);
  155. if($file_name != false) {
  156. $imges[] = $file_name;
  157. }
  158. }
  159. $item['goods_id'] = $goods_id;
  160. $item['score'] = $score;
  161. $item['comment'] = $val['comment'];
  162. $item['images'] = implode(',',$imges);
  163. $result[$goods_id] = $item;
  164. }
  165. return $result;
  166. }
  167. public function addOp()
  168. {
  169. $order_id = $this->order_id($err,$order_info,$store_info,$order_goods);
  170. if($order_id == false) {
  171. return self::outerr($err['code'],$err['msg']);
  172. }
  173. $comments = $this->comment($err);
  174. if($comments == false) {
  175. return self::outerr($err['code'],$err['msg']);
  176. }
  177. $anony = $_POST['anony'] ? 1 : 0;
  178. $model_order = Model('order');
  179. $model_evaluate_goods = Model('evaluate_goods');
  180. $evaluate_goods_array = array();
  181. $goodsid_array = array();
  182. $mod_goods = Model('goods');
  183. foreach ($order_goods as $value)
  184. {
  185. $goods_id = intval($value['goods_id']);
  186. $goods_commonid = commonid_helper::instance()->common_id($goods_id);
  187. //如果未评分,默认为5分
  188. $evaluate_score = $comments[$goods_id]['score'];
  189. if($evaluate_score <= 0 || $evaluate_score > 5) {
  190. $evaluate_score = 5;
  191. }
  192. //默认评语
  193. $evaluate_comment = $comments[$goods_id]['comment'];
  194. if(empty($evaluate_comment)) {
  195. $evaluate_comment = '不错哦';
  196. }
  197. $geval_image = $comments[$value['goods_id']]['images'];
  198. $evaluate_goods_info = array();
  199. $evaluate_goods_info['geval_orderid'] = $order_id;
  200. $evaluate_goods_info['geval_orderno'] = $order_info['order_sn'];
  201. $evaluate_goods_info['geval_ordergoodsid'] = $value['rec_id'];
  202. $evaluate_goods_info['geval_commonid'] = $goods_commonid;
  203. $evaluate_goods_info['geval_goodsid'] = $value['goods_id'];
  204. $evaluate_goods_info['geval_goodsname'] = $value['goods_name'];
  205. $evaluate_goods_info['geval_goodsprice'] = $value['goods_price'];
  206. $evaluate_goods_info['geval_goodsimage'] = $value['goods_image'];
  207. $evaluate_goods_info['geval_scores'] = $evaluate_score;
  208. $evaluate_goods_info['geval_content'] = $evaluate_comment;
  209. $evaluate_goods_info['geval_isanonymous'] = $anony;
  210. $evaluate_goods_info['geval_addtime'] = time();
  211. $evaluate_goods_info['geval_storeid'] = $store_info['store_id'];
  212. $evaluate_goods_info['geval_storename'] = $store_info['store_name'];
  213. $evaluate_goods_info['geval_frommemberid'] = $_SESSION['member_id'];
  214. $evaluate_goods_info['geval_frommembername'] = $_SESSION['member_name'];
  215. if(!empty($geval_image)) {
  216. $evaluate_goods_info['geval_image'] = $geval_image;
  217. } else {
  218. $evaluate_goods_info['geval_image'] = '';
  219. }
  220. $evaluate_goods_array[] = $evaluate_goods_info;
  221. $goodsid_array[] = $value['goods_id'];
  222. $mod_goods->editGoodsCommon(['comments' => array('exp', "comments+1")],['goods_commonid' => $goods_commonid]);
  223. }
  224. $model_evaluate_goods->addEvaluateGoodsArray($evaluate_goods_array, $goodsid_array);
  225. //更新订单信息并记录订单日志
  226. $state = $model_order->editOrder(array('evaluation_state'=>1), array('order_id' => $order_id));
  227. $model_order->editOrderCommon(array('evaluation_time'=>time()), array('order_id' => $order_id));
  228. if ($state) {
  229. $data = array();
  230. $data['order_id'] = $order_id;
  231. $data['log_role'] = 'buyer';
  232. $data['log_msg'] = L('order_log_eval');
  233. $model_order->addOrderLog($data);
  234. QueueClient::push('onAsyncOrderEvaluate',['pay_sn' => $order_info['pay_sn']]);
  235. }
  236. //添加会员积分
  237. if (C('points_isuse') == 1){
  238. $points_model = Model('points');
  239. $points_model->savePointsLog('comments',array('pl_memberid'=>$_SESSION['member_id'],'pl_membername'=>$_SESSION['member_name']));
  240. }
  241. //添加会员经验值
  242. Model('exppoints')->saveExppointsLog('comments',array('exp_memberid'=>$_SESSION['member_id'],'exp_membername'=>$_SESSION['member_name']));
  243. $order = $this->get_order(array("buyer_id" => $_SESSION['member_id'],'order_id' => $order_id));
  244. if($order == false) {
  245. $order = null;
  246. }
  247. return self::outsuccess(array("act_type" => 'if_evaluation',"order_id" => $order_id, "order" => $order));
  248. }
  249. private function get_order($condition)
  250. {
  251. $model_order = Model('order');
  252. $order_list = $model_order->getNormalOrderList($condition, $this->page_size, '*', 'order_id desc', '', array('order_common','order_address', 'order_goods'));
  253. $order_helper = new order_helper($order_list);
  254. $orders = $order_helper->format();
  255. $model_order->cls();
  256. if(!empty($orders)) {
  257. return $orders[0];
  258. } else {
  259. return false;
  260. }
  261. }
  262. }