Activity.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?php
  2. namespace app\txx\controller;
  3. use app\txx\model\ActGood;
  4. use app\txx\model\PlatformYouzan;
  5. use think\App;
  6. use think\facade\Validate;
  7. class Activity extends Base{
  8. private $platform_id=[37,79];
  9. private $model;
  10. public function __construct(App $app)
  11. {
  12. parent::__construct($app);
  13. $this->model = new ActGood();
  14. }
  15. public function goodList(){
  16. $param = $this->request->param(["good_name"=>"","skuCode"=>'',"plat_code"=>'',"exam_status"=>"","page"=>1,"size"=>15],"post","trim");
  17. $where=[["is_del","=",0],["platform_id",'in',$this->platform_id]];
  18. if($param['good_name']!=="")$where[]=["good_name","like","%".$param['good_name']."%"];
  19. if($param['skuCode']!=="")$where[]=["skuCode","like","%".$param['skuCode']."%"];
  20. if($param['plat_code']!=="")$where[]=["plat_code","like","%".$param['plat_code']."%"];
  21. if($param['exam_status']!==''){
  22. $where[]=["exam_status","=",$param['exam_status']];
  23. }
  24. $list=PlatformYouzan::with(["good"=>["unit","category","brand"],"platform","yzGood"])
  25. ->where($where)->order("id desc")
  26. ->field("plat_code,spuCode,skuCode,sale_price,final_price,exam_status,online_time,creater")
  27. ->paginate(["list_rows"=>$param['size'],"page"=>$param['page']]);
  28. $this->success("获取成功",["list"=>$list->items(),"count"=>$list->total()]);
  29. }
  30. public function create(){
  31. $param = $this->request->param(["snArr"=>"","actCode"=>""],"post","trim");
  32. $valid = Validate::rule([
  33. "snArr|选中的商品集合"=>"require|array",
  34. "actCode|活动编码"=>"require|max:20"
  35. ]);
  36. if(!$valid->check($param)){
  37. $this->error($valid->getError());
  38. }
  39. $skuCodeArr= array_column($param['snArr'],"skuCode");
  40. $goodArr= PlatformYouzan::with(["yzGood"])->where(["skuCode"=>$skuCodeArr,"is_del"=>0])->select()->toArray();
  41. if(count($goodArr)!==count($param['snArr'])){
  42. $this->error("商品信息有误");
  43. }
  44. $yzGood = array_column($goodArr,"yzGood","skuCode");
  45. $Act = \app\txx\model\Act::where(["actCode"=>$param['actCode'],"is_del"=>0])->findOrEmpty();
  46. if($Act->isEmpty()){
  47. $this->error("活动信息有误");
  48. }
  49. if($Act->status!==4){
  50. $this->error("活动状态有误");
  51. }
  52. if(strtotime($Act->end_time)<time()){
  53. $this->error("活动已结束");
  54. }
  55. if(strtotime($Act->start_time)<time()){
  56. $this->error('活动已开始');
  57. }
  58. $valids= Validate::rule([
  59. "skuCode|商品编码"=>"require|max:20",
  60. "stock_num|库存数量"=>"require|integer",
  61. "roundId|轮次"=>"integer",
  62. ]);
  63. $actArr=[];
  64. foreach ($param['snArr'] as $k=>$v){
  65. if(!$valids->check($v)){
  66. $this->error($valids->getError());
  67. }
  68. if(!isset($yzGood[$v['skuCode']])|| isset($yzGood[$v['skuCode']]['status']))throw new \Exception('商品信息有误');
  69. if($yzGood[$v['skuCode']]['status']!==6)throw new \Exception($v['skuCode'].'有赞商品未上线');
  70. $temp=[
  71. 'actCode'=>$param['actCode'],
  72. 'yz_good_code'=>$v['skuCode'],
  73. 'stock_num'=>$v['stock_num'],
  74. 'used_num'=>0,
  75. 'balance_num'=>$v['stock_num'],
  76. 'roundId'=>$v['roundId']??'',
  77. 'good_url'=>$yzGood[$v['skuCode']]['detail_url']??'',
  78. 'origin_price'=>$yzGood[$v['skuCode']]['origin']??'',
  79. 'status'=>1,
  80. ];
  81. $actArr[]=$temp;
  82. }
  83. $this->model->startTrans();
  84. try{
  85. $add= $this->model->saveAll($actArr);
  86. if($add->isEmpty()) throw new \Exception('添加失败');
  87. $Act->save(["status"=>1]);
  88. $this->model->commit();
  89. }catch (\Exception $e){
  90. $this->model->rollback();
  91. $this->error($e->getMessage());
  92. }
  93. $this->success('添加成功');
  94. }
  95. public function list(){
  96. $param=$this->request->param(["actCode"=>"","status"=>"","skuCode"=>"","roundId"=>"","page"=>1,"size"=>15],"post","trim");
  97. $where=[["is_del","=",0]];
  98. if($param['actCode']!==""){
  99. $where[]=["actCode","like","%".$param['actCode']."%"];
  100. }
  101. if($param['status']!==""){
  102. $where[]=["status","=",$param['status']];
  103. }
  104. if($param['skuCode']!==""){
  105. $where[]=["yz_good_code","like","%".$param['skuCode']."%"];
  106. }
  107. if($param['roundId']!==""){
  108. $where[]=["roundId","=",$param['roundId']];
  109. }
  110. $list= $this->model->with(["act","platformYz"=>["platform","good"=>['unit','brand','category']],"promocode"])->where($where)->order("id desc")->paginate(["list_rows"=>$param['size'],"page"=>$param['page']]);
  111. $list->each(function($item,$key){
  112. $item['status_cn']=ActGood::$statusCn[$item['status']]??"";
  113. $item['act_status_cn']=\app\txx\model\Act::$statusCn[$item['act_status']]??"";
  114. return $item;
  115. });
  116. $this->success("获取成功",["list"=>$list->items(),"count"=>$list->total()]);
  117. }
  118. public function info(){
  119. $param=$this->request->param(["id"=>""],"post","trim");
  120. $info= $this->model->with(["act","platformYz"=>["platform","good"=>['unit','brand','category']],"promocode"])->findOrEmpty($param['id']);
  121. if($info->isEmpty()){
  122. $this->error("信息有误");
  123. }
  124. $info['status_cn']=ActGood::$statusCn[$info['status']]??"";
  125. $info['act_status_cn']=\app\txx\model\Act::$statusCn[$info['act_status']];
  126. $this->success("获取成功",$info);
  127. }
  128. public function resetPromocode(){
  129. $param=$this->request->param(["id"=>""],"post","trim");
  130. $info= $this->model->findOrEmpty($param['id']);
  131. if($info->isEmpty()){
  132. $this->error("信息有误");
  133. }
  134. if(!in_array($info->status,[4,5]))throw new \Exception("状态有误");
  135. $info->status=1;
  136. try{
  137. if($info->promocode_id!==0){
  138. $promocode= \app\youzan\model\YzActivityPromoCode::findOrEmpty($info->promocode_id);
  139. if($promocode->isEmpty())throw new \Exception('优惠券信息有误');
  140. $promocode->save(['status'=>0]);
  141. }else{
  142. $info->promocode_id=0;
  143. }
  144. $save= $info->save();
  145. if(!$save)throw new \Exception('重置失败');
  146. }catch (\Exception $e){
  147. $this->error($e->getMessage());
  148. }
  149. $this->success("重置成功");
  150. }
  151. public function delete(){
  152. $param=$this->request->param(["id"=>""],"post","trim");
  153. $info= $this->model->findOrEmpty($param['id']);
  154. if($info->isEmpty()){
  155. $this->error("信息有误");
  156. }
  157. $info->is_del=1;
  158. try{
  159. $save= $info->save();
  160. if(!$save)throw new \Exception('删除失败');
  161. if($info->promocode_id!==0){
  162. $promocode= \app\youzan\model\YzActivityPromoCode::findOrEmpty($info->promocode_id);
  163. if($promocode->isEmpty())throw new \Exception('优惠券信息有误');
  164. $promocode->save(['is_del'=>1]);
  165. }
  166. }catch (\Exception $e){
  167. $this->error($e->getMessage());
  168. }
  169. $this->success("删除成功");
  170. }
  171. }