FullSendActivity.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types = 1);
  12. namespace app\store\controller;
  13. use app\common\library\helper;
  14. use app\common\model\fullsend\FullSendGoods as FullSendGoodsModel;
  15. use app\store\model\fullsend\FullSendActivity as FullSendActivityModel;
  16. use app\store\model\fullsend\FullSendActivityAction;
  17. use think\facade\Log;
  18. /**
  19. * 满就送管理
  20. * Class Files
  21. * @package app\store\controller
  22. */
  23. class FullSendActivity extends Controller
  24. {
  25. /**
  26. *
  27. * @return array
  28. * @author: zjwhust
  29. * @Time: 2022/1/21 16:49
  30. */
  31. public function list(){
  32. $model = new FullSendActivityModel;
  33. $list = $model->getList($this->request->param());
  34. return $this->renderSuccess(compact('list'));
  35. }
  36. /**
  37. * 添加卡
  38. * @return array|string
  39. */
  40. public function add()
  41. {
  42. // 新增记录
  43. $model = new FullSendActivityModel;
  44. $param = $this->postForm();
  45. $param['audit_user'] = $this->store['user']['real_name']?:'';
  46. $param['audit_admin_id'] = $this->store['user']['store_user_id']?:'';
  47. $param['admin_id'] = $this->store['user']['store_user_id']?:'';
  48. $activity_time = between_time_format($param['between_time']); // 生成活动编号
  49. $param['start_time'] = date("Y-m-d H:i:s",$activity_time['start_time']);
  50. $param['end_time'] = date("Y-m-d H:i:s",$activity_time['end_time']);
  51. if (isset($param['role']) && $param['role'] == 1){
  52. $param['status'] = 1;
  53. $param['audit_time'] = Date("Y-m-d H:i:s",time());
  54. $param['audit_status'] = 1;
  55. }else{
  56. $param['audit_status'] = 0;
  57. }
  58. $arr = array_column($param['goods_ids'],'limit_stock','goods_id');
  59. $goods_id = helper::getArrayColumn($param['goods_ids'],'goods_id');
  60. $goods = \app\store\model\Goods::whereIn('goods_id',$goods_id)->select();
  61. foreach ($goods as $good){
  62. if(isset($arr[$good['goods_id']]) && $arr[$good['goods_id']]<=0){
  63. return $this->renderError('商品 '.$good['goods_name'].' 库存不能设置为0');
  64. }
  65. if(isset($arr[$good['goods_id']]) && $good['stock_total']<$arr[$good['goods_id']]){
  66. return $this->renderError('商品 '.$good['goods_name'].' 库存不足');
  67. }
  68. }
  69. $flag = $model->addOne($param);
  70. if ($flag == 1) {
  71. return $this->renderSuccess('添加成功');
  72. }elseif ($flag == 3){
  73. return $this->renderError('活动时间内存在其他进行中的满就送活动');
  74. }
  75. return $this->renderError($model->getError() ?: '添加失败');
  76. }
  77. /**
  78. * 添加卡
  79. * @return array|string
  80. */
  81. public function update()
  82. {
  83. // 新增记录
  84. $param = $this->postForm();
  85. $model = FullSendActivityModel::detail($param['id']);
  86. $param['audit_user'] = $this->store['user']['real_name']?:'';
  87. $param['audit_admin_id'] = $this->store['user']['store_user_id']?:'';
  88. $activity_time = between_time_format($param['between_time']);
  89. $param['start_time'] = date("Y-m-d H:i:s",$activity_time['start_time']);
  90. $param['end_time'] = date("Y-m-d H:i:s",$activity_time['end_time']);
  91. if (isset($param['role']) && $param['role'] == 1){
  92. $param['status'] = 1;
  93. $param['audit_time'] = Date("Y-m-d H:i:s",time());
  94. $param['audit_status'] = 1;
  95. }else{
  96. $param['audit_status'] = 0;
  97. }
  98. $arr = array_column($param['goods_ids'],'limit_stock','goods_id');
  99. $goods_id = helper::getArrayColumn($param['goods_ids'],'goods_id');
  100. $goods = \app\store\model\Goods::whereIn('goods_id',$goods_id)->select();
  101. foreach ($goods as $good){
  102. if(isset($arr[$good['goods_id']]) && $arr[$good['goods_id']]<=0){
  103. return $this->renderError('商品 '.$good['goods_name'].' 库存不能设置为0');
  104. }
  105. $fullSendGoods = FullSendGoodsModel::where(['full_send_activity_id'=>$param['id'],'goods_id'=>$good['goods_id']])->find();
  106. if(isset($arr[$good['goods_id']]) && $good['stock_total']<($arr[$good['goods_id']]-$fullSendGoods['purchase_stock'])){
  107. return $this->renderError('商品 '.$good['goods_name'].' 库存不足');
  108. }
  109. }
  110. $flag = $model->updOne($param);
  111. if ($flag == 1) {
  112. return $this->renderSuccess('修改成功');
  113. }elseif ($flag == 3){
  114. return $this->renderError('活动时间内存在其他进行中的满就送活动');
  115. }
  116. return $this->renderError($model->getError() ?: '修改失败');
  117. }
  118. //满赠活动详情
  119. public function detail(int $act_id){
  120. $detail = FullSendActivityModel::detail($act_id,['goodsExcept','giftGoods']);
  121. $goods_ids = helper::getArrayColumn($detail['goodsExcept'],'goods_id');
  122. $arr = \app\store\model\Goods::whereIn('goods_id',$goods_ids)->column('stock_total','goods_id');
  123. foreach ($detail['goodsExcept'] as $item){
  124. if(isset($arr[$item['goods_id']])){
  125. $item['stock_total'] = $arr[$item['goods_id']];
  126. }
  127. }
  128. return $this->renderSuccess(compact('detail'));
  129. }
  130. /**
  131. * 满赠活动详情启用/禁用
  132. * @param int $act_id
  133. * @return array|bool
  134. */
  135. public function status(){
  136. $postData = $this->postForm();
  137. $model = FullSendActivityModel::detail($postData['activity_id']);
  138. $res ='操作成功';
  139. $status =$postData['status'];
  140. if($status==1){
  141. $res = '已启用';
  142. }
  143. if($status==0){
  144. $res = '已禁用';
  145. }
  146. $flag = $model->status($postData);
  147. if ($flag) {
  148. return $this->renderSuccess($postData,$res);
  149. }
  150. if ($flag === false && $status==1){
  151. return $this->renderError( '与其他活动时间范围重叠,请检查活动时间');
  152. }
  153. return $this->renderError($model->getError() ?: '操作失败');
  154. }
  155. /**
  156. * 审核
  157. * @param
  158. * @return array|bool
  159. */
  160. public function audit()
  161. {
  162. // 确认审核
  163. $postData = $this->postForm();
  164. $model = FullSendActivityModel::detail($postData['activity_id']);
  165. if(empty($model)){
  166. return $this->renderError('找不到满赠活动');
  167. }
  168. $res ='操作成功';
  169. $audit_status =$postData['audit_status'];
  170. if($audit_status == 1){
  171. $res = '已审核通过';
  172. $postData['status'] = 1;//启用
  173. }
  174. if($audit_status == 2){
  175. $res = '已审核不通过';
  176. $postData['status'] = 0;//禁用
  177. }
  178. $postData['audit_time'] = Date("Y-m-d H:i:s",time());
  179. $postData['audit_user'] = $this->store['user']['real_name']?:'';
  180. $postData['audit_admin_id'] = $this->store['user']['store_user_id']?:'';
  181. $flag = $model->audit($postData);
  182. if ($flag) {
  183. return $this->renderSuccess($postData,$res);
  184. }
  185. if($audit_status == 1){
  186. return $this->renderError( '已有活动处于进行中,请重新修改活动时间');
  187. }
  188. return $this->renderError($model->getError() ?: '操作失败');
  189. }
  190. /**
  191. * 行动日志
  192. * @param int $act_id
  193. * @return array
  194. */
  195. public function actionsList(int $act_id){
  196. $model = new FullSendActivityAction();
  197. $list = $model->getLists($act_id);
  198. return $this->renderSuccess(compact('list'));
  199. }
  200. }