MjSendActivity.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  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\store\model\mj\MjSendActivity as MjSendActivityModel;
  15. use app\store\model\mj\MjSendActivityAction;
  16. use app\store\model\mj\MjSendGoods as MjSendGoodsModel;
  17. use think\facade\Log;
  18. /**
  19. * 满件送赠品管理
  20. * Class Files
  21. * @package app\store\controller
  22. */
  23. class MjSendActivity 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 MjSendActivityModel;
  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 MjSendActivityModel;
  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 (count($param['goods_ids']??[]) != 1){
  52. return $this->renderSuccess('活动商品有且仅有一款');
  53. }
  54. if (isset($param['role']) && $param['role'] == 1){
  55. $param['status'] = 1;
  56. $param['audit_time'] = Date("Y-m-d H:i:s",time());
  57. $param['audit_status'] = 1;
  58. }else{
  59. $param['audit_status'] = 0;
  60. }
  61. $arr = array_column($param['goods_ids'],'limit_stock','goods_id');
  62. $goods_id = helper::getArrayColumn($param['goods_ids'],'goods_id');
  63. $goods = \app\store\model\Goods::whereIn('goods_id',$goods_id)->select();
  64. foreach ($goods as $good){
  65. if(isset($arr[$good['goods_id']]) && $arr[$good['goods_id']]<=0){
  66. return $this->renderError('商品 '.$good['goods_name'].' 库存不能设置为0');
  67. }
  68. if(isset($arr[$good['goods_id']]) && $good['stock_total']<$arr[$good['goods_id']]){
  69. return $this->renderError('商品 '.$good['goods_name'].' 库存不足');
  70. }
  71. }
  72. //Log::debug('ST::'.$param['start_time'].',ET::'.$param['end_time']);
  73. $flag = $model->addOne($param);
  74. if ($flag == 1) {
  75. return $this->renderSuccess('添加成功');
  76. }elseif ($flag == 3){
  77. return $this->renderError('活动时间内存在其他进行中的满件送活动');
  78. }
  79. return $this->renderError($model->getError() ?: '添加失败');
  80. }
  81. /**
  82. * 添加卡
  83. * @return array|string
  84. */
  85. public function update()
  86. {
  87. // 新增记录
  88. $param = $this->postForm();
  89. $model = MjSendActivityModel::detail($param['id']);
  90. $param['audit_user'] = $this->store['user']['real_name']?:'';
  91. $param['audit_admin_id'] = $this->store['user']['store_user_id']?:'';
  92. $activity_time = between_time_format($param['between_time']);
  93. $param['start_time'] = date("Y-m-d H:i:s",$activity_time['start_time']);
  94. $param['end_time'] = date("Y-m-d H:i:s",$activity_time['end_time']);
  95. if (isset($param['role']) && $param['role'] == 1){
  96. $param['status'] = 1;
  97. $param['audit_time'] = Date("Y-m-d H:i:s",time());
  98. $param['audit_status'] = 1;
  99. }else{
  100. $param['audit_status'] = 0;
  101. }
  102. $arr = array_column($param['goods_ids'],'limit_stock','goods_id');
  103. $goods_id = helper::getArrayColumn($param['goods_ids'],'goods_id');
  104. $goods = \app\store\model\Goods::whereIn('goods_id',$goods_id)->select();
  105. foreach ($goods as $good){
  106. if(isset($arr[$good['goods_id']]) && $arr[$good['goods_id']]<=0){
  107. return $this->renderError('商品 '.$good['goods_name'].' 库存不能设置为0');
  108. }
  109. $fullSendGoods = MjSendGoodsModel::where(['mj_send_activity_id'=>$param['id'],'goods_id'=>$good['goods_id']])->find();
  110. if(isset($arr[$good['goods_id']]) && $good['stock_total']<($arr[$good['goods_id']]-$fullSendGoods['purchase_stock'])){
  111. return $this->renderError('商品 '.$good['goods_name'].' 库存不足');
  112. }
  113. }
  114. $flag = $model->updOne($param);
  115. if ($flag == 1) {
  116. return $this->renderSuccess('修改成功');
  117. }elseif ($flag == 3){
  118. return $this->renderError('活动时间内存在其他进行中的满件送活动');
  119. }
  120. return $this->renderError($model->getError() ?: '修改失败');
  121. }
  122. //满赠活动详情
  123. public function detail(int $act_id){
  124. $detail = MjSendActivityModel::detail($act_id,['goodsExcept','giftGoods']);
  125. $detail = $detail->toArray();
  126. $detail['goodsExcept'] = [0=>$detail['goodsExcept']];
  127. $goods_ids = helper::getArrayColumn($detail['goodsExcept'],'goods_id');
  128. $arr = \app\store\model\Goods::whereIn('goods_id',$goods_ids)->column('stock_total','goods_id');
  129. foreach ($detail['goodsExcept'] as &$item){
  130. if(isset($arr[$item['goods_id']])){
  131. $item['stock_total'] = $arr[$item['goods_id']];
  132. }
  133. $item['goods_info']['goods_image'] = env('chef.sso_domain_text').$item['goods_info']['goods_image'];
  134. }
  135. return $this->renderSuccess(compact('detail'));
  136. }
  137. /**
  138. * 满赠活动详情启用/禁用
  139. * @param int $act_id
  140. * @return array|bool
  141. */
  142. public function status(){
  143. $postData = $this->postForm();
  144. $model = MjSendActivityModel::detail($postData['activity_id']);
  145. $res ='操作成功';
  146. $status =$postData['status'];
  147. if($status==1){
  148. $res = '已作废';
  149. }
  150. if($status==0){
  151. $res = '已禁用';
  152. }
  153. $flag = $model->status($postData);
  154. if ($flag) {
  155. return $this->renderSuccess($postData,$res);
  156. }
  157. if ($status==1){
  158. return $this->renderError( '与其他活动时间范围重叠,请检查活动时间');
  159. }
  160. return $this->renderError($model->getError() ?: '操作失败');
  161. }
  162. /**
  163. * 审核
  164. * @param
  165. * @return array|bool
  166. */
  167. public function audit()
  168. {
  169. // 确认审核
  170. $postData = $this->postForm();
  171. $model = MjSendActivityModel::detail($postData['activity_id']);
  172. if(empty($model)){
  173. return $this->renderError('找不到满件送活动');
  174. }
  175. $res ='操作成功';
  176. $audit_status =$postData['audit_status'];
  177. if($audit_status == 1){
  178. $res = '已审核通过';
  179. $postData['status'] = 1;//启用
  180. }
  181. if($audit_status == 2){
  182. $res = '已审核不通过';
  183. $postData['status'] = 0;//禁用
  184. }
  185. $postData['audit_time'] = Date("Y-m-d H:i:s",time());
  186. $postData['audit_user'] = $this->store['user']['real_name']?:'';
  187. $postData['audit_admin_id'] = $this->store['user']['store_user_id']?:'';
  188. $flag = $model->audit($postData);
  189. if ($flag) {
  190. return $this->renderSuccess($postData,$res);
  191. }
  192. if($audit_status == 1){
  193. return $this->renderError( '已有活动处于进行中,请重新修改活动时间');
  194. }
  195. return $this->renderError($model->getError() ?: '操作失败');
  196. }
  197. /**
  198. * 行动日志
  199. * @param int $act_id
  200. * @return array
  201. */
  202. public function actionsList(int $act_id){
  203. $model = new MjSendActivityAction();
  204. $list = $model->getLists($act_id);
  205. return $this->renderSuccess(compact('list'));
  206. }
  207. }