Usermanage.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. <?php
  2. namespace app\api\controller;
  3. use app\api\model\MarketGoods;
  4. use think\Db;
  5. /**
  6. * @title 会员管理
  7. * @controller Usermanage
  8. * @group base
  9. */
  10. class Usermanage extends Base
  11. {
  12. public function initialize()
  13. {
  14. parent::check_login();
  15. }
  16. /**
  17. * @title 获取我的运费券
  18. * @desc 获取我的运费券
  19. * @author qc
  20. * @url /api/Usermanage/getMyCouponByStatus
  21. * @method GET
  22. * @header name:Authorization require:1 desc:Token
  23. * @param name:sel_status type:int : default:0 desc:0全部,1正常,2已使用,3过期
  24. * @param name:page type:int : default:1 desc:页数
  25. * @param name:page_num type:int : default:20 desc:每页数
  26. * @return name:create_at type:float default:-- desc:领取(发放时间)
  27. * @return name:status type:int default:-- desc:1正常,2已使用,3过期
  28. * @return name:past_at type:string default:-- desc:到期时间
  29. * @return name:used_time type:string default:-- desc:使用时间
  30. */
  31. public function getMyCouponByStatus()
  32. {
  33. user_coupon_over($this->uid);
  34. $sel_status = input('sel_status');
  35. $where['user_id'] = $this->uid;
  36. if(in_array($sel_status,[1,2,3])) $where['status'] = $sel_status;
  37. $list = Db::table('user_coupon_list')
  38. ->where($where)
  39. ->order('id desc')
  40. ->limit($this->off_set,$this->page_num)
  41. ->select();
  42. $this->success('获取成功',['list'=>$list]);
  43. }
  44. /**
  45. * @title 设置收货地址(新增或修改)
  46. * @desc 设置收货地址(新增或修改)
  47. * @author qc
  48. * @url /api/Usermanage/setDeliveryAddress
  49. * @method POST
  50. * @header name:Authorization require:1 desc:Token
  51. * @param name:id type:int : default:0 desc:收货地址记录id(不传值是添加)
  52. * @param name:pro_name type:int require:1 default:-- desc:省名
  53. * @param name:city_name type:int require:1 default:-- desc:市名
  54. * @param name:county_name type:int require:1 default:-- desc:县区名
  55. * @param name:detail type:string require:1 default:-- desc:详细地址
  56. * @param name:phone type:string require:1 default:-- desc:联系电话
  57. * @param name:name type:string require:1 default:-- desc:联系人
  58. * @param name:is_mr type:int require:0 default:0 desc:是否是默认(0不默认,1默认)
  59. */
  60. public function setDeliveryAddress()
  61. {
  62. $pro_name = input('post.pro_name');// 省
  63. $city_name = input('post.city_name');// 市
  64. $county_name = input('post.county_name');// 县区
  65. $pro_id = Db::table('store_area')->where('name',$pro_name)->value('id');
  66. $city_id = Db::table('store_area')->where('name',$city_name)->value('id');
  67. $county_id = Db::table('store_area')->where('name',$county_name)->value('id');
  68. $detail = input('post.detail');// 详细地址
  69. $phone = input('post.phone');
  70. $name = input('post.name');
  71. $id = input('post.id');
  72. $is_mr = input('post.is_mr',0);
  73. $set_data = compact(['pro_id','city_id','county_id','detail','phone','name','is_mr']);
  74. $set_data['user_id'] = $this->uid;
  75. $set_data['pro_name'] = $pro_name;
  76. $set_data['city_name'] = $city_name;
  77. $set_data['county_name']= $county_name;
  78. $set_data['mer_name']=$pro_name . $city_name. $county_name;
  79. if($id) {
  80. Db::table('delivery_address')->where(['id'=>$id])->update($set_data);
  81. }else{
  82. Db::table('delivery_address')->insert($set_data);
  83. $id = Db::getLastInsID();
  84. }
  85. if($is_mr) Db::table('delivery_address')->where('user_id','=',$this->uid)->where('id','<>',$id)->where('is_mr','=',1)->update(['is_mr'=>0]);
  86. $this->success('编辑成功');
  87. }
  88. /**
  89. * @title 修改默认收货地址
  90. * @desc 修改默认收货地址
  91. * @author qc
  92. * @url /api/Usermanage/changeApproveDelivery
  93. * @method POST
  94. * @header name:Authorization require:1 desc:Token
  95. * @param name:id type:int : default:0 desc:收货地址记录id
  96. * @param name:is_mr type:int default:1 desc:是否是默认(0不默认,1默认)
  97. */
  98. public function changeApproveDelivery()
  99. {
  100. $id = input('post.id');
  101. $is_mr = input('post.is_mr',1);
  102. if($is_mr) {
  103. Db::table('delivery_address')
  104. ->where('user_id','=',$this->uid)
  105. ->where('is_mr','=',1)
  106. ->update(['is_mr'=>0]);
  107. Db::table('delivery_address')
  108. ->where('user_id','=',$this->uid)
  109. ->where('id','=',$id)
  110. ->update(['is_mr'=>1]);
  111. }else{
  112. Db::table('delivery_address')
  113. ->where('user_id','=',$this->uid)
  114. ->where('id','=',$id)
  115. ->update(['is_mr'=>0]);
  116. }
  117. $this->success('修改成功');
  118. }
  119. /**
  120. * @title 删除收货地址
  121. * @desc 删除收货地址
  122. * @author qc
  123. * @url /api/Usermanage/delDeliveryAddress
  124. * @method POST
  125. * @header name:Authorization require:1 desc:Token
  126. * @param name:id type:int require:1 default:1 desc:收货地址记录id
  127. */
  128. public function delDeliveryAddress()
  129. {
  130. $id = input('post.id');
  131. if(!$id)$this->error('请选择要删除的收货地址');
  132. Db::table('delivery_address')->where(['user_id'=>$this->uid,'id'=>$id])->update(['is_deleted'=>1,'is_mr'=>0]);
  133. $this->success('删除成功!');
  134. }
  135. /**
  136. * @title 获取收货地址列表
  137. * @desc 获取收货地址列表
  138. * @author qc
  139. * @url /api/Usermanage/getDeliveryAddressList
  140. * @method GET
  141. * @header name:Authorization require:1 desc:Token
  142. * @param name:page type:int default:1 desc:页数
  143. * @param name:page_num type:int default:20 desc:每页数
  144. * @return name:pro_id type:int default:-- desc:省id
  145. * @return name:city_id type:int default:-- desc:市id
  146. * @return name:county_id type:int default:-- desc:县区id
  147. * @return name:pro_name type:string default:-- desc:省名
  148. * @return name:city_name type:string default:-- desc:市名
  149. * @return name:county_name type:string default:-- desc:县区名
  150. * @return name:detail type:string default:-- desc:详细地址
  151. * @return name:phone type:string default:-- desc:联系电话
  152. * @return name:name type:string default:-- desc:联系人
  153. * @return name:is_mr type:int default:0 desc:是否是默认(0不默认,1默认)
  154. */
  155. public function getDeliveryAddressList()
  156. {
  157. $list = Db::table('delivery_address')
  158. ->where(['user_id'=>$this->uid,'is_deleted'=>0])
  159. ->order('is_mr desc ,id desc')
  160. ->limit($this->off_set,$this->page_num)
  161. ->select();
  162. $this->success('ok',['list'=>$list]);
  163. }
  164. /**
  165. * @title 获取收货地址详情
  166. * @desc 获取收货地址详情
  167. * @author qc
  168. * @url /api/Usermanage/getDeliveryAddressDetail
  169. * @method GET
  170. * @header name:Authorization require:1 desc:Token
  171. * @param name:id type:int default:1 desc:收货地址记录id
  172. * @return name:pro_id type:int default:-- desc:省id
  173. * @return name:city_id type:int default:-- desc:市id
  174. * @return name:county_id type:int default:-- desc:县区id
  175. * @return name:pro_name type:string default:-- desc:省名
  176. * @return name:city_name type:string default:-- desc:市名
  177. * @return name:county_name type:string default:-- desc:县区名
  178. * @return name:detail type:string default:-- desc:详细地址
  179. * @return name:phone type:string default:-- desc:联系电话
  180. * @return name:name type:string default:-- desc:联系人
  181. * @return name:is_mr type:int default:0 desc:是否是默认(0不默认,1默认)
  182. */
  183. public function getDeliveryAddressDetail()
  184. {
  185. $detail = Db::table('delivery_address')->find(input('id'));
  186. $this->success('ok',$detail);
  187. }
  188. /**
  189. * @title 获取明信片变更日志
  190. * @desc 获取明信片变更日志
  191. * @author qc
  192. * @url /api/Usermanage/getCrystalLog
  193. * @method GET
  194. * @header name:Authorization require:1 desc:Token
  195. * @param name:page type:int default:1 desc:页数
  196. * @param name:page_num type:int default:20 desc:每页数
  197. * @return name:create_at type:string default:-- desc:时间
  198. * @return name:crystal type:int default:-- desc:变更数
  199. * @return name:desc type:string default:-- desc:描述
  200. */
  201. public function getCrystalLog()
  202. {
  203. $list = Db::table('crystal_info')
  204. ->field('id,create_at,crystal,desc')
  205. ->where(['user_id'=>$this->uid,'is_deleted'=>0])
  206. ->order('id desc')
  207. ->limit($this->off_set,$this->page_num)
  208. ->select();
  209. $this->success('ok',['list'=>$list]);
  210. }
  211. /**
  212. * @title 获取推荐人信息
  213. * @desc 获取推荐人信息
  214. * @author qc
  215. * @url /api/Usermanage/getParentInfo
  216. * @method GET
  217. * @header name:Authorization require:1 desc:Token
  218. * @return name:name type:string default:-- desc:昵称
  219. * @return name:headimg type:string default:-- desc:头像
  220. * @return name:create_at type:string default:-- desc:注册时间
  221. */
  222. public function getParentInfo()
  223. {
  224. $pid = Db::table('store_member')->where('id',$this->uid)->value('pid');
  225. $parent_info = [];
  226. if($pid){
  227. $parent_info= Db::table('store_member')
  228. ->field('id,name,headimg,create_at')
  229. ->find($pid);
  230. }
  231. $this->success('ok',$parent_info);
  232. }
  233. /**
  234. * @title 获取我邀请的会员列表
  235. * @desc 获取我邀请的会员列表
  236. * @author qc
  237. * @url /api/Usermanage/getMyInviteList
  238. * @method GET
  239. * @header name:Authorization require:1 desc:Token
  240. * @param name:page type:int default:1 desc:页数
  241. * @param name:page_num type:int default:20 desc:每页数
  242. * @return name:name type:string default:-- desc:昵称
  243. * @return name:headimg type:string default:-- desc:头像
  244. * @return name:create_at type:string default:-- desc:注册时间
  245. */
  246. public function getMyInviteList()
  247. {
  248. $list = Db::table('store_member')
  249. ->field('id,name,headimg,create_at')
  250. ->where(['pid'=>$this->uid])
  251. ->order('id desc')
  252. ->limit($this->page,$this->page_num)
  253. ->select();
  254. $this->success('ok',$list);
  255. }
  256. /**
  257. * @title 获取推荐线统计数据
  258. * @desc 获取推荐线统计数据
  259. * @author qc
  260. * @url /api/Usermanage/getRecommendNum
  261. * @method GET
  262. * @header name:Authorization require:1 desc:Token
  263. * @return name:first_num type:int default:-- desc:一级下级数量
  264. * @return name:second_num type:int default:-- desc:二级下级数量
  265. * @return name:recommend_crystal type:int default:-- desc:收益
  266. */
  267. public function getRecommendNum()
  268. {
  269. $first_children = Db::table('store_member')
  270. ->field('id,pid')
  271. ->where('pid',$this->uid)
  272. ->select();
  273. $second_children = Db::table('store_member')
  274. ->field('id,pid')
  275. ->where('pid','in',array_column($first_children,'id'))
  276. ->where('pid','>',0)
  277. ->select();
  278. $recommend_crystal =Db::table('crystal_info')
  279. ->where('user_id','=',$this->uid)
  280. ->where('type','in',[1,12,13])
  281. ->sum('crystal');
  282. $recommend_crystal = $recommend_crystal?$recommend_crystal:0;
  283. $this->success('ok',['first_num'=>count($first_children),'second_num'=>count($second_children),'recommend_crystal'=>$recommend_crystal]);
  284. }
  285. /**
  286. * @title 用户反馈
  287. * @desc 用户反馈
  288. * @author qc
  289. * @url /api/Usermanage/leaveFeedback
  290. * @method POST
  291. * @header name:Authorization require:1 desc:Token
  292. * @param name:content type:string require:1 default:-- desc:反馈内容
  293. * @param name:images type:string require:0 default:-- desc:反馈图片(逗号隔开,没有不传)
  294. */
  295. public function leaveFeedback()
  296. {
  297. $insert_data = [
  298. 'user_id'=>$this->uid,
  299. 'content'=>input('content'),
  300. 'images'=>input('images'),
  301. 'create_at'=>date('Y-m-d H:i:s')
  302. ];
  303. Db::table('user_feedback')->insert($insert_data);
  304. $this->success('反馈成功',Db::getLastInsID());
  305. }
  306. /**
  307. * @title 获取集市商品
  308. * @desc 获取集市商品
  309. * @author qc
  310. * @url /api/Usermanage/getMyMarketGoods
  311. * @method GET
  312. * @header name:Authorization require:1 desc:Token
  313. * @param name:page type:int default:1 desc:页数
  314. * @param name:page_num type:int : default:20 desc:每页数
  315. * @return name:id type:int default:-- desc:商品id
  316. * @return name:sell_price type:string default:-- desc:售价
  317. * @return name:cover type:string default:-- desc:商品图
  318. * @return name:status type:int default:-- desc:0已下架1正常售卖
  319. * @return name:user_id type:int default:-- desc:售卖商品会员id
  320. * @return name:stock type:int default:-- desc:数量
  321. * @return name:sell_price type:int default:-- desc:售价(所有数量的售价)
  322. * @return name:crystal type:float default:-- desc:每个价值
  323. * @return name:sell_status type:int default:-- desc:售卖状态1在售2售完3真正支付中
  324. * @return name:order_status type:int default:-- desc:0售卖中1已售卖/待发货2待收货3已完成
  325. * @return name:pro_info type:array default:-- desc:详情
  326. * @return name:pro_info.num type:int default:-- desc:数量
  327. * @return name:pro_info.case_name type:int default:-- desc:名称
  328. * @return name:pro_info.case_cover type:int default:-- desc:图片
  329. * @return name:pro_info.crystal type:int default:-- desc:明信片
  330. */
  331. public function getMyMarketGoods()
  332. {
  333. $list = MarketGoods::where('user_id',$this->uid)
  334. ->order('id desc')
  335. ->limit($this->off_set,$this->page_num)
  336. ->select();
  337. $this->success('ok',['list'=>$list]);
  338. }
  339. }