member_evaluate.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. <?php
  2. /**
  3. * 会员中心——买家评价
  4. ***/
  5. defined('InShopNC') or exit('Access Invalid!');
  6. class member_evaluateControl extends BaseMemberControl{
  7. public function __construct(){
  8. parent::__construct() ;
  9. Language::read('member_layout,member_evaluate');
  10. Tpl::output('pj_act','member_evaluate');
  11. }
  12. /**
  13. * 订单添加评价
  14. */
  15. public function addOp(){
  16. $order_id = intval($_GET['order_id']);
  17. if (!$order_id){
  18. showMessage(Language::get('wrong_argument'),'index.php?act=member_order','html','error');
  19. }
  20. $model_order = Model('order');
  21. $model_store = Model('store');
  22. $model_evaluate_goods = Model('evaluate_goods');
  23. $model_evaluate_store = Model('evaluate_store');
  24. //获取订单信息
  25. $order_info = $model_order->getOrderInfo(array('order_id' => $order_id));
  26. //判断订单身份
  27. if($order_info['buyer_id'] != $_SESSION['member_id']) {
  28. showMessage(Language::get('wrong_argument'),'index.php?act=member_order','html','error');
  29. }
  30. //订单为'已收货'状态,并且未评论
  31. $order_info['evaluate_able'] = $model_order->getOrderOperateState('evaluation',$order_info);
  32. if (empty($order_info) || !$order_info['evaluate_able']){
  33. showMessage(Language::get('member_evaluation_order_notexists'),'index.php?act=member_order','html','error');
  34. }
  35. //查询店铺信息
  36. $store_info = $model_store->getStoreInfoByID($order_info['store_id']);
  37. if(empty($store_info)){
  38. showMessage(Language::get('member_evaluation_store_notexists'),'index.php?act=member_order','html','error');
  39. }
  40. //获取订单商品
  41. $order_goods = $model_order->getOrderGoodsList(array('order_id'=>$order_id));
  42. if(empty($order_goods)){
  43. showMessage(Language::get('member_evaluation_order_notexists'),'index.php?act=member_order','html','error');
  44. }
  45. //判断是否为页面
  46. if (!$_POST){
  47. for ($i = 0, $j = count($order_goods); $i < $j; $i++) {
  48. $order_goods[$i]['goods_image_url'] = cthumb($order_goods[$i]['goods_image'], 60, $store_info['store_id']);
  49. }
  50. //处理积分、经验值计算说明文字
  51. $ruleexplain = '';
  52. $exppoints_rule = C("exppoints_rule")?unserialize(C("exppoints_rule")):array();
  53. $exppoints_rule['exp_comments'] = intval($exppoints_rule['exp_comments']);
  54. $points_comments = intval(C('points_comments'));
  55. if ($exppoints_rule['exp_comments'] > 0 || $points_comments > 0){
  56. $ruleexplain .= '评价完成将获得';
  57. if ($exppoints_rule['exp_comments'] > 0){
  58. $ruleexplain .= (' “'.$exppoints_rule['exp_comments'].'经验值”');
  59. }
  60. if ($points_comments > 0){
  61. $ruleexplain .= (' “'.$points_comments.'积分”');
  62. }
  63. $ruleexplain .= '。';
  64. }
  65. Tpl::output('ruleexplain', $ruleexplain);
  66. //不显示左菜单
  67. Tpl::output('left_show','order_view');
  68. Tpl::output('order_info',$order_info);
  69. Tpl::output('order_goods',$order_goods);
  70. Tpl::output('store_info',$store_info);
  71. Tpl::showpage('evaluation.add');
  72. }else {
  73. $evaluate_goods_array = array();
  74. $goodsid_array = array();
  75. foreach ($order_goods as $value){
  76. //如果未评分,默认为5分
  77. $evaluate_score = intval($_POST['goods'][$value['goods_id']]['score']);
  78. if($evaluate_score <= 0 || $evaluate_score > 5) {
  79. $evaluate_score = 5;
  80. }
  81. //默认评语
  82. $evaluate_comment = $_POST['goods'][$value['goods_id']]['comment'];
  83. if(empty($evaluate_comment)) {
  84. $evaluate_comment = '不错哦';
  85. }
  86. $evaluate_goods_info = array();
  87. $evaluate_goods_info['geval_orderid'] = $order_id;
  88. $evaluate_goods_info['geval_orderno'] = $order_info['order_sn'];
  89. $evaluate_goods_info['geval_ordergoodsid'] = $value['rec_id'];
  90. $evaluate_goods_info['geval_goodsid'] = $value['goods_id'];
  91. $evaluate_goods_info['geval_goodsname'] = $value['goods_name'];
  92. $evaluate_goods_info['geval_goodsprice'] = $value['goods_price'];
  93. $evaluate_goods_info['geval_goodsimage'] = $value['goods_image'];
  94. $evaluate_goods_info['geval_scores'] = $evaluate_score;
  95. $evaluate_goods_info['geval_content'] = $evaluate_comment;
  96. $evaluate_goods_info['geval_isanonymous'] = $_POST['anony']?1:0;
  97. $evaluate_goods_info['geval_addtime'] = TIMESTAMP;
  98. $evaluate_goods_info['geval_storeid'] = $store_info['store_id'];
  99. $evaluate_goods_info['geval_storename'] = $store_info['store_name'];
  100. $evaluate_goods_info['geval_frommemberid'] = $_SESSION['member_id'];
  101. $evaluate_goods_info['geval_frommembername'] = $_SESSION['member_name'];
  102. $evaluate_goods_array[] = $evaluate_goods_info;
  103. $goodsid_array[] = $value['goods_id'];
  104. }
  105. $model_evaluate_goods->addEvaluateGoodsArray($evaluate_goods_array, $goodsid_array);
  106. $store_desccredit = intval($_POST['store_desccredit']);
  107. if($store_desccredit <= 0 || $store_desccredit > 5) {
  108. $store_desccredit= 5;
  109. }
  110. $store_servicecredit = intval($_POST['store_servicecredit']);
  111. if($store_servicecredit <= 0 || $store_servicecredit > 5) {
  112. $store_servicecredit = 5;
  113. }
  114. $store_deliverycredit = intval($_POST['store_deliverycredit']);
  115. if($store_deliverycredit <= 0 || $store_deliverycredit > 5) {
  116. $store_deliverycredit = 5;
  117. }
  118. // //添加店铺评价
  119. if (!$store_info['is_own_shop']) {
  120. $evaluate_store_info = array();
  121. $evaluate_store_info['seval_orderid'] = $order_id;
  122. $evaluate_store_info['seval_orderno'] = $order_info['order_sn'];
  123. $evaluate_store_info['seval_addtime'] = time();
  124. $evaluate_store_info['seval_storeid'] = $store_info['store_id'];
  125. $evaluate_store_info['seval_storename'] = $store_info['store_name'];
  126. $evaluate_store_info['seval_memberid'] = $_SESSION['member_id'];
  127. $evaluate_store_info['seval_membername'] = $_SESSION['member_name'];
  128. $evaluate_store_info['seval_desccredit'] = $store_desccredit;
  129. $evaluate_store_info['seval_servicecredit'] = $store_servicecredit;
  130. $evaluate_store_info['seval_deliverycredit'] = $store_deliverycredit;
  131. }
  132. $model_evaluate_store->addEvaluateStore($evaluate_store_info);
  133. //更新订单信息并记录订单日志
  134. $state = $model_order->editOrder(array('evaluation_state'=>1), array('order_id' => $order_id));
  135. $model_order->editOrderCommon(array('evaluation_time'=>TIMESTAMP), array('order_id' => $order_id));
  136. if ($state){
  137. $data = array();
  138. $data['order_id'] = $order_id;
  139. $data['log_role'] = 'buyer';
  140. $data['log_msg'] = L('order_log_eval');
  141. $model_order->addOrderLog($data);
  142. }
  143. //添加会员积分
  144. if (C('points_isuse') == 1){
  145. $points_model = Model('points');
  146. $points_model->savePointsLog('comments',array('pl_memberid'=>$_SESSION['member_id'],'pl_membername'=>$_SESSION['member_name']));
  147. }
  148. //添加会员经验值
  149. Model('exppoints')->saveExppointsLog('comments',array('exp_memberid'=>$_SESSION['member_id'],'exp_membername'=>$_SESSION['member_name']));;
  150. showDialog(Language::get('member_evaluation_evaluat_success'),'index.php?act=member_order', 'succ');
  151. }
  152. }
  153. /**
  154. * 虚拟商品评价
  155. */
  156. public function add_vrOp(){
  157. $order_id = intval($_GET['order_id']);
  158. if (!$order_id){
  159. showMessage(Language::get('wrong_argument'),'index.php?act=member_vr_order','html','error');
  160. }
  161. $model_order = Model('vr_order');
  162. $model_store = Model('store');
  163. $model_evaluate_goods = Model('evaluate_goods');
  164. $model_evaluate_store = Model('evaluate_store');
  165. //获取订单信息
  166. $order_info = $model_order->getOrderInfo(array('order_id' => $order_id));
  167. //判断订单身份
  168. if($order_info['buyer_id'] != $_SESSION['member_id']) {
  169. showMessage(Language::get('wrong_argument'),'index.php?act=member_vr_order','html','error');
  170. }
  171. //订单为'已收货'状态,并且未评论
  172. $order_info['evaluate_able'] = $model_order->getOrderOperateState('evaluation',$order_info);
  173. if (!$order_info['evaluate_able']){
  174. showMessage(Language::get('member_evaluation_order_notexists'),'index.php?act=member_vr_order','html','error');
  175. }
  176. //查询店铺信息
  177. $store_info = $model_store->getStoreInfoByID($order_info['store_id']);
  178. if(empty($store_info)){
  179. showMessage(Language::get('member_evaluation_store_notexists'),'index.php?act=member_vr_order','html','error');
  180. }
  181. $order_goods = array($order_info);
  182. //判断是否为页面
  183. if (!$_POST){
  184. $order_goods[0]['goods_image_url'] = cthumb($order_info['goods_image'], 60, $order_info['store_id']);
  185. //处理积分、经验值计算说明文字
  186. $ruleexplain = '';
  187. $exppoints_rule = C("exppoints_rule")?unserialize(C("exppoints_rule")):array();
  188. $exppoints_rule['exp_comments'] = intval($exppoints_rule['exp_comments']);
  189. $points_comments = intval(C('points_comments'));
  190. if ($exppoints_rule['exp_comments'] > 0 || $points_comments > 0){
  191. $ruleexplain .= '评价完成将获得';
  192. if ($exppoints_rule['exp_comments'] > 0){
  193. $ruleexplain .= (' “'.$exppoints_rule['exp_comments'].'经验值”');
  194. }
  195. if ($points_comments > 0){
  196. $ruleexplain .= (' “'.$points_comments.'积分”');
  197. }
  198. $ruleexplain .= '。';
  199. }
  200. Tpl::output('ruleexplain', $ruleexplain);
  201. //不显示左菜单
  202. Tpl::output('left_show','order_view');
  203. Tpl::output('order_info',$order_info);
  204. Tpl::output('order_goods',$order_goods);
  205. Tpl::output('store_info',$store_info);
  206. Tpl::showpage('evaluation.add');
  207. }else {
  208. $evaluate_goods_array = array();
  209. $goodsid_array = array();
  210. foreach ($order_goods as $value){
  211. //如果未评分,默认为5分
  212. $evaluate_score = intval($_POST['goods'][$value['goods_id']]['score']);
  213. if($evaluate_score <= 0 || $evaluate_score > 5) {
  214. $evaluate_score = 5;
  215. }
  216. //默认评语
  217. $evaluate_comment = $_POST['goods'][$value['goods_id']]['comment'];
  218. if(empty($evaluate_comment)) {
  219. $evaluate_comment = '不错哦';
  220. }
  221. $evaluate_goods_info = array();
  222. $evaluate_goods_info['geval_orderid'] = $order_id;
  223. $evaluate_goods_info['geval_orderno'] = $order_info['order_sn'];
  224. $evaluate_goods_info['geval_ordergoodsid'] = $order_id;
  225. $evaluate_goods_info['geval_goodsid'] = $value['goods_id'];
  226. $evaluate_goods_info['geval_goodsname'] = $value['goods_name'];
  227. $evaluate_goods_info['geval_goodsprice'] = $value['goods_price'];
  228. $evaluate_goods_info['geval_goodsimage'] = $value['goods_image'];
  229. $evaluate_goods_info['geval_scores'] = $evaluate_score;
  230. $evaluate_goods_info['geval_content'] = $evaluate_comment;
  231. $evaluate_goods_info['geval_isanonymous'] = $_POST['anony']?1:0;
  232. $evaluate_goods_info['geval_addtime'] = TIMESTAMP;
  233. $evaluate_goods_info['geval_storeid'] = $store_info['store_id'];
  234. $evaluate_goods_info['geval_storename'] = $store_info['store_name'];
  235. $evaluate_goods_info['geval_frommemberid'] = $_SESSION['member_id'];
  236. $evaluate_goods_info['geval_frommembername'] = $_SESSION['member_name'];
  237. $evaluate_goods_array[] = $evaluate_goods_info;
  238. $goodsid_array[] = $value['goods_id'];
  239. }
  240. $model_evaluate_goods->addEvaluateGoodsArray($evaluate_goods_array, $goodsid_array);
  241. // $store_desccredit = intval($_POST['store_desccredit']);
  242. // if($store_desccredit <= 0 || $store_desccredit > 5) {
  243. // $store_desccredit= 5;
  244. // }
  245. // $store_servicecredit = intval($_POST['store_servicecredit']);
  246. // if($store_servicecredit <= 0 || $store_servicecredit > 5) {
  247. // $store_servicecredit = 5;
  248. // }
  249. // $store_deliverycredit = intval($_POST['store_deliverycredit']);
  250. // if($store_deliverycredit <= 0 || $store_deliverycredit > 5) {
  251. // $store_deliverycredit = 5;
  252. // }
  253. // //添加店铺评价
  254. // if (!$store_info['is_own_shop']) {
  255. // $evaluate_store_info = array();
  256. // $evaluate_store_info['seval_orderid'] = $order_id;
  257. // $evaluate_store_info['seval_orderno'] = $order_info['order_sn'];
  258. // $evaluate_store_info['seval_addtime'] = time();
  259. // $evaluate_store_info['seval_storeid'] = $store_info['store_id'];
  260. // $evaluate_store_info['seval_storename'] = $store_info['store_name'];
  261. // $evaluate_store_info['seval_memberid'] = $_SESSION['member_id'];
  262. // $evaluate_store_info['seval_membername'] = $_SESSION['member_name'];
  263. // $evaluate_store_info['seval_desccredit'] = $store_desccredit;
  264. // $evaluate_store_info['seval_servicecredit'] = $store_servicecredit;
  265. // $evaluate_store_info['seval_deliverycredit'] = $store_deliverycredit;
  266. // $model_evaluate_store->addEvaluateStore($evaluate_store_info);
  267. // }
  268. //更新订单信息并记录订单日志
  269. $state = $model_order->editOrder(array('evaluation_state'=>1,'evaluation_time'=>TIMESTAMP), array('order_id' => $order_id));
  270. //添加会员积分
  271. if (C('points_isuse') == 1){
  272. $points_model = Model('points');
  273. $points_model->savePointsLog('comments',array('pl_memberid'=>$_SESSION['member_id'],'pl_membername'=>$_SESSION['member_name']));
  274. }
  275. //添加会员经验值
  276. Model('exppoints')->saveExppointsLog('comments',array('exp_memberid'=>$_SESSION['member_id'],'exp_membername'=>$_SESSION['member_name']));;
  277. showDialog(Language::get('member_evaluation_evaluat_success'),'index.php?act=member_vr_order', 'succ');
  278. }
  279. }
  280. /**
  281. * 评价列表
  282. */
  283. public function listOp(){
  284. $model_evaluate_goods = Model('evaluate_goods');
  285. $condition = array();
  286. $condition['geval_frommemberid'] = $_SESSION['member_id'];
  287. $goodsevallist = $model_evaluate_goods->getEvaluateGoodsList($condition, 10, 'geval_id desc');
  288. Tpl::output('goodsevallist',$goodsevallist);
  289. Tpl::output('show_page',$model_evaluate_goods->showpage());
  290. Tpl::showpage('evaluation.index');
  291. }
  292. public function add_imageOp() {$geval_id = intval($_GET['geval_id']);
  293. $model_evaluate_goods = Model('evaluate_goods');
  294. $model_store = Model('store');
  295. $model_sns_alumb = Model('sns_album');
  296. $geval_info = $model_evaluate_goods->getEvaluateGoodsInfoByID($geval_id);
  297. if(!empty($geval_info['geval_image'])) {
  298. showMessage('该商品已经发表过晒单', '', '', 'error');
  299. }
  300. if($geval_info['geval_frommemberid'] != $_SESSION['member_id']) {
  301. showMessage(L('param_error'), '', '', 'error');
  302. }
  303. Tpl::output('geval_info', $geval_info);
  304. $store_info = $model_store->getStoreInfoByID($geval_info['geval_storeid']);
  305. Tpl::output('store_info', $store_info);
  306. $ac_id = $model_sns_alumb->getSnsAlbumClassDefault($_SESSION['member_id']);
  307. Tpl::output('ac_id', $ac_id);
  308. //不显示左菜单
  309. Tpl::output('left_show','order_view');
  310. Tpl::showpage('evaluation.add_image');
  311. }
  312. public function add_image_saveOp() {
  313. $geval_id = intval($_POST['geval_id']);
  314. $geval_image = '';
  315. foreach ($_POST['evaluate_image'] as $value) {
  316. if(!empty($value)) {
  317. $geval_image .= $value . ',';
  318. }
  319. }
  320. $geval_image = rtrim($geval_image, ',');
  321. $model_evaluate_goods = Model('evaluate_goods');
  322. $geval_info = $model_evaluate_goods->getEvaluateGoodsInfoByID($geval_id);
  323. if(empty($geval_info)) {
  324. showDialog(L('param_error'));
  325. }
  326. if($geval_info['geval_frommemberid'] != $_SESSION['member_id']) {
  327. showDialog(L('param_error'));
  328. }
  329. $update = array();
  330. $update['geval_image'] = $geval_image;
  331. $condition = array();
  332. $condition['geval_id'] = $geval_id;
  333. $result = $model_evaluate_goods->editEvaluateGoods($update, $condition);
  334. list($sns_image) = explode(',', $geval_image);
  335. $goods_url = urlShop('goods', 'index', array('goods_id' => $geval_info['geval_goodsid']));
  336. //同步到sns
  337. $content = "
  338. <div class='fd-media'>
  339. <div class='goodsimg'><a target=\"_blank\" href=\"{$goods_url}\"><img src=\"".snsThumb($sns_image, 240)."\" title=\"{$geval_info['geval_goodsname']}\" alt=\"{$geval_info['geval_goodsname']}\"></a></div>
  340. <div class='goodsinfo'>
  341. <dl>
  342. <dt><a target=\"_blank\" href=\"{$goods_url}\">{$geval_info['geval_goodsname']}</a></dt>
  343. <dd>价格".Language::get('nc_colon').Language::get('currency').$geval_info['geval_goodsprice']."</dd>
  344. <dd><a target=\"_blank\" href=\"{$goods_url}\">去看看</a></dd>
  345. </dl>
  346. </div>
  347. </div>
  348. ";
  349. $tracelog_model = Model('sns_tracelog');
  350. $insert_arr = array();
  351. $insert_arr['trace_originalid'] = '0';
  352. $insert_arr['trace_originalmemberid'] = '0';
  353. $insert_arr['trace_memberid'] = $_SESSION['member_id'];
  354. $insert_arr['trace_membername'] = $_SESSION['member_name'];
  355. $insert_arr['trace_memberavatar'] = $_SESSION['member_avatar'];
  356. $insert_arr['trace_title'] = '发表了商品晒单';
  357. $insert_arr['trace_content'] = $content;
  358. $insert_arr['trace_addtime'] = TIMESTAMP;
  359. $insert_arr['trace_state'] = '0';
  360. $insert_arr['trace_privacy'] = 0;
  361. $insert_arr['trace_commentcount'] = 0;
  362. $insert_arr['trace_copycount'] = 0;
  363. $insert_arr['trace_from'] = '1';
  364. $result = $tracelog_model->tracelogAdd($insert_arr);
  365. if($result) {
  366. showDialog(L('nc_common_save_succ'), urlShop('member_evaluate', 'list'), 'succ');
  367. } else {
  368. showDialog(L('nc_common_save_succ'), urlShop('member_evaluate', 'list'));
  369. }
  370. }
  371. }