MerchantDao.php 8.6 KB

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