MerchantDao.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <?php
  2. /**
  3. * @package merchant
  4. *
  5. * @author xaboy
  6. * @day 2020-04-16
  7. *
  8. *
  9. */
  10. namespace app\common\dao\system\merchant;
  11. use app\common\dao\BaseDao;
  12. use app\common\model\system\merchant\Merchant;
  13. use app\common\model\user\User;
  14. use think\db\BaseQuery;
  15. use think\db\exception\DataNotFoundException;
  16. use think\db\exception\DbException;
  17. use think\db\exception\ModelNotFoundException;
  18. use think\Model;
  19. class MerchantDao extends BaseDao
  20. {
  21. /**
  22. * @return string
  23. * @author xaboy
  24. * @day 2020-04-16
  25. */
  26. protected function getModel(): string
  27. {
  28. return Merchant::class;
  29. }
  30. /**
  31. * @param array $where
  32. * @return BaseQuery
  33. * @author xaboy
  34. * @day 2020-04-16
  35. */
  36. public function search(array $where, $is_del = 0)
  37. {
  38. $query = Merchant::getDB()->when($is_del !== null, function ($query) use ($is_del) {
  39. $query->where('is_del', $is_del);
  40. })->when(isset($where['date']) && $where['date'] !== '', function ($query) use ($where) {
  41. getModelTime($query, $where['date']);
  42. });
  43. if (isset($where['keyword']) && $where['keyword'])
  44. $query->whereLike('mer_name|mer_keyword|mer_phone', "%{$where['keyword']}%");
  45. if (isset($where['status']) && $where['status'])
  46. $query->where('status', $where['status']);
  47. if (isset($where['mer_state']) && $where['mer_state'])
  48. $query->where('mer_state', $where['mer_state']);
  49. if (isset($where['category_id']) && $where['category_id'])
  50. $query->where('category_id', $where['category_id']);
  51. if (isset($where['city_id']) && $where['city_id'])
  52. $query->where('city_id', $where['city_id']);
  53. $order = $where['order'] ?? '';
  54. $query->when($order, function ($query) use ($order) {
  55. if (in_array($order, ['rate', 'sales']) && $order == 'rate')
  56. $query->order('is_best DESC, product_score DESC,service_score DESC,postage_score DESC,sort DESC');
  57. else
  58. $query->order('is_best DESC, sales DESC,sort DESC');
  59. }, function ($query) use ($order) {
  60. $query->order('is_best DESC, sort DESC,sales DESC');
  61. })->when(isset($where['account']) && $where['account'] !== '', function ($query) use ($where) {
  62. $uid = User::where('account|nickname|phone', 'like', "%{$where['account']}%")
  63. ->column('uid');
  64. $query->where('uid', 'in', $uid);
  65. });
  66. return $query;
  67. }
  68. /**
  69. * @param array $where
  70. * @param int $is_del
  71. * @return BaseQuery
  72. */
  73. public function searchLeft(array $where, $is_del = 0)
  74. {
  75. $query = Merchant::getDB()->when($is_del !== null, function ($query) use ($is_del) {
  76. $query->where('merchant.is_del', $is_del);
  77. })->when(isset($where['date']) && $where['date'] !== '', function ($query) use ($where) {
  78. getModelTime($query, $where['date'], 'merchant.create_time');
  79. });
  80. if (isset($where['keyword']) && $where['keyword'])
  81. $query->whereLike('merchant.mer_name|merchant.mer_keyword|merchant.mer_phone', "%{$where['keyword']}%");
  82. if (isset($where['status']) && $where['status'])
  83. $query->where('merchant.status', $where['status']);
  84. if (isset($where['mer_state']) && $where['mer_state'])
  85. $query->where('merchant.mer_state', $where['mer_state']);
  86. if (isset($where['category_id']) && $where['category_id'])
  87. $query->where('merchant.category_id', $where['category_id']);
  88. if (isset($where['city_id']) && $where['city_id'])
  89. $query->where('merchant.city_id', $where['city_id']);
  90. $order = $where['order'] ?? '';
  91. $query->when($order, function ($query) use ($order) {
  92. if (in_array($order, ['rate', 'sales']) && $order == 'rate')
  93. $query->order('merchant.is_best DESC, merchant.product_score DESC,merchant.service_score DESC,merchant.postage_score DESC,merchant.sort DESC');
  94. else
  95. $query->order('merchant.is_best DESC, merchant.sales DESC,merchant.sort DESC');
  96. }, function ($query) use ($order) {
  97. $query->order('merchant.is_best DESC, merchant.sort DESC,merchant.sales DESC');
  98. })->when(isset($where['account']) && $where['account'] !== '', function ($query) use ($where) {
  99. $uid = User::where('account|nickname|phone', 'like', "%{$where['account']}%")
  100. ->column('uid');
  101. $query->where('merchant.uid', 'in', $uid);
  102. });
  103. $query->where('merchantIntention.status', 1);
  104. return $query;
  105. }
  106. /**
  107. * @param array $where
  108. * @return BaseQuery
  109. * @author cabbage
  110. * @day 2020-10-31
  111. */
  112. public function search_mer(array $where, $is_del = 0)
  113. {
  114. $query = Merchant::getDB()->when($is_del !== null, function ($query) use ($is_del) {
  115. $query->where('is_del', $is_del);
  116. })->when(isset($where['date']) && $where['date'] !== '', function ($query) use ($where) {
  117. getModelTime($query, $where['date']);
  118. });
  119. if (isset($where['keyword']) && $where['keyword'])
  120. $query->whereLike('mer_name|mer_keyword|mer_phone', "%{$where['keyword']}%");
  121. if (isset($where['status']) && $where['status'])
  122. $query->where('status', $where['status']);
  123. if (isset($where['mer_state']) && $where['mer_state'])
  124. $query->where('mer_state', $where['mer_state']);
  125. if (isset($where['category_id']) && $where['category_id'])
  126. $query->where('category_id', $where['category_id']);
  127. if (isset($where['sxy_submerchant_id'])){
  128. $query->whereNotNull('sxy_submerchant_id');
  129. }
  130. return $query;
  131. }
  132. /**
  133. * @param int $id
  134. * @return array|Model|null
  135. * @throws DataNotFoundException
  136. * @throws DbException
  137. * @throws ModelNotFoundException
  138. * @author xaboy
  139. * @day 2020-04-17
  140. */
  141. public function get( $id)
  142. {
  143. return Merchant::getInstance()->where('is_del', 0)->find($id);
  144. }
  145. /**
  146. * @param $id
  147. * @author Qinii
  148. */
  149. public function apiGetOne($id)
  150. {
  151. return Merchant::getInstance()->where(['is_del'=>0,'status' => 1,'mer_state' => 1])->find($id);
  152. }
  153. /**
  154. * @param $id
  155. * @author Qinii
  156. */
  157. public function addrenqi($id)
  158. {
  159. return Merchant::getInstance()->where('mer_id',$id)->inc('renqizhi',1)->update();
  160. }
  161. /**
  162. * @param int $merId
  163. * @author Qinii
  164. */
  165. public function incCareCount(int $merId)
  166. {
  167. ($this->getModel()::getDB())->where($this->getPk(),$merId)->inc('care_count',1)->update();
  168. }
  169. /**
  170. * @param int $merId
  171. * @author Qinii
  172. */
  173. public function decCareCount(int $merId)
  174. {
  175. ($this->getModel()::getDB())->where($this->getPk(),$merId)->where('care_count','>',0)->dec('care_count',1)->update();
  176. }
  177. public function dateMerchantNum($date)
  178. {
  179. return Merchant::getDB()->where('is_del', 0)->when($date, function ($query, $date) {
  180. getModelTime($query, $date);
  181. })->count();
  182. }
  183. /**
  184. * TODO 获取复制商品次数
  185. * @param int $merId
  186. * @return mixed
  187. * @author Qinii
  188. * @day 2020-08-06
  189. */
  190. public function getCopyNum(int $merId)
  191. {
  192. return Merchant::getDB()->where('mer_id',$merId)->value('copy_product_num');
  193. }
  194. /**
  195. * TODO 变更复制次数
  196. * @param int $merId
  197. * @param int $num 正负数
  198. * @return mixed
  199. * @author Qinii
  200. * @day 2020-08-06
  201. */
  202. public function changeCopyNum(int $merId,int $num)
  203. {
  204. return $this->getModel()::where('mer_id',$merId)->inc('copy_product_num',$num)->update();
  205. }
  206. public function getConsumptionScoreMer(){
  207. return $this->getModel()::where('consumption_score',1)->field('mer_id,uid') -> select();
  208. }
  209. }