Mall.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. <?php
  2. namespace app\mainapp\controller;
  3. use think\facade\Session;
  4. use app\mainapp\BaseController;
  5. use app\common\model\MallCate as MallCateModel;
  6. use app\common\model\MallGoods as MallGoodsModel;
  7. use app\common\model\MallOrder as MallOrderModel;
  8. use app\common\model\User as UserModel;
  9. use app\common\model\UserAuths as UserAuthsModel;
  10. use app\common\model\UserIntegral as UserIntegralModel;
  11. use echowx\WxPay;
  12. class Mall extends BaseController
  13. {
  14. // 取消订单
  15. public function closeOrder()
  16. {
  17. $userid = input('userid/d', 0);
  18. $user = UserModel::findOrEmpty($userid);
  19. if ($user->isEmpty()) {
  20. page_result(1, "用户信息不存在。");
  21. }
  22. $orderid = input('orderid/d', 0);
  23. $order = MallOrderModel::where(['userid'=>$userid])->findOrEmpty($orderid);
  24. if ($order->isEmpty()){
  25. page_result(1, "订单信息不存在");
  26. }
  27. if ($order->status==1){
  28. page_result(1, "订单信息已取消,请不要重复操作。");
  29. }elseif ($order->status!=2){
  30. page_result(1, "订单信息已支付,不能再做取消操作。");
  31. }
  32. $goods = MallGoodsModel::findOrEmpty($order->goodsid);
  33. if ($order->integral > 0){
  34. $uintegral = new UserIntegralModel;
  35. $uintegral->save([
  36. 'userid' => $userid,
  37. 'title' => "订单取消返积分<".$order->title.">",
  38. 'intvalue' => $order->integral,
  39. 'intmoney' => 0.00,
  40. 'onlycontent' => "",
  41. 'remark' => "订单编号".$order->ordersn,
  42. 'itype' => 7,
  43. 'status' => 2,
  44. 'createtime' => time(),
  45. 'yeartime' => date("Y"),
  46. 'monthtime' => date("Ym")
  47. ]);
  48. $user->save(['integral' => $user->integral + $order->integral]);
  49. }
  50. $goods->dec('sales', $order->buynumber)->inc('stock', $order->buynumber)->update();
  51. $order->save(['status' => 1]);
  52. page_result(0, "", array());
  53. }
  54. // 删除订单
  55. public function deleteOrder()
  56. {
  57. $userid = input('userid/d', 0);
  58. $user = UserModel::findOrEmpty($userid);
  59. if ($user->isEmpty()) {
  60. page_result(1, "用户信息不存在。");
  61. }
  62. $orderid = input('orderid/d', 0);
  63. $order = MallOrderModel::where(['userid'=>$userid])->findOrEmpty($orderid);
  64. if ($order->isEmpty()){
  65. page_result(1, "订单信息不存在");
  66. }
  67. if ($order->status!=1){
  68. page_result(1, "订单信息不在已取消状态,不能做删除操作。");
  69. }
  70. $order->delete();
  71. page_result(0, "", array());
  72. }
  73. // 修改订单地址
  74. public function setOrderAddress()
  75. {
  76. $userid = input('userid/d', 0);
  77. $user = UserModel::findOrEmpty($userid);
  78. if ($user->isEmpty()) {
  79. page_result(1, "用户信息不存在。");
  80. }
  81. $orderid = input('orderid/d', 0);
  82. $order = MallOrderModel::with('mallGoods')->where(['userid'=>$userid])->findOrEmpty($orderid);
  83. if ($order->isEmpty()){
  84. page_result(1, "订单信息不存在");
  85. }
  86. if ($order->status!=2){
  87. page_result(1, "订单已取消或已支付,不能再修改收件信息。");
  88. }
  89. $order->save([
  90. 'username' => input('username/s', ""),
  91. 'usermobile' => input('usermobile/s', ""),
  92. 'province' => input('province/s', ""),
  93. 'city' => input('city/s', ""),
  94. 'county' => input('county/s', ""),
  95. 'detailinfo' => input('detailinfo/s', "")
  96. ]);
  97. page_result(0, "", array(
  98. 'order' => $order
  99. ));
  100. }
  101. // 订单详情
  102. public function listOrder()
  103. {
  104. $ppage = input('ppage/d', 1);
  105. $psize = input('psize/d', 20);
  106. $map = array();
  107. $userid = input('userid/d', 0);
  108. $map[] = ['userid','=',$userid];
  109. $status = input('status/d', 0);
  110. if ($status!=0){
  111. $map[] = ['status', '=', $status];
  112. }
  113. $plist = MallOrderModel::with(['mallGoods'])->where($map)->order(['id'=>'desc'])->page($ppage)->limit($psize)->select();
  114. page_result(0, "", array(
  115. 'plist' => $plist,
  116. 'pstatus' => $psize > count($plist) ? 'noMore' : 'more'
  117. ));
  118. }
  119. // 订单支付
  120. public function payOrder()
  121. {
  122. $userid = input('userid/d', 0);
  123. $user = UserModel::findOrEmpty($userid);
  124. if ($user->isEmpty()) {
  125. page_result(1, "用户信息不存在。");
  126. }
  127. $userauths = UserAuthsModel::where(['userid'=>$user->id,'identitytype'=>"weixin"])->findOrEmpty();
  128. if ($userauths->isEmpty()){
  129. page_result(1, "请先授权微信号登录。");
  130. }
  131. $orderid = input('orderid/d', 0);
  132. $order = MallOrderModel::with('mallGoods')->where(['userid'=>$userid])->findOrEmpty($orderid);
  133. if ($order->isEmpty()){
  134. page_result(1, "订单信息不存在。");
  135. }
  136. if ($order->username==""){
  137. page_result(1, "请选择收件信息。");
  138. }
  139. $remark = input('remark/s', "");
  140. if ($order->paymoney <= 0.00){
  141. $order->save([
  142. 'status' => 3,
  143. 'remark' => $remark
  144. ]);
  145. page_result(0, "", array('ostatus'=>3));
  146. }else{
  147. $order->save([
  148. 'remark' => $remark
  149. ]);
  150. $payData = [
  151. 'body' => $order->title,
  152. 'out_trade_no' => $order->ordersn,
  153. 'total_fee' => intval($order->paymoney * 100),
  154. 'openid' => $userauths->identifier
  155. ];
  156. $wxpay = new WxPay();
  157. $info = $wxpay->wxpay_unified_order($payData);
  158. if ($info['status']==1){
  159. $payinfo = $wxpay->get_jsapi_param($info['data']['prepay_id']);
  160. page_result(0, "", array('ostatus'=>2, 'payinfo'=>$payinfo));
  161. }else{
  162. page_result(1, $info['data']);
  163. }
  164. }
  165. }
  166. // 订单详情
  167. public function getOrder()
  168. {
  169. $orderid = input('orderid/d', 0);
  170. $userid = input('userid/d', 0);
  171. $order = MallOrderModel::with('mallGoods')->where(['userid'=>$userid])->findOrEmpty($orderid);
  172. if ($order->isEmpty()){
  173. page_result(1, "订单信息不存在");
  174. }
  175. page_result(0, "", array(
  176. 'order' => $order
  177. ));
  178. }
  179. // 提交订单
  180. public function setOrder()
  181. {
  182. $goodsid = input('goodsid/d', 0);
  183. $userid = input('userid/d', 0);
  184. $buynumber = input('buynumber/d', 0);
  185. $goods = MallGoodsModel::findOrEmpty($goodsid);
  186. if ($goods->isEmpty()){
  187. page_result(1, "商品信息不存在。");
  188. }
  189. if ($buynumber<=0){
  190. page_result(1, "兑购数量不能小于1。");
  191. }
  192. $user = UserModel::findOrEmpty($userid);
  193. $payintegral = $buynumber * $goods->integral;
  194. if ($user->integral < $payintegral){
  195. page_result(1, "积分不足,不能兑购该商品。");
  196. }
  197. if ($payintegral>0){
  198. $uintegral = new UserIntegralModel;
  199. $uintegral->save([
  200. 'userid' => $userid,
  201. 'title' => "兑购<".$goods->title.">商品",
  202. 'intvalue' => 0 - $payintegral,
  203. 'intmoney' => 0.00,
  204. 'onlycontent' => "",
  205. 'remark' => "兑购".$buynumber."件,单件需".$goods->integral."积分",
  206. 'itype' => 7,
  207. 'status' => 2,
  208. 'createtime' => time(),
  209. 'yeartime' => date("Y"),
  210. 'monthtime' => date("Ym")
  211. ]);
  212. $user->save(['integral' => $user->integral - $payintegral]);
  213. }
  214. $order = new MallOrderModel;
  215. $order->save([
  216. 'userid' => $userid,
  217. 'ordersn' => "M".date("YmdHis").mt_rand(100000, 999999),
  218. 'goodsid' => $goodsid,
  219. 'title' => $goods->title,
  220. 'tilpic' => $goods->tilpic,
  221. 'gintegral' => $goods->integral,
  222. 'gpaymoney' => $goods->paymoney,
  223. 'buynumber' => $buynumber,
  224. 'integral' => $payintegral,
  225. 'paymoney' => $buynumber * $goods->paymoney,
  226. 'payinfo' => array(),
  227. 'status' => 2,
  228. 'username' => "",
  229. 'usermobile' => "",
  230. 'province' => "",
  231. 'city' => "",
  232. 'county' => "",
  233. 'detailinfo' => "",
  234. 'remark' => "",
  235. 'createtime' => time()
  236. ]);
  237. $goods->inc('sales', $buynumber)->dec('stock', $buynumber)->update();
  238. page_result(0, "", array(
  239. 'orderid' => $order->id
  240. ));
  241. }
  242. // 详情
  243. public function getGoods()
  244. {
  245. $goodsid = input('goodsid/d', 0);
  246. $goods = MallGoodsModel::with('mallCate')->findOrEmpty($goodsid);
  247. if ($goods->isEmpty()){
  248. page_result(1, "商品信息不存在");
  249. }
  250. page_result(0, "", array(
  251. 'goods' => $goods
  252. ));
  253. }
  254. // 列表
  255. public function listGoods()
  256. {
  257. $ppage = input('ppage/d', 1);
  258. $psize = input('psize/d', 20);
  259. $map[] = ['status','=',2];
  260. $map[] = ['createtime','<=',time()];
  261. $cateid = input('cateid/d', 0);
  262. if ($cateid!=0) {
  263. $map[] = ['cateid', '=', $cateid];
  264. }
  265. $userid = input('userid/d', 0);
  266. $user = UserModel::findOrEmpty($userid);
  267. if (!$user->isEmpty()) {
  268. $map[] = ['integral', '<=', $user->integral];
  269. }
  270. $plist = MallGoodsModel::with('mallCate')->where($map)->order(['priority'=>'desc','id'=>'desc'])->page($ppage)->limit($psize)->select();
  271. page_result(0, "", array(
  272. 'plist' => $plist,
  273. 'pstatus' => $psize > count($plist) ? 'noMore' : 'more'
  274. ));
  275. }
  276. // 全部分类
  277. public function allCate()
  278. {
  279. $allcate = MallCateModel::where('status', 1)->order(['priority'=>'desc','id'=>'desc'])->select()->toArray();
  280. page_result(0, "", array(
  281. 'allcate' => $allcate
  282. ));
  283. }
  284. }