123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- <?php
- namespace app\common\model;
- use think\facade\Db;
- /**
-
- *
-
- *
- * ----------------------------------------------------------------------------
- *
-
- * 数据层模型
- */
- class Evaluategoods extends BaseModel
- {
- public $page_info;
- /**
- * 查询评价列表
- * @access public
- * @author csdeshang
- * @param array $condition 查询条件
- * @param int $pagesize 分页数
- * @param string $order 排序
- * @param string $field 字段
- * @return array
- */
- public function getEvaluategoodsList($condition, $pagesize = null, $order = 'geval_id desc', $field = '*')
- {
- if ($pagesize) {
- $list = Db::name('evaluategoods')->field($field)->where($condition)->order($order)->paginate(['list_rows' => $pagesize, 'query' => request()->param()], false);
- $this->page_info = $list;
- return $list->items();
- } else {
- $list = Db::name('evaluategoods')->field($field)->where($condition)->order($order)->select()->toArray();
- return $list;
- }
- }
- /**
- * 根据编号查询商品评价
- * @access public
- * @author csdeshang
- * @param int $geval_id 编号
- * @param int $store_id 店铺ID
- * @return type
- */
- public function getEvaluategoodsInfoByID($geval_id, $store_id = 0)
- {
- if (intval($geval_id) <= 0) {
- return null;
- }
- $info = Db::name('evaluategoods')->where(array('geval_id' => $geval_id))->find();
- if ($store_id > 0 && intval($info['geval_storeid']) !== $store_id) {
- return null;
- } else {
- return $info;
- }
- }
- /**
- * 根据商品编号查询商品评价信息
- * @access public
- * @author csdeshang
- * @param int $goods_id 商品ID
- * @return array
- */
- public function getEvaluategoodsInfoByGoodsID($goods_id)
- {
- $prefix = 'goods_evaluation';
- $info = rcache($goods_id, $prefix);
- if (empty($info)) {
- $info = array();
- $count_array = Db::name('evaluategoods')->field('count(*) as count,geval_scores')->where(array('geval_goodsid' => $goods_id))->group('geval_scores')->select()->toArray();
- $count_array = ds_change_arraykey($count_array, 'geval_scores');
- $star1 = isset($count_array['1']['count']) ? intval($count_array['1']['count']) : 0;
- $star2 = isset($count_array['2']['count']) ? intval($count_array['2']['count']) : 0;
- $star3 = isset($count_array['3']['count']) ? intval($count_array['3']['count']) : 0;
- $star4 = isset($count_array['4']['count']) ? intval($count_array['4']['count']) : 0;
- $star5 = isset($count_array['5']['count']) ? intval($count_array['5']['count']) : 0;
- $info['good'] = $star4 + $star5;
- $info['normal'] = $star2 + $star3;
- $info['bad'] = $star1;
- $info['all'] = $star1 + $star2 + $star3 + $star4 + $star5;
- if (intval($info['all']) > 0) {
- $info['good_percent'] = intval($info['good'] / $info['all'] * 100);
- $info['normal_percent'] = intval($info['normal'] / $info['all'] * 100);
- $info['bad_percent'] = intval($info['bad'] / $info['all'] * 100);
- $info['good_star'] = ceil($info['good'] / $info['all'] * 5);
- $info['star_average'] = ceil(($star1 + $star2 * 2 + $star3 * 3 + $star4 * 4 + $star5 * 5) / $info['all']);
- } else {
- $info['good_percent'] = 100;
- $info['normal_percent'] = 0;
- $info['bad_percent'] = 0;
- $info['good_star'] = 5;
- $info['star_average'] = 5;
- }
- //更新商品表好评星级和评论数
- $goods_model = model('goods');
- $update = array();
- $update['evaluation_good_star'] = $info['star_average'];
- $update['evaluation_count'] = $info['all'];
- $goods_model->editGoodsById($update, $goods_id);
- wcache($goods_id, $info, $prefix);
- }
- return $info;
- }
- /**
- * 根据抢购编号查询商品评价信息
- * @access public
- * @author csdeshang
- * @param int $goods_commonid 抢购编号
- * @return array
- */
- public function getEvaluategoodsInfoByCommonidID($goods_commonid)
- {
- $prefix = 'goods_common_evaluation';
- $info = rcache($goods_commonid, $prefix);
- if (empty($info)) {
- $info = array();
- $info['good_percent'] = 100;
- $info['normal_percent'] = 0;
- $info['bad_percent'] = 0;
- $info['good_star'] = 5;
- $info['all'] = 0;
- $info['good'] = 0;
- $info['normal'] = 0;
- $info['bad'] = 0;
- $condition = array();
- $condition[] = array('goods_commonid', '=', $goods_commonid);
- $goods_list = model('goods')->getGoodsList($condition, 'goods_id');
- if (!empty($goods_list)) {
- $goodsid_array = array();
- foreach ($goods_list as $value) {
- $goodsid_array[] = $value['goods_id'];
- }
- $good = Db::name('evaluategoods')->where('geval_goodsid', 'in', $goodsid_array)->where('geval_scores', 'in', '4,5')->count();
- $info['good'] = $good;
- $normal = Db::name('evaluategoods')->where('geval_goodsid', 'in', $goodsid_array)->where('geval_scores', 'in', '2,3')->count();
- $info['normal'] = $normal;
- $bad = Db::name('evaluategoods')->where('geval_goodsid', 'in', $goodsid_array)->where('geval_scores', 'in', '1')->count();
- $info['bad'] = $bad;
- $info['all'] = $info['good'] + $info['normal'] + $info['bad'];
- if (intval($info['all']) > 0) {
- $info['good_percent'] = intval($info['good'] / $info['all'] * 100);
- $info['normal_percent'] = intval($info['normal'] / $info['all'] * 100);
- $info['bad_percent'] = intval($info['bad'] / $info['all'] * 100);
- $info['good_star'] = ceil($info['good'] / $info['all'] * 5);
- }
- }
- wcache($goods_commonid, $info, $prefix, 24 * 60); // 缓存周期1天。
- }
- return $info;
- }
- /**
- * 批量添加商品评价
- * @access public
- * @author csdeshang
- * @param array $datas 参数内容
- * @param array $goodsid_array 商品id数组,更新缓存使用
- * @return boolean
- */
- public function addEvaluategoodsArray($datas, $goodsid_array)
- {
- $result = Db::name('evaluategoods')->insertAll($datas);
- // 删除商品评价缓存
- if ($result && !empty($goodsid_array)) {
- foreach ($goodsid_array as $goods_id) {
- dcache($goods_id, 'goods_evaluation');
- }
- }
- return $result;
- }
- /**
- * 更新商品评价
- *
- * 现在此方法只是编辑晒单,不需要更新缓存
- * 如果使用此方法修改大星星数量请根据goods_id删除缓存
- * 例:dcache($goods_id, 'goods_evaluation');
- * @access public
- * @author csdeshang
- * @param array $update 更新数据
- * @param array $condition 条件
- * @return bool
- */
- public function editEvaluategoods($update, $condition)
- {
- $goodsid_array = Db::name('evaluategoods')->where($condition)->column('geval_goodsid');
- foreach ($goodsid_array as $goods_id) {
- dcache($goods_id, 'goods_evaluation');
- }
- return Db::name('evaluategoods')->where($condition)->update($update);
- }
- /**
- * 删除商品评价
- * @access public
- * @author csdeshang
- * @param type $condition 条件
- * @return bool
- */
- public function delEvaluategoods($condition)
- {
- $goodsid_array = Db::name('evaluategoods')->where($condition)->column('geval_goodsid');
- foreach ($goodsid_array as $goods_id) {
- dcache($goods_id, 'goods_evaluation');
- }
- return Db::name('evaluategoods')->where($condition)->delete();
- }
- }
|